深入拆解消息队列 47 讲
许文强
前腾讯云 Kafka 技术负责人
5385 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
深入拆解消息队列 47 讲
15
15
1.0x
00:00/00:00
登录|注册

23|从集群角度拆解RabbitMQ的架构设计与实现

你好,我是文强。
到了这节课,我们就讲完了进阶篇所有的知识点了。在进阶篇,我们首先分析了消息队列集群中哪些地方可能存在性能瓶颈和可靠性风险,然后依次讲解了集群构建、数据一致性、数据安全、集群可观测性四大模块的设计和选型思路。同时也分享了一些 Java 在开发存储系统过程中的编码技巧。
接下来,我们围绕着进阶篇的内容,用四节课分别讲一下消息方向的 RabbitMQ 、RocketMQ 以及流方向的 Kafka、Pulsar 在这几个方面的实现。另外,你也可以先复习下第 10~13 讲,有助于你更好、更完整地理解内容。
那么这节课我们就先来讲一下 RabbitMQ,从集群构建的设计思路开始。

集群构建

我们前面讲过,集群构建由节点发现元数据存储两部分组成。RabbitMQ 也是一样的实现思路。
在节点发现方面,RabbitMQ 通过插件化的方式支持了多种发现方式,用来满足不同场景下的集群构建需求。如下图所示,主要分为固定配置发现类广播机制发现第三方组件发现手动管理等 4 种类型,以及固定配置、DNS、AWS(EC2)、Kubernetes、Consule、etcd、手动管理等 7 种发现方式。
固定配置发现是指通过在 RabbitMQ 的配置文件中配置集群中所有节点的信息,从而发现集群所有节点的方式。和 ZooKeeper 的节点发现机制是一个思路。
类广播机制发现是指通过 DNS 本身的机制解析出所有可用 IP 列表,从而发现集群中的所有节点。和 Elasticsearch 通过多播来动态发现集群节点是类似的思路。
第三方组件发现是指通过多种第三方组件发现集群中的所有节点信息,比如 AWS(EC2)、Kubernetes、Consul、etcd 等。和 Kafka、Pulsar 依赖 ZooKeeper,RocketMQ 依赖 NameServer 是一个思路。
手动管理是 RabbitMQ 比较特殊的实现方式,是指通过命令 rabbitmqctlctl 工具往集群中手动添加或移除节点。即依赖人工来管理集群,这种方式使用起来不太方便,其他消息队列很少采用这个方案。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

RabbitMQ是一个强大的消息队列集群系统,本文详细介绍了其架构设计与实现,包括集群构建、数据可靠性和安全控制等方面。在集群构建方面,RabbitMQ支持多种节点发现方式,并通过内置数据库Mnesia实现元数据存储。数据可靠性方面,介绍了镜像队列和仲裁队列的设计原理和实现方式。在安全控制方面,讨论了RabbitMQ内置对TLS的支持,以及资源鉴权的实现。此外,文章还介绍了RabbitMQ的可观测性,包括监控、健康检查、日志和消息轨迹等内容。总体而言,RabbitMQ通过灵活的集群构建方式、高可靠的数据存储和传输加密机制,为消息队列系统提供了强大的架构设计与实现。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部