单体应用重构与微服务架构常见挑战解决
1. 单体应用重构为微服务架构
在将单体应用(如ABC - Monolith)重构为微服务架构(ABC - MSA)时,我们已经完成了一些关键步骤。首先,从ABC - Monolith的功能构建出了ABC - MSA的微服务,识别了单体应用中的数据访问,并将单体应用分解为多个独立的微服务,每个微服务都有自己的数据库。
接下来,我们关注如何确保微服务的隔离和关注点分离,这需要研究新ABC - MSA系统中服务请求的编排方式。
1.1 请求分解
ABC - Monolith的功能请求流程已经确定,现在来看它在ABC - MSA中的工作方式。在ABC - MSA中,事务(sagas)在集中式编排器中进行编程和配置。编排器会根据定义的工作流,以同步或异步的方式向事务中的每个服务发起单独的API调用,并等待每个API调用的响应,以确定下一步要发起的其他API调用及其方式。
下面是ABC - MSA工作流的示例:
graph LR
User(用户) -->|发起订单履行流程| Orchestrator(编排器)
Orchestrator -->|同时启动| PlaceOrder(place_order服务)
Orchestrator -->|同时启动| CheckInventory(check_inventory服务)
PlaceOrder -->|创建订单并标记为待处理| OrderDB(订单数据库)
CheckInventory -->|检查库存| Inv