接下来需要从整体上对RocketMQ的架构和角色进行简单的认识。
架构
直接看图就好,一图胜千言
- Producer发送消息前,会去NameServer中拉取路由信息
- Producer获取路由信息后,发送给Broker
- Consumer消费信息前,会去NameServer中拉取路由信息
- Consumer消息信息
但是生产者和消费者是根据什么去NameServer拉取路由信息的。
我们先看放大一下Broker,研究一下内部的细节
简单总结一下:
- Borker中有一个或多个Topic
- Topic中有一个或多个MessageQueue
其实,生产者和消费者是根据Topic在NameServer中找到持有该Topic的Broker。然后发送消息时,轮询Topic下的MessageQueue,比如第一次发送消息,发送到MessageQueue1中,第二次发送消息,发送到MessageQueue2中。
如果你想研究得深一点,你可以看一下下面这段代码:轮询选MessageQueue
角色
- Producer:消息的发送者。可以类比为:寄信人
- Consumer:消息的接受者。可以类比为:收信人
- NameServer:管理broker、topic的路由信息。可以类比为:路由器
- Broker:存储和传输消息。可以类比为:邮局
- Topic:区分消息的种类
- MessageQueue:用于发送和接受消息的通道。
Topic和Producer的关系?
- 多对多:一个producer可以发送消息给一个或多个Topic;一个Topic也可以被多个不同的producer发送。
Topic和Consumer的关系?
- 多对多:一个consuemr可以订阅一个或多个Topic消息;一个Topic消息可以被不同的Consumer订阅。
Broker和Topic的关系?
- 多对多:一个Broker可以存多个不同的Topic;一个Topic也可以放在多个不同的Broker上。
Topic和MessageQueue的关系?
- 一对多:一个Topic可以有多个MessageQueue。但一个MessageQueue只能属于一个Topic。
Broker和NameServer的关系?
- 一个Broker需要在所有NameServer中注册。
总结
这一节就简单分享了一下RocketMQ的架构图和角色之间的关系,对RocketMQ有整体了解。
后续文章
- RocketMQ-入门(已更新)
- RocketMQ-架构和角色(已更新)
- RocketMQ-消息发送(已更新)
- RocketMQ-消费信息
- RocketMQ-消费者的广播模式和集群模式(已更新)
- RocketMQ-顺序消息
- RocketMQ-延迟消息
- RocketMQ-批量消息
- RocketMQ-过滤消息
- RocketMQ-事务消息
- RocketMQ-消息存储
- RocketMQ-高可用
- RocketMQ-高性能
- RocketMQ-主从复制
- RocketMQ-刷盘机制
- RocketMQ-幂等性
- RocketMQ-消息重试
- RocketMQ-死信队列 ...
欢迎各位入(guan)股(zhu),后续文章干货多多。