一.微服务架构模型:几种常见模型的对比和分析
上节学习了DDD的分层架构,除了这种,还有整洁架构以及六边形架构。
首先看下整洁架构。
整洁架构
整洁架构又名“洋葱架构”或者clean架构
在整洁架构里,同心圆代表应用软件的不同部分,从里到外依次是领域模型、领域服务、应
用服务和最外围的容易变化的内容,比如用户界面和基础设施。
整洁架构最主要的原则是依赖原则,它定义了各层的依赖关系,
越往里依赖越低,代码级别
越高,越是核心能力。
外圆代码依赖只能指向内圆,内圆不需要知道外圆的任何情况。
各层的职能是这样划分的:
领域模型实现领域内核心业务逻辑,它封装了企业级的业务规则。领域模型的主体是实
体,一个实体可以是一个带方法的对象,也可以是一个数据结构和方法集合。
领域服务实现涉及多个实体的复杂业务逻辑。
应用服务实现与用户操作相关的服务组合与编排,它包含了应用特有的业务流程规则,
封装和实现了系统所有用例。
最外层主要提供适配的能力,适配能力分为主动适配和被动适配。主动适配主要实现外 部用户、网页、批处理和自动化测试等对内层业务逻辑访问适配。被动适配主要是实现 核心业务逻辑对基础资源访问的适配,比如数据库、缓存、文件系统和消息中间件等。
红圈内的领域模型、领域服务和应用服务一起组成软件核心业务能力。
六边形架构
六边形架构又名“端口适配器架构”。
六边形架构的核心理念是:应用是通过端口与外部进行交互的。
也就是说,在下图的六边形架构中,红圈内的核心业务逻辑(应用程序和领域模型)与外部
资源(包括 APP、Web 应用以及数据库资源等)完全隔离,仅通过适配器进行交互。它解
决了业务逻辑与用户界面的代码交错问题,很好地实现了前后端分离。六边形架构各层的依
赖关系与整洁架构一样,都是由外向内依赖。
六边形架构将系统分为内六边形和外六边形两层,这两层的职能划分如下:
红圈内的六边形实现应用的核心业务逻辑;
外六边形完成外部应用、驱动和基础资源等的交互和访问,对前端应用以 API 主动适配
的方式提供服务,对基础资源以依赖倒置被动适配的方式实现资源访问。
六边形架构的一个端口可能对应多个外部系统,不同的外部系统也可能会使用不同的适配
器,由适配器负责协议转换。这就使得应用程序能够以一致的方式被用户、程序、自动化测
试和批处理脚本使用。
三种微服务架构模型的对比和分析
重点关注图中的红色线框,它们是非常重要的分界线,这三种架构里面都有,它的作用
就是将核心业务逻辑与外部应用、基础资源进行隔离。所以在我看来,这三种就是一个东西,都是要进行高内聚,低耦合的设计。
也有其他的学习者,也有这么认为的。