5.NameServer

来源:互联网 发布:手机淘宝刷到单流程图 编辑:程序博客网 时间:2024/06/15 21:08
  1. NameServer作为rocketmq中重要的组件其主要有如下功能:
    1. 接受boker注册与解除注册
    2. 获取broker集群信息
    3. 根据topic查询其路由信息
    4. 查询所有的topic
    5. 删除topic
    6. 查询某集群下的所有topic
    7. 一些键值对设置,比如顺序消息相关设置
  2. 接受boker注册与解除注册
    1. broker注册时会携带如下信息
      1. 集群的名字
      2. 地址
      3. broker名字
      4. broker id: 0为master,非0为slave
      5. HA地址,即slave通过该地址可以从master同步数据
      例如,对于如下集群来说:

      左上角的broker注册时携带的数据为,cluster-a,10.10.10.10,broker-a,0,  HA地址(默认由当前broker地址+(当前broker监听的端口+1)组成)
    2. 对于namerserver来说会将以上信息存储为以下几种对应关系
      1. cluster name与broker name对应关系,也称集群信息

      2. broker name与broker角色和地址对应关系,也称主备信息

      3. broker地址与连接的对应关系,主要根据注册时间移除无效的连接,默认每10秒扫描一次,2分钟没有更新则任务连接无效。
        移除无效连接的同时,将以上所有对应关系全部更新一遍。
    3. 如果当前注册的broker为slave,则查询其master的HA地址并返回
    4. broker注册时同时会携带自身的topic路由信息(topic需要提前创建,创建的时候会遍历所有的master broker,在其上创建topic及queue的信息)
      1. topic 名字
      2. 可读queue数量
      3. 可写queue数量
      4. 权限,可读|可写
    5. 对于nameserver来说会将topic的路由信息存储为以下关系:

  3. 根据topic查询其路由信息
    1. 根据topic查询到broker name,再从主备信息关系查询到地址,最终返回如下对应关系

  4. 删除topic,仅仅从nameserver的存储中移除掉,不涉及broker(broker上的删除介绍broker时再说)
  5. namerserver高可用,由于各个nameserver之间并无通信,故,一个namerserver挂了并不会影响其他namerserver,至于和broker,consumer,producer之间的高可用等介绍相关模块时再介绍
0 0
原创粉丝点击