你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
微服务体系结构通常打包每个微服务实例并将其部署到单个容器中。 微服务的许多实例可能正在运行,每个实例都在单独的容器中运行。 容器是轻量级且生存期较短的容器,使它们易于创建和销毁,但难以协调和通信。
本文讨论在生产规模上运行容器化微服务体系结构的挑战,以及容器业务流程如何提供帮助。 本文介绍了多个 Azure 容器业务流程选项。
容器化微服务体系结构
在此简单的容器化 Azure Kubernetes 服务 (AKS) 群集中:
- 一个微服务 A 实例在节点 1 中运行,另一个实例在节点 2 中运行,另一个实例在 Node 3 中运行。
- 微服务 B 的一个实例在节点 1 中运行,另一个实例在 Node 3 中运行。
- 容器化 反向代理服务器 在节点 1 和 2 中运行,以分发流量。
若要管理群集,DevOps 团队必须:
- 在每个节点中运行多个容器实例。
- 对实例之间的流量进行负载均衡。
- 管理独立节点中依赖实例之间的通信。
- 维护所需的 AKS 群集状态。
使用容器业务流程,DevOps 团队可以将群集的所需状态表示为配置。 容器业务流程引擎强制实施所需的配置并自动执行所有管理任务。
请考虑容器化简单的三层 Web 应用程序:
- 容器托管前端组件。
- 另一个容器托管中间层或 REST API 层。
- 中间层层与全局分布式数据库通信。
在单个开发计算机上运行这些容器可能不太困难。 但是,在生产群集中大规模以高可用性模式运行应用程序会很快变得具有挑战性。 容器业务流程对于大型和动态生产环境至关重要。
容器业务流程的优点
以下示例演示容器业务流程如何帮助管理群集部署、网络和缩放。
容器业务流程协调程序:
根据流量或资源利用率自动缩放微服务实例数。 在此示例中,业务流程协调程序会自动添加另一个微服务 A 实例,以响应流量增加。
管理容器以反映配置的所需状态。 在此示例中,微服务 B 配置为有两个实例。 一个实例变得不正常,因此业务流程协调程序通过创建另一个实例来维护所需的状态。
将每个微服务的容器包装在简单的服务层中。 服务层:
- 抽象出 IP 地址、端口和实例数等复杂性。
- 对微服务实例之间的流量进行负载均衡。
- 支持依赖微服务实例之间的轻松通信。
容器业务流程协调程序还提供灵活性和流量控制,以便:
- 发布新版本或回滚到旧版本的微服务或微服务集,无需停机。
- 并行测试不同的微服务版本。
选择 Azure 容器业务流程协调程序
下面是在 Azure 中实现微服务容器业务流程的一些选项:
Azure Kubernetes 服务(AKS) 是 Azure 中完全托管的 Kubernetes 容器业务流程服务,简化了容器化应用程序的部署和管理。 AKS 提供弹性预配、快速端到端部署以及高级标识和访问管理。
Azure Service Fabric 是跨计算机群集部署和管理微服务的容器业务流程协调程序。 轻型 Service Fabric 运行时支持生成无状态和有状态微服务。
一个关键的 Service Fabric 区分器是它对生成有状态服务的可靠支持。 可以使用内置的有状态服务编程模型,或者运行以任何语言或代码编写的容器化有状态服务。
Azure 容器实例(ACI) 是在 Azure 中运行容器的最快速、最简单的方法。 使用 ACI 时,无需管理虚拟机或调整更高级别的服务。
对于简单的业务流程方案,可以使用 Docker Compose 在本地定义和运行多容器应用程序。 然后,将 Docker 容器部署为托管的无服务器 Azure 环境中的 ACI 容器组。 对于完整的容器业务流程方案,ACI 可以与 AKS 集成,为 AKS 业务流程创建虚拟节点。
Azure Spring Apps 是适用于 Spring Boot 应用的企业级完全托管服务。 借助 Spring Apps,你可以专注于生成和运行应用,而无需管理基础结构。 Spring Apps 附带内置生命周期和业务流程管理、易于监视和与 Azure 的完全集成。
Azure Red Hat OpenShift (ARO) 支持在 Azure 上部署完全托管的 OpenShift 群集。 运行 Kubernetes 生产容器需要与映像注册表、存储管理、监视和 DevOps 等框架和工具集成。 ARO 通过将这些组件组合到单个容器平台即服务(PaaS)来扩展 Kubernetes。
贡献
本文由Microsoft维护。 它最初由以下参与者编写。
主体作者:
- Veerash Ayyagari |首席软件工程师
若要查看非公共LinkedIn配置文件,请登录到LinkedIn。
后续步骤
- Azure Kubernetes 服务(AKS) 上的
微服务体系结构 - 高级 Azure Kubernetes 服务(AKS)微服务体系结构
- 使用 Azure Pipelines 为 AKS 应用
CI/CD - 在微服务中使用 API 网关
- Azure Spring Apps 参考体系结构
相关资源
- 在 Azure 上生成微服务
- 设计微服务体系结构
- 微服务
设计模式 - Azure Kubernetes 服务解决方案旅程