重构到微服务
策略1 –停止挖掘
该洞的法说,每当你在一个洞,你应该停止挖掘。当您的整体应用程序变得难以管理时,这是遵循的好建议。换句话说,您应该停止将整体增大。这意味着在实现新功能时,不应将更多代码添加到整体中。相反,此策略的主要思想是将新代码放入独立的微服务中。

服务可以使用三种策略来访问整体数据:
- 调用整体提供的远程API
- 直接访问整体数据库
- 维护自己的数据副本,该副本与整体数据库同步
策略2 –分割前端和后端
缩小整体应用程序的一种策略是将表示层与业务逻辑和数据访问层分开。典型的企业应用程序至少包含三种不同类型的组件:
表示层–处理HTTP请求并实现(REST)API或基于HTML的Web UI的组件。在具有复杂用户界面的应用程序中,表示层通常是大量的代码。
业务逻辑层–作为应用程序核心并实现业务规则的组件。
数据访问层–访问基础结构组件的组件,例如数据库和消息代理。

策略3 –提取服务
如何提取模块
提取模块的第一步是定义模块和整体之间的粗粒度界面。它最有可能是双向API,因为整体将需要服务拥有的数据,反之亦然。由于模块和应用程序其余部分之间存在复杂的依赖关系和细粒度的交互模式,因此实现这样的API通常具有挑战性。由于域模型类之间存在大量关联,因此使用域模型模式实现的业务逻辑尤其难以重构。您通常需要进行重大的代码更改才能打破这些依赖性。下图显示了重构。
一旦实现了粗粒度接口,就可以将模块变成独立的服务。为此,您必须编写代码以使整体组件和服务能够通过使用进程间通信(IPC)机制的API进行通信。

网友评论