RocketMQ架构08:消息路由与负载均衡 - 智能路由的奥秘
引言:智能路由的艺术 RocketMQ 的路由系统就像交通指挥系统,负责: Producer 找 Broker:发送消息到哪个 Broker? Consumer 找 Broker:从哪个 Broker 拉取消息? 故障转移:Broker 宕机后如何自动切换? 负载均衡:如何均匀分配请求? 今天我们深入剖析这套智能路由系统的设计。 一、路由信息管理 1.1 路由表结构 public class TopicRouteData { // Queue 数据列表 private List<QueueData> queueDatas; // Broker 数据列表 private List<BrokerData> brokerDatas; // 过滤服务器表 private HashMap<String, List<String>> filterServerTable; } // Queue 数据 public class QueueData { private String brokerName; // Broker 名称 private int readQueueNums; // 读队列数 private int writeQueueNums; // 写队列数 private int perm; // 权限 private int topicSynFlag; // 同步标志 } // Broker 数据 public class BrokerData { private String cluster; // 集群名 private String brokerName; // Broker 名称 private HashMap<Long, String> brokerAddrs; // Broker 地址表 // Key: brokerId (0=Master, >0=Slave) // Value: broker 地址 } 路由表示例: ...