RocketMQ原理解析-namesrv
2017-07-13 15:53
633 查看
Namesrv名称服务,是没有状态可集群横向扩展。
1. 每个broker启动的时候会向namesrv注册
2. Producer发送消息的时候根据topic获取路由到broker的信息
3. Consumer根据topic到namesrv获取topic的路由到broker的信息
接收client的请求根据某个topic获取所有到broker的路由信息
Map<brokerName, brokerData>
brokerData 由brokerName和它的broker ids和address
id表示是master还是slave
id= 0为master 大于0为slave
Map<topic, List<queueData>>
queueData由brokerName, 读队列数,写队列数,已经权限值
Map<clusterName,Set<brokerName>> 将broker按照集群分组
Map<brokerAddr, BrokerLiveInfo>
BrokerLiveInfo 代表一个活的broker链接由最后更新时间,一个链接channel,数据版本和Ha地址组成
Broker定时向namesrv注册并更新BrokerLiveInfo的时间戳
2. namesrv接收borker心跳DefaultRequestProcessor的REGISTER_BROKE事件处理,
(1) 注册broker的topic信息
(2) 构建或者更新BrokerLiveInfo的时间戳
3. NamesrvController初始化时启动线程定时调用RouteInfoManger的scanNotActiveBroker方法来定时清理不活动的broker(默认两分钟没有向namesrv发送心跳更新BrokerLiveInfo时间戳的),比较BrokerLiveInfo的时间戳,如果过期关闭channel连接
1. 每个broker启动的时候会向namesrv注册
2. Producer发送消息的时候根据topic获取路由到broker的信息
3. Consumer根据topic到namesrv获取topic的路由到broker的信息
一:Namesrv功能:
接收broker的请求注册broker路由信息(包括master和slave)接收client的请求根据某个topic获取所有到broker的路由信息
二:Namesrv启动流程:
三:RouteInfoManager
路由信息RouteInfoManager类的管理
brokerName表示一组broker,如:一个叫brokerName=broker-a, 可能包括一个master跟它的多个slaveMap<brokerName, brokerData>
brokerData 由brokerName和它的broker ids和address
id表示是master还是slave
id= 0为master 大于0为slave
Map<topic, List<queueData>>
queueData由brokerName, 读队列数,写队列数,已经权限值
Map<clusterName,Set<brokerName>> 将broker按照集群分组
Map<brokerAddr, BrokerLiveInfo>
BrokerLiveInfo 代表一个活的broker链接由最后更新时间,一个链接channel,数据版本和Ha地址组成
Broker定时向namesrv注册并更新BrokerLiveInfo的时间戳
四:Namesrv与broker间的心跳:
1. Broker启动的时候会启动定时任务,每隔十秒钟会向所有namesrv发送心跳请求,同时也是注册topic信息到namesrv2. namesrv接收borker心跳DefaultRequestProcessor的REGISTER_BROKE事件处理,
(1) 注册broker的topic信息
(2) 构建或者更新BrokerLiveInfo的时间戳
3. NamesrvController初始化时启动线程定时调用RouteInfoManger的scanNotActiveBroker方法来定时清理不活动的broker(默认两分钟没有向namesrv发送心跳更新BrokerLiveInfo时间戳的),比较BrokerLiveInfo的时间戳,如果过期关闭channel连接
相关文章推荐
- RocketMQ原理解析-namesrv
- RocketMQ原理解析-producer 6.消息在broker落地之事物消息
- RocketMQ原理解析-consumer 5.push消费-顺序消费消息
- 【RocketMQ原理解析2.1】源码目录结构介绍&Remoting通信层
- RocketMQ原理解析-producer 5.消息在broker落地之普通消息
- RocketMQ原理解析-broker 1. broker的启动
- RocketMQ原理解析-producer 3.如何发送顺序消息
- RocketMQ原理解析-Remoting1. 通信层实现
- 【RocketMQ原理解析1.1】整体介绍&IDE编译并启动RocketMQ的第一个例子
- RocketMQ原理解析-consumer 2.消费端负载均衡
- RocketMQ原理解析-producer 3.如何发送顺序消息
- RocketMQ原理解析-consumer 7.shutdown
- RocketMQ原理解析-consumer 1.启动
- RocketMQ原理以及源码解析目录介绍
- RocketMQ原理解析-producer 4.发送分布式事物消息
- RocketMQ原理解析-consumer 4.长轮询push消息—并发消费消息
- RocketMQ原理解析-Remoting1. 通信层实现
- RocketMQ原理解析-consumer 5.push消费-顺序消费消息
- RocketMQ原理解析-broker 2.消息存储
- RocketMQ原理解析-Remoting2. 通信层底层传输协议