RocketMQ 是阿里开源的消息中间件,基于发布和订阅模型, 它是一个开源的分布式消息传递和流式数据平台.
一、RocketMQ架构
NameService
- NameServer是一个几乎无状态节点, 可集群部署, 节点之间无任何信息同步。
- 管理broker: broker服务器启动时会注册到NameServer上,并且两者之间保持心跳监测机制, 从而保证NameServer知道broker的存活状态;
- 路由信息管理: 每一台NameServer都存有全部的broker集群信息和生产者/消费者客户端的请求信息, 包括存储Topic、Broker关系等;
Broker
- Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Slave只能对应一个Master,Master与Slave的对应关系通过指定相同的BrokerName和不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave。Master也可以部署多个。每个Broker与NameServer集群中的所有节点建立长连接,定时注册Topic信息到所有NameServer。
Producer
- 生产者也称为消息发布者, 负责生产并发送消息至Topic;
- Producer与NameServer集群中的其中一个节点(随机选择)建立长连接,