RocketMQ 的架构是怎样的?有哪些角色组成?

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的消息。

架构中的主要流程:

  1. Producer发送消息到Broker之前,先从NameServer获取Topic路由信息,选择Broker地址。
  2. Producer建立长连接将消息发送到Broker。Broker将消息写入 commitlog 与consumequeue中。
  3. Consumer订阅Topic后,从NameServer获取路由信息,选择Broker地址建立长连接。
  4. Consumer向Broker发送拉取请求,Broker将存储的消息推送给Consumer。
  5. Broker Master与Slave通过同步双写的方式保证消息的高可用。
  6. NameServer采用多副本机制,异步复制同步路由信息到其它NameServer。
  7. 整个集群通过长连接与心跳检测机制实现动态路由与故障转移。

RocketMQ通过NameServer实现集群路由管理,Broker主从结构实现高可用,长连接与心跳检测实现故障转移,ProducerConsumer模式实现解耦,来实现一个distributed, high available, mautual deployed的消息中间件。