当前位置: 首页 > 网络应用技术

[消息中间件]访调员:让我们谈谈名称服务器的路由注册和排除?

时间:2023-03-06 23:13:15 网络应用技术

  大家好,我是小郭。在上一篇文章中,我们已经完成了Docker环境中RocketMQ的构建。接下来,我们主要从五个方面学习名称服务器,即体系结构设计,启动过程,路线注册,故障删除,路线发现。

  思维问题:

  入口:org.apache.rocketmq.namesrv.namesrvstartup#main0

  步骤1:分析配置文件,填写namesrvconfig,nettyserverconfig和return namesrvcontroller实例实例

  当我们启动名称服务器时,我们通常使用https://www.shouxicto.com/article/mqbaneserver -c configfile -p。-c和-p的主要功能是什么?

  步骤2:根据属性创建namesRvController实例,并初始化此实例

  入口:namesrvstartup#开始

  超过120年代,从名称服务器中删除并直接删除以降低设计的复杂性

  步骤3:名称服务器停止了该过程,使用JVM挂钩函数监视代理

  钩函数的作用也主要用于结束。在关闭JVM过程之前,一些清洁工作,例如关闭资源或同步。

  最后,基于Netty实施的RPC服务器,NetTyRemotingServer启动了NetTyServerConfig配置

  通过对上面的源代码的分析,我们现在可以回答有关思考的问题。我们只需要配置namesRvConfig和nettyserverconfig即可使用Netty启动名称服务器。

  上面提到的名称服务器的路由信息管理主要是注册,故障和路由信息存储路由。

  问题:

  步骤1:使用线程池穿越名称服务器以依次发送心跳袋

  入口:BrokerController#开始#register Broker#Doregister Brokerker

  获取整个地址

  包装请求标题

  穿越所有名称服务器

  步骤2:心跳包处理

  入口:RouteInfomanager#register Broker

  在注册的经纪人中,为了防止同时修改路由信息,整体添加了写锁。

  步骤3:同时,名称服务器仅处理一个经纪人心跳袋,并连续执行多个心跳袋

  名称服务员扫描经纪人每10s。当BrokerLive的最终更新时间差距超过120s时,它被认为是无效的。

  穿越经纪人的集合,删除失败经纪人信息

  入口:RouteInfomanager#Scannotactive Broker

  路由发现不是真实的时间。当主题更改时,名称服务器不会主动推向客户端。

  入口:DefaultrequestProcessor#GetRouteinFobyTopic

  通过读取名称服务器源代码,一些摘要

  原始:https://juejin.cn/post/7101577870874509349

猜你喜欢