RocketMQ原理解析-NameServer
Namesrv名称服务,是没有状态可集群横向扩展。
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跟它的多个slave
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的时间戳
四:Namesrv与broker间的心跳:
1. Broker启动的时候会启动定时任务,每隔十秒钟会向所有namesrv发送心跳请求,同时也是注册topic信息到namesrv 2. namesrv接收borker心跳DefaultRequestProcessor的REGISTER_BROKE事件处理, (1) 注册broker的topic信息 (2) 构建或者更新BrokerLiveInfo的时间戳 3. NamesrvController初始化时启动线程定时调用RouteInfoManger的scanNotActiveBroker方法来定时清理不活动的broker
(默认两分钟没有向namesrv发送心跳更新BrokerLiveInfo时间戳的),比较BrokerLiveInfo的时间戳,如果过期关闭channel连接
RocketMQ原理解析-NameServer的更多相关文章
- RocketMQ原理解析-Consumer
consumer 1.启动 有别于其他消息中间件由broker做负载均衡并主动向consumer投递消息,RocketMq是基于拉模式拉取消息,consumer做负载均衡并通过长轮询向broker拉消 ...
- RocketMQ原理解析-Remoting
Remoting2. 通信层底层传输协议 RocketMq服务器与客户端通过传递RemotingCommand来交互,通过NettyDecoder,对RemotingCommand进行协议的编码与解码 ...
- RocketMQ原理解析-Broker
broker 1. broker的启动 brker的启动 Broker向namesrv注册 1. 获取namesrv的地址列表(是乱序的) 2. 遍历向每个namesrv注册topic的配置信息top ...
- RocketMQ原理解析-Producer
producer producer 1.启动流程 Producer如何感知要发送消息的broker即brokerAddrTable中的值是怎么获得的, 1. 发送消息的时候指定会指定topic,如果 ...
- RocketMQ原理讲解系列文章
[RocketMQ原理解析][http://blog.csdn.net/quhongwei_zhanqiu/article/category/2548637] [消息的可靠性.顺序和重复][https ...
- RocketMQ原理及源码解析
RocketMQ原理深入: 一.定义: RocketMQ是一款分布式.队列模型的消息中间件,有以下部分组成: 1.NameServer: 一个几乎无状态的节点,可集群部署,节点之间无任何信息同步 2. ...
- RocketMQ(六):nameserver队列存储定位解析
在rocketmq中,nameserver充当了一个配置管理者的角色,看起来好似不太重要.然而它是一个不或缺的角色,没有了它的存在,各个broker就是一盘散沙,各自为战. 所以,实际上,在rocke ...
- RocketMQ架构原理解析(四):消息生产端(Producer)
RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...
- RocketMQ架构原理解析(一):整体架构
RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...
随机推荐
- Android View的绘制流程
写得太好了,本来还想自己写的,奈何肚里墨水有限,直接转吧.正所谓前人种树,后人乘凉.. View的绘制和事件处理是两个重要的主题,上一篇<图解 Android事件分发机制>已经把事件的分发 ...
- JSPatch来更新已上线的App中出现的BUG(超级详细)
JSPatch的作用是什么呢? 简单来说:(后面有具体的操作步骤以及在操作过程中会出现的错误) 1.iOS应用程序上架到AppStore需要等待苹果公司的审核,一般审核时间需要1到2周.虽然程序在上架 ...
- 3D坦克大战游戏源码
3D坦克大战游戏源码,该游戏是基于xcode 4.3,ios sdk 5.1开发.在xcode4.3.3上完美无报错.兼容ios4.3-ios6.0 ,一款ios平台上难得的3D坦克大战游戏源码,有2 ...
- UINavigationBar 和view 重叠覆盖问题
如果没有是storyboard进行界面设计,在ios7之后会遇到rootviewcontroller的view被navigationbar遮盖的问题,其实很好解决 - (void)viewDidLoa ...
- (十)Maven依赖详解
1.何为依赖? 比如你是个男的,你要生孩子,呸呸呸...男的怎么生孩子,所以你得依赖你老婆,不过也不一定咯,你也可以依赖其她妹子. 我们在平时的项目开发中也是同理,你需要依赖一些东西才能实现相应的功能 ...
- [Erlang 0111] Erlang Abstract Format , Part 2
上回书,我们说到飞天玉虎蒋伯芳来到蜈蚣岭,不是,重来,上回咱们说到可以在Erlang Shell里面手工构造,加载并调用一个模块.在那个demo里面,我把多个Form单独生成出来,最后放在一起做 ...
- 原创 C++应用程序在Windows下的编译、链接:第三部分 静态链接(二)
3.5.2动态链接库的创建 3.5.2.1动态链接库的创建流程 动态链接库的创建流程如下图所示: 在系统设计阶段,主要的设计内容包括:类结构的设计以及功能类之间的关系,动态链接库的接口.在动态链接库中 ...
- github的使用
1.gitbub概念 github是一个基于git的代码托管平台,付费用户可以建私人仓库,免费用户用公共仓库,但是代码公开. 2.注册账户以及创建仓库 在github官网地址:https://gith ...
- android onNewIntent调用时机
(转自:http://www.cnblogs.com/zenfly/archive/2012/02/10/2345196.html) 在IntentActivity中重写下列方法:onCreate o ...
- 开发管理系统时,安装sqlserver2005问题整理
最近在为单位开发一个综合管理系统.但是由于时间的问题,有时候就把程序带回家进行修改.但是家里有没有环境,就把数据库文件和程序带回家,可是随之问题来了.要重新在家里陪着开发环境,vs2008非常快的就安 ...