六边形架构通过端口与适配器实现内外分离,核心业务逻辑位于内部,外部依赖如数据库、API等通过定义端口(接口)和适配器(实现)进行交互。入站适配器处理外部请求,出站适配器对接外部系统,使业务逻辑与技术细节解耦。在微服务中,该架构支持多协议、多数据源灵活切换,提升测试性与可维护性,例如更换数据库或增加http/gRPC接口只需替换或新增适配器,核心代码不变,显著增强系统可演进性。

六边形架构,也叫端口与适配器架构,是一种设计模式,用来让系统核心业务逻辑和外部依赖解耦。在微服务架构中,它帮助服务更灵活地应对不同接口、数据源或框架的变化。
核心思想:内外分离
六边形架构把应用分成内部和外部两部分。内部是领域模型和业务规则,外部是数据库、前端、消息队列、HTTP API等。所有外部交互都通过“端口”进入,再由“适配器”转换成内部能理解的格式。
这样做的好处是,替换数据库或从 REST 改成 gRPC 接口时,业务逻辑几乎不用动。
端口与适配器的作用
端口定义了交互契约,通常是接口。比如“订单查询服务”是一个端口,具体实现可以是数据库查询,也可以是远程调用。
适配器负责实现这些端口,对接真实外部系统。常见的有:
- 入站适配器:如 Web 控制器、消息监听器,接收请求并转给内部逻辑
- 出站适配器:如数据库访问类、外部 API 客户端,把内部指令发出去
在微服务中的实际价值
微服务常面临多协议、多数据源的情况。使用六边形架构后,每个服务更容易测试和维护。
例如,一个订单服务可以用内存数据库做单元测试,生产环境换成 mysql,只需换掉出站适配器,业务代码不变。
又比如同时支持 HTTP 和消息驱动调用,只要加两个入站适配器即可,核心逻辑不重复。
基本上就这些。它不复杂,但能显著提升系统的可演进性。尤其适合需要长期迭代的微服务。


