qidao123.com技术社区-IT企服评测·应用市场

标题: 图解 RocketMQ 架构 [打印本页]

作者: 立聪堂德州十三局店    时间: 2024-8-18 16:34
标题: 图解 RocketMQ 架构
写在前面

Kafka、RocketMQ都是很出名的中间件,上次我们讲授了Kafka,这次我们来讲讲RocketMQ的原理。
根本架构图


剖析

RocketMQ 统共可以分成四个模块

大体读写步调
1. NameServer

当Broker服务启动后,会向NameServer注册信息,比如broker中的Topic、斲丧偏移量、队列、ip、端口等,由Broker的心跳发送到NameServer,BrokerCluster 中的每一个节点都会注册到NameServer上。

即使一个NameService节点挂了,剩下的一个NameService节点仍旧包含所有的broker信息。不过NameService是无状态的, NameService之间不会相互通讯,那么一个NameService挂了,不会影响别的一个NameService。
注册完Broker之后,NameServer会每隔10s发送心跳查抄Broker,如果Broker超过120s还没有相应,则这个Broker被视为宕机
2. Broker

2.1 CommitLog & Message Queue

Broker 启动,跟所有的 NameServer 保持长连接,每 30s 发送一次发送心跳包(像心跳一样持续稳定的发送哀求)。心跳包中包含当前 Broker 信息 ( IP+ 端口等)以及存储所有 Topic 信息。注册成功后,NameServer 集群中就有 Topic 跟 Broker 的映射关系。

Broker担当消息,会顺序写入消息到 CommitLog 中。Broker里面的两个存储介质:Commit log 和 Message queue的区别:
所以实在我们的消息不是存放在queue中,而是存放在commit log中,这就是为什么queue会被称为逻辑队列
2.2 Index File

2.2.1 先容

因为所有的消息都存在CommitLog中,如果要实现根据 key 查询 消息的方法,就会变得非常困难,所以为相识决这种业务需求,有了IndexFile的存在。用于为天生的索引文件提供访问服务,通过消息 Key 值查询消息真正的实体内容。
IndexFile 如何创建?以创建的时间戳命名。参数:phyOffset物理偏移量(也就是commitLogOffset)、keys。

如何查询消息呢?
2.2.2 按照MessageId查询

RocketMQ中的MessageId的长度统共有16字节,此中包含了消息存储主机地址(IP地址和端口),消息Commit Log offset。

2.2.3 按照Message Key查询

3. Producer

略。Producer似乎除了负载均衡,就没什么好讲的地方了。
4. Consumer

在RocketMQ中,Consumer端的两种斲丧模式(Push/Pull)都是基于拉模式来获取消息的,pull必要手动实现拉取消息,push只必要实现斲丧监听器。但实际底层都是pull。
在Consumer启动后,会通过定时使命不断地向所有Broker实例发送心跳包,包含:消息斲丧分组名称、订阅关系聚集、消息通讯模式和客户端id的值等信息
Broker端在收到Consumer的心跳消息后,会将它维护在 ConsumerManager 的本地缓存变量。会根据斲丧者组获取对应维护的斲丧者组信息。

如果是新加入的consumer获取订阅信息变了,会关照这个斲丧者组里面的其他斲丧者说斲丧者有变化,被关照到的斲丧者就会重新负载均衡。


参考

[1] https://www.modb.pro/db/141171
[2] https://www.cnblogs.com/duanxz/p/5020398.html
[3] https://www.cnblogs.com/dennyzhangdd/p/15035116.html
[4] https://www.alibabacloud.com/blog/rocketmq-5-0-architecture-analysis-how-to-support-diversified-scenarios-based-on-cloud-native-architecture_600564
[5] https://cloud.tencent.com/developer/article/2277381
[6] https://www.cnblogs.com/hzzjj/p/16552514.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4