中间件核心技术与实战
丁威
中通快递资深架构师,RocketMQ 社区首席布道师
19674 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 33 讲
中间件核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

15|案例:消息中间件如何实现蓝绿?

你好,我是丁威。
我们这节课结合一个真实的生产环境案例,来看看消息中间件如何实现蓝绿发布。我们会提到消息中间件的设计背景和隔离机制,在此基础上探究基于消息属性和消息主题分别如何实现蓝绿发布。

设计背景

消息中间件在分布式架构体系中的应用非常广泛,要想实现蓝绿发布,只在微服务调用层面实现还远远不够。
在进行具体的方案设计之前,我们还是先来看一下我们这个项目中消息中间件的部署情况:
这里有四个应用,简单解释一下。
应用 1 支持蓝绿发布,并且处理完业务后,需要向消息中间件中的 topic_A 主题发送消息。
应用 2 不支持蓝绿发布,但同样需要在处理完业务后,向消息中间件中的 topic_A 发送消息。
应用 3 不支持蓝绿发布,需要处理完业务逻辑后,向消息中间件中的主题 topic-B 发送消息。
应用 4 中创建了两个消费组,其中 consumer_group_a 订阅 topicA,支持接入蓝绿;而 consumer_group_b 没有接入蓝绿。
这就是在设计蓝绿发布方案之前,我们这个项目的现状。

消息中间件隔离机制

那么怎么基于这一条件来设计和实施蓝绿方案呢?这又涉及到一个隔离机制的问题。因为无论是蓝绿发布还是全链路压测,需要着重解决的一个问题就是消息的隔离性。蓝绿发布的本质就是对消息进行分类,蓝颜色的消息只能被蓝颜色的消费者消费,绿颜色的消息只能被绿颜色的消费者消费。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过一个真实案例探讨了消息中间件在分布式架构中的蓝绿发布实现方法。首先介绍了消息中间件的部署情况和四个应用的功能和需求,随后讨论了消息中间件的隔离机制,包括基于消息主题和基于消息属性的隔离机制。文章给出了基于这两种隔离机制的蓝绿发布设计方案,包括示例代码。通过本文,读者可以了解消息中间件蓝绿发布的设计原理和实现方法,对于在实际项目中应用消息中间件进行蓝绿发布具有一定的指导意义。强调了基于主题的隔离机制在消息发送时就将消息分别发送到不同的主题中,实现了有针对性的消费,效率更高。文章内容丰富,对于需要了解消息中间件蓝绿发布的读者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《中间件核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • 好运来
    我在公司实践时,消费者的蓝绿发布状态有下面三个值。所有: 表示该消费组未接入蓝绿。蓝:表示该消费组接入蓝绿,并且消息属性中未带颜色的消息由蓝环境的消费者进行消费。绿:表示该消费组接入蓝绿,并且消息属性中未带颜色的消息由绿环境的消费者进行消费。 这段话是不是有误,读起来逻辑不通。

    作者回复: 没有,你再结合这部分的图解,思考一个问题,没有颜色的消息,该由谁来消费呢?

    2022-08-27归属地:上海
  • a、
    1.可以,但是这么做会导致如果broker里有蓝绿消息的话,就会出现消息丢失, 2.基于主题的过滤机制,会导致broker里的主题数3倍增长,特别是如果用kafka的话,topic太多,会导致kafka性能下降
    2022-10-19归属地:广东
    1
    2
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部