背景:原始系统概述
在我的一份工作中,我开发了一个强大的管理系统,该系统用 Java 开发,与 RabbitMQ 和 PostgreSQL 集成,其任务是控制大型电子商务平台的支付、运输和库存。原来的系统在本地数据中心本地运行,不再满足对可扩展性和可靠性不断增长的需求。该系统面临着关键事务的高延迟、维护困难以及随着工作负载的增长而增加的运营成本等挑战。
此次迁移的目的不仅是将系统迁移到云端,也是为了改进架构,使其更具可扩展性、弹性和效率。选择 Azure 作为云平台是因为它能够满足现代、稳健的架构的特定需求,同时支持安全、治理和成本优化方面的最佳实践,如 Azure 架构完善的框架中所述。
系统上下文:Azure 中的新模型
概述
新系统采用 Azure 架构完善框架的原则,设计具有高度可扩展性、弹性和易于管理性。该架构旨在处理增加的流量、确保高可用性并降低运营成本。迁移到 Azure 不仅仅意味着移动现有组件,还意味着对架构进行审查和现代化,以确保系统敏捷、安全和高效。
该架构规划为 C4 模型的四个级别,重点是对上下文、容器、组件和代码的清晰了解。这将确保所有利益相关者(从工程师到经理)在新系统的可扩展性和可靠性目标方面保持一致。
上下文(上下文图)
上下文图说明了整个支付、货运和库存管理系统。该系统与各种外部组件交互,例如客户、支付系统和运输平台。该图重点关注用户和外部系统如何与系统交互。
新系统分为三个主要业务领域:
- 支付管理:使用与支付网关和其他外部金融服务的集成来处理金融交易。
- 货运管理:与物流提供商交互以计算和监控订单交付状态。
- 库存管理:监控库存水平并在物品接近短缺时生成自动警报。
每个区域都被视为单独的微服务,促进独立的可扩展性和简化的管理。上下文图重点关注这些服务与外部平台之间的交互,例如支付系统、运输系统和用户服务。
容器(容器图)
容器图重点关注架构中的主要软件容器。每个服务都被转换为一个单独的应用程序容器,利用 Azure 上 Kubernetes 的容器化功能。 RabbitMQ 已被 Azure 服务总线取代,以改进异步通信,而 PostgreSQL 已迁移到 Azure Database for PostgreSQL,并进行了优化以确保更高的可用性和可扩展性。
主要容器包括:
- 前端 Web(应用程序):与用户交互以管理订单、付款、运输和库存的 Web 应用程序。此应用程序已移至 Azure 应用服务。
- API 网关:管理将请求路由到特定支付、运输和库存微服务的服务。使用 Azure API 管理来管理安全性、身份验证和流量控制。
- 支付微服务:负责处理和验证金融交易。它已经过重组,可以与支付网关通信并安全地进行交易。它托管在 Azure Kubernetes 服务 (AKS) 上。
- 运输微服务:负责计算运输成本并监控交货状态。该服务通过 RESTful API 与外部物流提供商进行通信,并托管在 AKS 上的容器中。
- 库存微服务:负责控制库存、发出低库存警报并与销售系统通信,以确保客户可以获得产品。此服务也已移至 AKS。
- PostgreSQL 数据库:数据库已迁移到 Azure Database for PostgreSQL,提供高可用性和自动备份。迁移是在Azure数据库迁移服务工具的帮助下进行的。
- 服务总线(RabbitMQ 被 Azure 服务总线取代):管理微服务之间的异步消息队列,确保事务和业务流程以高效且有弹性的方式发生。
组件(组件图)
组件图重点关注每个微服务的内部架构。每个组件都表示为一个自主且易于扩展的软件单元。
支付微服务
关键组件包括:
- 支付处理组件:负责与支付网关通信,验证和处理支付。使用 Azure Key Vault 安全地存储凭据和敏感信息。
- 通知组件:向客户和管理员发送有关付款状态的通知。
运输微服务
关键组件包括:
- 运费计算组件:与外部 API 交互,根据重量、目的地和其他变量计算运费。它已被改编为使用Azure Logic Apps与第三方服务集成。
- 跟踪组件:监控订单交付状态并通过 Azure Functions 自动更新客户。
库存微服务
关键组件包括:
库存控制组件:负责监控和调整库存水平。与销售系统集成,确保产品不会在没有计划补货的情况下耗尽。
警报组件:当库存水平达到最低水平时,向负责库存补货的人员生成警报。
代码(代码图)
支付微服务:
运输微服务:
库存微服务:
结论:迁移改进和结果
系统迁移到 Azure 带来了几项重大改进:
- 可扩展性:Azure Kubernetes Service (AKS) 和 Azure App Service 的使用允许每个微服务根据工作负载独立扩展,确保系统能够毫无问题地处理流量高峰。
- 弹性:使用 Azure 服务总线进行异步消息传递和具有高可用性的 Azure Database for PostgreSQL 确保系统对故障和中断具有更强的弹性。
- 优化成本:迁移到云不仅可以降低物理服务器的基础设施和维护成本,还可以通过即用即付模式实现成本优化。
- 安全性:使用 Azure Key Vault 安全存储凭据并实施多重身份验证 (MFA) 和严格访问控制等安全实践,提高了系统的整体安全性。
使用 Azure 架构完善的框架中的最佳实践并实施 C4 模型,迁移不仅实现了架构现代化,还确保了系统更加可靠、可扩展和安全。
以上是从本地到全球:Azure 迁移提高了我们的效率和安全性的详细内容。更多信息请关注PHP中文网其他相关文章!