RocketMQ是一个分布式消息和流平台,提供低延迟、高性能和可靠性。
RocketMQ的整体架构主要由NameServer、Broker、Producer和Consumer四个角色组成。
- NameServer:命名服务,管理Broker信息与路由表。Producer和Consumer通过NameServer查询Topic对应的Broker信息。
- Broker:消息中间件服务节点,接收并发送Producer的消息,并推送至Consumer。Broker节点分为Master与Slave,Master用于处理读写,Slave用于备份与负载均衡。
- Producer:消息生产者,负责生产消息发送到Broker。
- Consumer:消息消费者,从Broker订阅并消费Topic的消息。
架构中的主要流程:
- Producer发送消息到Broker之前,先从NameServer获取Topic路由信息,选择Broker地址。
- Producer建立长连接将消息发送到Broker。Broker将消息写入 commitlog 与consumequeue中。
- Consumer订阅Topic后,从NameServer获取路由信息,选择Broker地址建立长连接。
- Consumer向Broker发送拉取请求,Broker将存储的消息推送给Consumer。
- Broker Master与Slave通过同步双写的方式保证消息的高可用。
- NameServer采用多副本机制,异步复制同步路由信息到其它NameServer。
- 整个集群通过长连接与心跳检测机制实现动态路由与故障转移。
RocketMQ通过NameServer实现集群路由管理,Broker主从结构实现高可用,长连接与心跳检测实现故障转移,ProducerConsumer模式实现解耦,来实现一个distributed, high available, mautual deployed的消息中间件。