当我们讨论应用的现代化时,首先跃入脑海的可能会是 Kubernetes。在讨论现代应用的交付时,您可能会考虑部署 Ingress Controller 或 ServiceMesh。通过对企业的调查和客户的走访,我们了解到大多数企业的情况要复杂得多。
他们通常需要同时运营各种应用架构。即使同样使用微服务架构,也有不同的实现和部署模式;即便采用 Kubernetes,也可能运用不同的应用交付方法。对于企业来说,如何成功交付这些应用是一个巨大的挑战。
如何动态交付微服务架构应用?
如果微服务网关扩展了服务节点,外部该如何协同?微服务架构应用是否可以在不重新架构的情况下利用 Kubernetes 的高灵活性和高可用性?微服务应用如何像访问内部服务一样调用外部传统应用?基于上述的思考,我们在 F5 的 InnovateF5 创新孵化平台的支持下,开发了一组BIG-IP 的插件,帮助企业应对上述挑战,将现代应用与传统应用连接起来。
InnovateF5 是 F5 CTO 办公室赞助的员工创新平台,为员工提供各种资源,将想法转化为现实。业内许多知名产品都是以类似的方式生产的,例如 Java。
企业的应用资产
回归本源,让我们仔细看看企业的应用资产。
企业数字化转型需要现代应用。随着企业数字化转型的不断深入,特别是 2019 年新冠疫情的影响,进一步推动了企业数字化转型从客户体验相关系统扩展到内部业务系统。应用系统的现代化已成为实现这一目标的重要技术手段。
应用现代化是一个长期的过程,多个应用架构共存是正常的。应用的现代化并不意味着需要拆除或重写所有应用系统来实现现有业务系统的现代化。事实上,多个应用架构的共存将成为常态。
从上图可以看出,近 90% 的用户同时使用两种以上的应用架构,近 50% 的用户使用五种应用架构。
重写代码是实现应用现代化的一种方式,但不是最重要的形式。相反,它被广泛用于在现有应用中添加一层 API 或添加一些现代应用的组件,例如引入 Kubernetes。因此,在大多数企业的数字化转型过程中,我们看到的应用部署形式可能是以下多架构共存的混合形式。
Modern Application
微服务架构
微服务架构是现代应用的主要特征之一。这并不是一个新的话题。业内有许多书籍、文章和博客对此进行了详细描述。如有必要,您也可以访问该网站 https://microservices.io 以获得更全面的理解。本文只是简单回顾了服务发现和服务注册的一些要点。
图4 客户端与服务器端发现 https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/
1服务发现:客户端与服务器端发现
服务发现有两种主要形式。一种是客户端服务发现。客户端直接与服务注册表通信,以获取有关其他服务的信息。另一种是服务器端服务发现。客户端不是直接发现每个服务端点,而是通过负载平衡器或网关访问服务,这隔离了服务端的复杂性。
这两种模型都被广泛使用。例如,在公有云中,大量使用服务器端发现机制。
图5 自主注册与第三方注册 https://www.nginx.com/blog/service-discovery-in-a-microservices-architecture/
2服务注册:自主注册与第三方注册
服务注册还有两种主要形式。第一种是自注册,即在服务启动后,在服务注册表中主动注册自己。另一种是通过第三方注册,通常对服务进行健康监测。
3服务注册中心 Service registry
服务注册中心是微服务架构中另一个非常重要的角色。它用于存储应用系统中服务的相关信息和状态。它通常部署在分布式架构中以实现高可用性,并通过一致性算法确保数据的一致性,通常会提供 API 或客户端访问。
ZooKeeper Eureka Consul etcdNacos集群 模式Leader/FollowerNon leader /FollowerLeader/FollowerLeader/FollowerNon leader /Follower一致性算法ZAB~RaftRaftDistro + RaftCAP 模型CPAPCPCPAP + CP接口TCPHTTPHTTP /DNSHTTPHTTP /DNS典型 应用KafkaSpringCloud很多KubernetesSOFAStack
表1 服务注册中心 Service Registry 4F5 BIG-IP 支持服务发现和服务注册基于我们对上述信息的理解,我们认为,赋予 BIG-IP 发现和注册服务的能力可以为企业的数字化转型带来价值,支持应用的现代化,提高企业应用系统的适应性和自动化,减少摩擦,提高生产力。
MSDA和MSRA我们的 InnovateF5 项目,现代应用网关,旨在赋予 BIG-IP 服务发现和服务注册的能力,并连接企业的传统和现代应用。
使用场景MSDA 和 MSRA 有三个主要用例:
1.向外部用户或传统应用暴露微服务应用。微服务应用可能是:
分布式应用,未使用开发框架。它只是利用分布式体系结构和服务注册中心来构建自己的应用。基于开发框架的微服务应用,如Dubbo、SpringCloud、SOFAStack。部署在K8S中的微服务应用,只是将K8S用作弹性平台,并将pod用作VM。Kubernetes原生应用,利用k8s入口或服务来发布服务。2.微服务应用之间的服务代理。不同的应用可以使用自己的独立服务注册表。MSRA 可以用于相互注册,而 BIG-IP 可以用作相互访问的桥梁。
3.通过将传统应用注册到服务注册中心,暴露给微服务应用。微服务应用不需要关心传统应用的部署位置和服务发布信息,而是像内部服务一样访问外部服务。
用户界面用户界面对于用户体验非常重要。MSDA和MSRA是基于数据合规官IAPPS LX开发的,因此我们可以利用BIG-IP的原生的用户界面。包括WebUI和restful API。 WebUI 获取模板的 rpm 安装包 将 rpm 包导入 BIG-IP。iApps>>包管理LX>>导入 如果需要,可以修改模板。数据合规官IAPP>>模板>>模板LX 通过模板创建应用。iApps>>应用服务>>应用LX
Restful API
获取模板的 rpm 安装包
将 rpm 包导入 BIG-IP。iApps>>包管理 LX>>导入
复制所需的模板并将其保存为 json 文件。数据合规官IAPP>>模板>>模板LX
按照以下步骤通过 iApps LX 操作指南(Clouddocs iApps LX operation guide.)创建应用
Modern Applic
使用F5交付现代应用
通过 MSDA 和 MSRA,我们可以使用 BIG-IP 作为应用交付的核心设施,一如既往地交付传统应用,并在现代应用和传统应用之间搭建桥梁,使它们能够在没有摩擦的情况下快速自动部署,提高效率。
1免费使用
欢迎使用 F5 BIG-IP 交付现代应用,并作为现代应用和传统应用之间的桥梁。下载 MSDA 和 MSRA 的 RPM 包:
表3 Repositories微信