RocketMQ 技术内幕:路由中心

Broker 消息服务器在启动时向所有 NameServer 注册,消息生成者(Producer)在发送消息之前先从 NameServer 获取 Broker 服务器地址列表,然后根据负载算法从列表中选择一台消息服务器进行消息发送。NameServer 与每台 Broker 服务器保持长连接,并间隔 30s 检测 Broker 是否存活,如果检测到 Broker 宕机,则从路由注册表中将其移除。

NameServer 本身的高可用是通过部署多台 NameServer 服务器来实现的,但彼此之间互不通信,也就是 NameServer 服务器之间在某一时刻的数据并不会完全相同,但这对消息发送不会造成任何影响。

NameServer 启动流程

NameServer 启动类:org.apache.rocketmq.namesrv.NamesrvStartup

  • Step 1:首先解析配置文件,在解析启动时把指定的配置文件或启动命令中的选项值,填充到 NameServerConfig、NettyServerConfig 对象。
  • Step 2:根据启动属性创建 NamesrvController 实例,并初始化该实例,NameServerController 实例为 NameServer 核心控制器。

This chapter requires login to view full content. You are viewing a preview.

Login to View Full Content

Course Curriculum

3

框架与 I/O:Spring、Netty 与 Web 容器

理解 Spring Boot 自动装配、AOP 与事务原理,掌握 Netty Reactor 模型及 Tomcat 连接处理机制,构建高内聚、易扩展的应用服务层。
4

高性能中间件:消息、缓存与存储

熟练运用 MySQL 索引/事务、Redis 缓存策略、Kafka/RocketMQ 消息可靠性,以及 ZooKeeper 分布式协调,搭建稳定、解耦的分布式数据底座。
6

云原生:容器化、可观测性与工程效能

通过 Docker/K8s 实现弹性部署,集成 Metrics/Logs/Traces 构建可观测体系,推动 DevOps 与自动化,让架构在云上持续交付与进化。