NameServer 路由元数据|学习笔记

简介: 快速学习 NameServer 路由元数据

开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段)NameServer 路由元数据】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/704/detail/12464


NameServer 路由元数据


内容介绍:

一、前言

一、路由元信息


一、前言

NameServer的主要作用是为消息的生产者和消息消费者提供关于主题Topic的路由信息,那么NameServer需要存储路由的基础信息,还要管理Broker节点,包括路由注册、路由删除等。


二、路由元信息

代码: RoutelnfoManager

private final HashMap<String/* topic */,List<QueueData>> topicQueueTable;

private fina7 HashMap<String/* brokerName */,Brokerbata> brokerAddrTable;

private fina1 HashMap<String/* clusterName*/, set<String/* brokerName */>> c1usterAddrTable;

private fina1 HashMap<String/* brokerAddr */,BrokerLiveInfo> brokerLiveTable;

private final HashMap<String/* brokerAddr*/,List<string>/* Filter server */> filterserverTable;

1、topicQueueTable: Topic消息队列路由信息,消息发送时根据路由表进行负载均衡

topicQueueTable示例数据:

topicQueueTable:{

"topic1":{

brokerName":"broker-a" ,

"readQueueNums":4,

"perm":6,//读写权限,具体含义请参考PermName

"topicsynFlag" :() //topic同步标记,具体含义请参考TopicsysFlag

},

{

"brokerName":"broker-b",

"readQueueNums":4,

"readQueueNums":4,

"perm" : 6, //读写权限,具体含义请参考PermName

"topicsynFlag" :()  //topic同步标记,具体含义请参考TopicsysFlag

}

},

"topic other" : [ ]

}

Key是“topic1”,值是集合,集合中存的是每个broker的信息,包括broker的名字、权限信息等,我们发现这个示例中仅仅只有broker的name,broker的信息配置是在brokerAddrTable。

2、brokerAddrTable: Broker基础信息,包括brokerName、所属集群名称、主备Broker地址

brokerAddrTable : {

"broker-a" : {

"cluster: "c1",

"brokerName" : "broker-a" ,

"brokerAddrs" : {

0: ""192.168.56.1:10000"

1: ""192.168.56.2:10000"

}

},

broker-b" : {

"cluster" : "c1" ,

"brokerAddrs" :{

0 : "192.168.56.3:10000",1:"192.168.56.4 :10000"

}

}

从以上内容可以得到broker的地址

3、clusterAddrTable: Broker集群信息,存储集群中所有Broker名称

clusterAddrTable: {

“c1”: [{"broker-a", "broker-b"}]

}

“c1”集群名,{"broker-a", "broker-b"}集群当中每一个节点的名字

4、brokerLiveTable: Broker状态信息,NameServer每次收到心跳包是会替换该信息

brokerLiveTable示例数据:

brokerLiveTable : {

"192.168.56.1:10000": {

"lastUpdateTimestmp" :1518270318980,

"dataversion" : versionObl,

"channel" : channelobj,

"haserverAddr" : "192.168.56.2:10000"

}

"192.168.56.2:10000" : {

"lastUpdateTimestamp" :1518270318980,

"dataversion" : versionobl,

"channel" : channelobj,

"haserverAddr" : ""

包含属性:"192.168.56.1:10000"这个地址的broker上次上报的时间。在NameServer当中维护的是如上面内容的心跳路由表,NameServer每隔10s会扫描路由表,查看这个表中broker的lastupdatetimestamp是否有长时间未更新的状况,如果有一个broker长时间未更新,NameServer会将这个路由表中的这个broker删除,还会将其他相关路由中的信息删除。

5、filterServerTable: Broker上的FilterServer列表,用于类模式消息过滤。

注意:RocketMQ基于定于发布机制,一个Topic拥有多个消息队列,一个Broker为每一个主题创建4个读队列和4个写队列。多个Broker组成一个集群,集群由相同的多台Broker组成Master-Slave架构,brokerld为o代表Master,大于0为Slave。BrokerLivelnfo中的lastUpdateTimestamp存储上次收到Broker心跳包的时间。

相关文章
|
Oracle Java 关系型数据库
Oracle jdk 的国内下载镜像
Oracle jdk 的国内下载镜像
51252 0
|
Java 测试技术 开发者
Spring探索:既生@Resource,何生@Autowired?
提到Spring依赖注入,大家最先想到应该是@Resource和@Autowired,很多文章只是讲解了功能上的区别,对于Spring为什么要支持两个这么类似的注解却未提到,属于知其然而不知其所以然。不知大家在使用这两个注解的时候有没有想过,@Resource又支持名字又支持类型,还要@Autowired干嘛,难道是Spring官方没事做了?
13906 3
Spring探索:既生@Resource,何生@Autowired?
解决nohup: 忽略输入并把输出追加到“nohup.out“或者nohup: 忽略输入重定向错误到标准输出端
解决nohup: 忽略输入并把输出追加到“nohup.out“或者nohup: 忽略输入重定向错误到标准输出端
|
消息中间件 监控 Java
RocketMQ学习笔记(一) 初遇篇
RocketMQ学习笔记(一) 初遇篇
RocketMQ学习笔记(一) 初遇篇
|
前端开发 Java Windows
JDK1.8下载、安装和环境配置教程(详细)
JDK1.8下载、安装和环境配置教程(详细)
27520 1
JDK1.8下载、安装和环境配置教程(详细)
|
Java Linux 开发工具
linux 安装java环境
linux 安装java环境
|
JSON 缓存 NoSQL
解决redis序列化java8 LocalDateTime
解决redis序列化java8 LocalDateTime
1380 0
解决redis序列化java8 LocalDateTime
|
4天前
|
人工智能 运维 安全
|
2天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!