事件驱动架构的事件版本管理

有一种办法:发送会议邀请给所有团队,经过101次会议后,发布维护横幅,所有人同时点击发布按钮。或...

可用适配器 ,但微调。没错!就像软件开发中90%问题一样,有种模式帮助你找到聪明解决方案。

1 问题

你已经有了一个模式,消费者已知咋处理它,所以他们依赖你保持兼容性,但实际上,你要打破这种兼容性。

一个生产者和三个消费者例来探讨这问题:

2 解决方案

与其陷入协调部署的陷阱,不如利用适配器模式并加以战略性调整。五步操作:

2.1 创建新主题

当你引入一个新模式时,不要强迫所有消费者立即适应,而是创建一个新topic。这个topic将成为使用新模式生成的事件的归宿。

2.2 引入适配器

部署一个监听新topic的适配器,该适配器将事件翻译回旧模式格式,并重新发布到原始主题。这样,现有消费者可继续接收他们期望格式的事件,而无需立即进行任何更改。

2.3 更新生产者

修改生产者,使其使用新模式生成事件,并将这些事件发布到新创建的topic中。

2.4 逐步迁移消费者

现在,旧格式和新格式并存,可按自己节奏开始迁移消费者。当你更新每个消费者以处理新模式时,只需将其指向新topic。

2.5 停用适配器

一旦所有消费者成功迁移到新模式,你可以安全地退役适配器和旧topic。

3 优势:减少压力,增加灵活性

3.1 向后兼容

适配器确保现有消费者在过渡期间继续正常运行,无需立即更新,维护系统稳定性。

3.2 无需协调部署

通过解耦生产者和消费者的升级过程,消除了同步部署的需求。每个团队可以独立工作,降低出错的风险。

3.3 集中测试

随着每个消费者的迁移,测试可以更集中和可控。你可以逐一验证每个过渡,使问题更容易识别和解决。

3.4 减少会议

由于协调需求减少,你可以告别无数的会议。迁移过程变得更简单、更可预测,压力也更小。

4 总结

目标是找到一种最简单、最有效的解决方案来打破兼容性。

适配器模式为在 EDA 中处理事件版本管理提供了务实的方法。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM Agent应用开发

  • 区块链应用开发

  • 大数据开发挖掘经验

  • 推荐系统项目

    目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

相关推荐
架构文摘JGWZ2 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师3 小时前
spring获取当前request
java·后端·spring
aPurpleBerry3 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j
我是苏苏3 小时前
Web开发:ABP框架2——入门级别的增删改查Demo
java·开发语言
xujinwei_gingko3 小时前
Spring IOC容器Bean对象管理-Java Config方式
java·spring
2301_789985943 小时前
Java语言程序设计基础篇_编程练习题*18.29(某个目录下的文件数目)
java·开发语言·学习
IT学长编程3 小时前
计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·毕业设计·springboot·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·教师科研管理系统
m0_571957584 小时前
Java | Leetcode Java题解之第406题根据身高重建队列
java·leetcode·题解
程序猿小D4 小时前
第二百三十五节 JPA教程 - JPA Lob列示例
java·数据库·windows·oracle·jdk·jpa
Zd085 小时前
14.其他流(下篇)
java·前端·数据库