跳至主要內容
设计理念和设计目标

设计理念

RocketMQ设计基于主题的发布与订阅模式,其核心功能包括消息发送、消息存储和消息消费,整体设计追求简单和性能高效,主要体现在如下3个方面。

  1. 摒弃了业界常用的将ZooKeeper作为信息管理的“注册中心”,而是自研NameServer实现元数据的管理(topic路由信息等)
  2. 高效的I/O存储机制。
  3. 容忍存在的设计缺陷。

为什么不用 Zookeeper 而是自研 NameServer?

topic 路由信息无需在集群之间保持强一致,而是追求最终一致性,并且能够容忍分钟级别的不一致。真是因为这,RocketMQ的NameServer集群之间互不通信,这样极大地降低了NameServer实现的复杂度,对网络的要求也降低了不少,性能相比较ZooKeeper还有了极大的提升。


九夏...大约 6 分钟it中间件RocketMQ源码
NameServer原理

架构设计

架构设计
架构设计
  1. NameServer 启动后每隔 10s 扫描一下 brokerLiveTable,检测表中上次心跳包的时间,如果间隔超过 120s 则认为该 broker 不可用,移出路由表中与该 broker 相关的路由信息。
  2. broker 启动后每过 30s 向 NameServer 发送心跳包,并传输路由信息,NameServer 进行保存。
  3. 生产者启动后会和 NameServer、broker 进行长连接。生产者每隔 30s 向 NameServer 获取路由信息。
  4. 消费者每 30s 向 NameServer 获取路由信息

九夏...大约 4 分钟it中间件RocketMQ源码