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连接

最新文章

  1. Eclipse JSP/Servlet 环境搭建
  2. 使用linux mint 安装无线网卡驱动
  3. Git 提交大文件提示 fatal: The remote end hung up unexpectedly
  4. 关于Xcode的项目文件夹
  5. android 解决启动页面加载图片空白以及去掉标题栏
  6. python中逐行读取文件的最佳方式_Drupal_新浪博客
  7. 谷歌广告Admob在cocos2dx上通过回调实现底部Banner
  8. WEB中间件--Jboss未授权访问,
  9. PS2键盘扫描码:通码与断码
  10. keepalived给LVS带来了什么
  11. adb for mac
  12. vue axios数据请求get、post方法的使用
  13. Spring Boot笔记三:配置文件
  14. Shell 数值、字符串比较
  15. django引入现有数据库
  16. 移动端Android软键盘遮住输入框解决!
  17. 自定义SpringBoot控制台输出的图案
  18. shiro xml标准配置
  19. SaltStack入门到精通第一篇:安装SaltStack
  20. Memory Models And Namespaces

热门文章

  1. js url.slice(star,end) url.lastIndexOf(&#39;/&#39;) + 1, -4
  2. 数据可视化案例 | 如何打造数据中心APP产品
  3. 慎用 supportedRuntime
  4. PowerDesigner从SqlServer数据库中导入实体模型
  5. [原创]下拉框控件react-native-modal-dropdown更新历程
  6. 自己解决虚拟机Ubuntu开机黑屏
  7. JS--轻松设置获取表单数据
  8. 初始webservice
  9. split和join的用法
  10. Nginx模块之http.md