RocketMQ 架构
RocketMQ 分为四个角色:
它们中的每一个都可以水平扩展,而没有单个故障点
-
NameServer Cluster 注册中心:提供轻量级的服务发现和路由
每一个NameServer都会拥有全量的Broker Cluster的信息,因为NameServer是无状态的 -
Broker Cluster:消息中转角色,负责存储消息、转发消息。
Broker为定时向NameServer发送心跳,进行注册 -
Consumer Cluster 无状态的
- 拉取式消费(pull consumer)
Consumer自己从Broker拉,要程序员从broker把queue拿下来然后选择如何消费。一般不用这种方式 - 推动式消费(push consumer)。
Broker主动给Consumer推送消息。 其实是对pull的封装,Consumer对Broker有长轮询进行监听,所以Broker一有消息,Consumer就收到了
消费者组(同一类Consumer的集合,这类Consumer通常消费同一类消息且消费逻辑一致。)消费消息的方式
- 广播/全量消费:
producer发送的消息,相同Consumer Group的每个Consumer实例都接收全量的消息 - 集群模式消费:
相同Consumer Gro
- 拉取式消费(pull consumer)