《RocketMq技术内幕》笔记1(NameServer)
Published on: | Views: 87整体组成
基于主题订阅模式 主要组成部分:NameServer 集群, 生产者集群, broker集群, 消费者集群, 过滤服务器
NameServer
集群中NameServer服务器互不通信,主要提供路由服务 RouteInfoManager定义了整体数据结构:
Topic信息
HashMap<String/* topic */, List<QueueData>> topicQueueTable;
private String brokerName;
private int readQueueNums;
private int writeQueueNums;
private int perm; //访问权限,一般是6
private int topicSynFlag;
可以看出来,一个topic关联多个broker,在每个broker中会有多个读/写队列
Broker信息
HashMap<String/* brokerName */, BrokerData> brokerAddrTable;
private String cluster;
private String brokerName;
private HashMap<Long/* brokerId */, String/* broker address */> brokerAddrs;
一个broker属于一个集群cluster,并且有多个broker地址, 每个地址有一个id, id为0是主服务器,其他是从服务器。 意思就是一个broker是由多台服务器组成的。
集群信息
HashMap<String/* clusterName */, Set<String/* brokerName */>> clusterAddrTable;
一个集群cluster包含多个broker
Broker心跳信息
HashMap<String/* brokerAddr */, BrokerLiveInfo> brokerLiveTable;
private long lastUpdateTimestamp; //最后更新时间
private DataVersion dataVersion;
private Channel channel;
private String haServerAddr;
过滤服务器信息
HashMap<String/* brokerAddr */, List<String>/* Filter Server */> filterServerTable;
每个broker对应多个filterServer