专业的编程技术博客社区

网站首页 > 博客文章 正文

微服务间RPC调用和防腐层落地实践

baijin 2024-10-30 01:29:35 博客文章 8 ℃ 0 评论

本文探讨如何进行微服务之间的RPC或REST API服务交互。当微服务进行RPC调用时,就要考虑如何设计上下文映射(Context Map),典型的模式有Shared Kernel共享内核模式和Anti-corruption防腐层模式。


在DDD中有一个很棒的解耦设计思想——防腐层(Anti-Corruption Layer),简单说,就是应用不要直接依赖外域的信息,要把外域的信息转换成自己领域上下文(Context)的实体再去使用,从而实现本域和外部依赖的解耦。

在COLA中,我们把ACL这个概念进行了泛化,将数据库、搜索引擎等数据存储、以及分布式服务的RPC等都列为外部依赖的范畴。利用依赖倒置,统一使用gateway来实现业务领域和外部依赖的解耦。


其实现方式如下图所示,主要是在Domain层定义Gateway接口,然后在Infrastructure提供Gateway接口的实现。


下面,我们重点探讨一下防腐层模式。


图中的防腐层承担解耦子系统A和子系统B之间的依赖。


在具体代码落地时,一般建议将ACL放置在调用方的基础设施层中,如上图所示。

其中会涉及到子系统A和子系统B中的实体对象,通常会在子系统A中引用子系统B提供的client模块,将RPC返回的DTO对象转换为子系统A的领域对象。

下面引用的cola-cargo-routingms-client就是服务提供方的client模块JAR包。

完整项目介绍和代码,可以访问《COLA 4.x架构入门和项目实践》技术专栏

《COLA 4.x架构入门和项目实践》技术专栏首先介绍了COLA框架的使用入门,以及与IDEA开发工具的集成等等;然后基于COLA架构,创建DDD经典示例项目-货物运输系统,详细介绍了DDD领域建模、适配层、应用层、领域层和基础设施层的代码开发、防腐层(ACL)设计与实现、领域事件(Domain Event)入门实践、以及基于Kafka消息中间件的消息发布和订阅等等。内容由浅入深,从开发实战出发,逐步掌握基于COLA架构和DDD领域建模思想构建复杂业务应用系统。

(此处已添加圈子卡片,请到今日头条客户端查看)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表