
一 职业/职能
NameServer 命名服务器
Rocket MQ自带的注册中心,因此Rocket MQ可自行完成集群部署,而无需同Kafka一流借助Zookeeper来实现集群。
- 接受BrokerServer注册,通过心跳机制检测其活动状态;
- 保存BrokerServer路由/队列信息,供客户端(Producer/Consumer)查询。
BrokerServer 经纪人服务器
负责消息的传输、存储、管理,是实现Rocket MQ功能的中坚角色。
- 远程处理:处理来自客户端的请求,根据类型分发到各个模块;
- 客户管理:管理客户端,维护Consumer主题订阅;
- 存储/查询:数据(消息、队列等)基于磁盘进行持久化存储,并提供查询;
- HA(高可用):确保主从服务器间数据同步;
- 索引服务:通过指定的键为邮件建立索引,并提供高效的邮件查阅;
- … …
Producer 生产者
即消息的发布者,负责生产及发送消息。
Consumer 消费者
也称为订阅者,负责接收及消费消息。可分为两类:
- PULL:消费者主动向Rocke MQ拉取消息并消费;
- PUSH:消费者被动接收Rocke MQ推送的消息并消费。但Rocket MQ的推模式是一种伪推送,底层依然靠拉取实现,通过频繁拉取造成推送的假象。
二 工作流程
【注】下列流程并非严格按顺序执行,仅为了方便读者理解。
NameServer 命名服务器
- STEP 1 BrokerServer向NameServer注册及上传路由/队列信息,并持续发送心跳;
- STEP 2 NameServer接受BrokerServer注册及保存路由/队列信息,并持续接受心跳检以检测BrokerServer活动状态;
- STEP 3 客户端请求NameServer获取BrokerServer路由/队列信息;
- STEP 4 NameServer回应客户端以BrokerServer路由/队列信息。
BrokerServer 经纪人服务器
- STEP 1 BrokerServer向NameServer注册及上传路由/队列信息,并持续发送心跳;
- STEP 2 NameServer接受BrokerServer注册及保存路由/队列信息,并持续接受心跳检以检测BrokerServer活动状态;
- STEP 3 Producer向BrokerServer请求发送消息;
- STEP 4 BrokerServer向Producer回应发送成功/失败(单向发送没有回应);
- STEP 5 Consumer向BrokerServer请求拉取消息;
- STEP 6 BrokerServer向Consumer回应消息。
Producer 生产者
- STEP 1 Producer向NameServer请求BrokerServer路由/队列信息;
- STEP 2 NameServer向Producer回应BrokerServer路由/队列信息;
- STEP 3 Producer向BrokerServer请求发送消息;
- STEP 4 BrokerServer向Producer回应发送成功/失败(单向发送没有回应)。
Consumer 消费者
- STEP 1 Consumer向NameServer请求BrokerServer路由/队列信息;
- STEP 2 NameServer向Consumer回应BrokerServer路由/队列信息;
- STEP 3 Consumer向BrokerServer请求拉取消息;
- STEP 4 BrokerServer向Consumer回应消息;
- STEP 5 Consumer消费消息。