RocketMQ的逻辑部署图
NameServer核心架构图
NamesServer 提供的功能有:
- Topic 路由信息的管理:
- NameServer 负责存储和维护 Topic 的路由信息。
- Producer 和 Consumer 可以从 NameServer 获取到当前有效的 Broker 的地址和相应的 Topic 分布情况。
- 每个 Broker 在启动时会向所有的 NameServer 注册自己所管理的 Topic 和队列信息,NameServer 会将这些信息保存下来,并在有请求时提供给 Producer 和 Consumer。
- Broker 的管理:
- Broker 会周期性地向 NameServer 发送心跳包,报告自身的状态以及存活信息。
- NameServer 通过这些心跳包监控 Broker 的存活状态。一旦检测到某个 Broker 无法继续提供服务,NameServer 将从路由信息中删除该 Broker。
- 负载均衡支持:
- NameServer 提供的路由信息会帮助 Producer 和 Consumer 实现负载均衡。
- Producer 在发送消息时,会根据从 NameServer 获取到的路由信息选择合适的 Broker 进行消息投递,Consumer 也会根据这些信息选择从哪个 Broker 的队列中拉取消息。