← Back to list

《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

路由注册与删除

image.png