diff --git a/7-refactoring-a-monolith-into-microservices.md b/7-refactoring-a-monolith-into-microservices.md index cf25cca..8ed90fe 100644 --- a/7-refactoring-a-monolith-into-microservices.md +++ b/7-refactoring-a-monolith-into-microservices.md @@ -23,7 +23,7 @@ Martin Fowler 将这种应用现代化策略称为[杀手应用](http://www.mart 应用此方法后,系统架构如图 7-1 所示。 -![图 7-1、将新功能实现为单独的服务,而不是将模块添加到单体。](resources/7-2.png) +![图 7-1、将新功能实现为单独的服务,而不是将模块添加到单体](resources/7-2.png) 除了新服务和传统的单体,还有另外两个组件。第一个是请求路由,它处理传入的(HTTP)请求,类似于[第二章](2-using-an-api-gateway.md)中描述的 API 网关。路由向新服务发送与新功能相对应的请求。它将遗留的请求路由到单体。 @@ -73,7 +73,7 @@ Martin Fowler 将这种应用现代化策略称为[杀手应用](http://www.mart ## 7.4.2、如何提取模块 提取模块的第一步是在模块和单体之间定义一个粗粒度的接口。因为单体需要服务拥有的数据,它很可能是一个双向 API,反之亦然。由于模块和应用程序的其余之间存在着复杂的依赖关系和细粒度的交互模式,因此实现这样的 API 通常存在挑战。由于领域模型类之间的众多关联,使用[领域模型模式](http://martinfowler.com/eaaCatalog/domainModel.html)来实现的业务逻辑尤其具有挑战性。您通常需要进行重大的代码更改才能打破这些依赖。图 7-3 展示了重构。 -![图7-3、来自单体的模块可以成为微服务器。](resources/7-3.png) +![图7-3、单体模块可转换为微服务](resources/7-3.png) 一旦实现了粗粒度的接口,您就可以将模块变成独立的服务。要做到这点,您必须编写代码以使单体和服务通过使用进程间通信(IPC)机制的 API 进行通信。图 7-3 显示了重构前、重构中和重构后的架构。