Go

六边形架构

shilinkun
2022-07-16 / 0 评论 / 356 阅读 / 正在检测是否收录...
博客网址:www.shicoder.top
微信:kj11011029
欢迎加群聊天 :452380935

概述

六边形架构又叫端口适配器模式,在这种架构中,系统通过适配器的方式与外部交互,将应用服务于领域服务封装在系统内部

六边形架构概述

六边形架构还是一种分层架构,如上图所示,它被分为了三层:端口适配器、应用层与领域层。而端口又可以分为输入端口和输出端口。

  • 输入端口 用于系统提供服务时暴露API接口,接受外部客户系统的输入,并客户系统的输入转化为程序内部所能理解的输入。系统作为服务提供者是对外的接入层可以看成是输入端口。
  • 输出端口 为系统获取外部服务提供支持,如获取持久化状态、对结果进行持久化,或者发布领域状态的变更通知(如领域事件)。系统作为服务的消费者获取服务是对外的接口(数据库、缓存、消息队列、RPC调用)等都可以看成是输入端口。
  • 应用层 定义系统可以完成的工作,很薄的一层。它并不处理业务逻辑通过协调领域对象或领域服务完成业务逻辑,并通过输入端口输出结果。也可以在这一层进行事物管理。
  • 领域层 负责表示业务概念、规则与状态,属于业务的核心。

实例

在微服务架构中,常常是一个RPC服务调用另一个RPC服务,那么这种情况就常常会用到六边形架构,比如现在有一个消费者,从MQ中不断取出msg消费,然后Send到另一个RPC服务中,这种情况,六边形架构的消费者代码结构基本就是下面这种

screenshot-20220716-101024

最终在infrastructure层中去将msg发送给下游的RPC服务

彩蛋

当然,在六边形架构中,甚至很多中代码结构中,由于这种相互关系较为复杂,很多时候都会使用wire_gen的方式生成实体模型,下一次我们就来一起探讨下这个的具体理论和实现过程吧

0

评论 (0)

取消