路由发现和小结|学习笔记

简介: 快速学习路由发现和小结

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

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


路由发现和小结

 

内容介绍:

一、路由发现

二、小结

 

一、路由发现

RocketMQ路由发现是非实时的,当Topic路由出现变化后,NameServer不会主动推送给客户端,而是由客户端定时拉取主题最新的路由。

在NameServer中有一个DefaultRequestProcessor,这个类的作用是处理客户端请求,里面有一个请求类型是GET_RUTEINT_BY_TOPIC,是客户端根据这个主题主动的获得路由信息,目的是降低NameServer实现的难度,保证简单、高效。

代码:

case Requestcode.GET_ROUTEINTO_By_TOPIC:

return this.getRouteInfoByTopic(ctx,request);

在getRouteInfoByTopic里会找到namesrvcontroller拿到RouteInfoManger,根据主题去摘取相关路由信息去填充topicRouteData

public RemotingCommand getRouteInfoByTopic(ChannelHan

dlercontext ctx,

Remotingcommand request) throws RemotingCommandException {

final RemotingCommand response = RemotingCommand.createResponseCommand(null);final GetRouteInfoRequestHeader requestHeader =

l(GetRouteInfoRequestHeader) request.decodeCommandcustomHeader(GetRouteInfoRequestHeader .class) ;

TopicRouteData topicRouteData = this.namesrvController.getRouteInfoNanager().pickupTopicRouteData(requestHeader.getTopic());

if (topicRouteData != null) {

If (this.namesrvController.getNamesrvConfig().isorderMessag

eEnable()) {

string orderTopicconf =

this.namesrvController.getKvConfigManager() .getKVConfig(NamesrvUtil.NANESPACE_ORDER_TOPIC_CONFT6,

requestHeader.getTopic());

topicRouteData.setorderTopicconf(orderTopicconf);

}

byte[]content = topicRouteData.encode();

response.setBody ( content);

response.setcode(Responsecode.SUCCESS);response.setRemark( null);

return response;

}

以上代码是在进行路由的发现,this.lock.readLock(). lockInterruptibly();这个流程是同步的,readLock是共享锁。

 

二、小结

image.png 

NameServer充当broker管理者,NameServer收到 Broker 心跳包后更新brokerLiveTable 中的信息,特别记录心跳时间 lastUpdateTime;broker会每隔30s向NameServer报告自己的信息;NameServer每隔10s扫描brokerLiveTable,检测表中上次收到心跳包的时间,比较当前时间与上一次时间,如果超过120s,则认为broker不可用,移除路由表中与该broker相关的所有信息。

当Topic路由出现变化后,NameServer不会主动推送给客户端,而是由客户端主动的通过topic查询路由信息。

相关文章
|
6月前
|
JavaScript 数据安全/隐私保护
|
7月前
|
JavaScript 网络架构
路由的使用
路由的使用
25 0
|
网络架构
路由转发(详细理解+实例精讲)
本文详细的介绍路由转发,内含详细的实例解析,该文你值得拥有。
|
前端开发 JavaScript Java
关于前端路由我所知道的
关于前端路由我所知道的
91 0
|
缓存 监控 前端开发
|
弹性计算 网络安全 网络架构
添加自定义路由|学习笔记
快速学习添加自定义路由
添加自定义路由|学习笔记
|
前端开发 JavaScript 开发者
路由-前端路由和后端路由的概念|学习笔记
快速学习路由-前端路由和后端路由的概念
176 0
路由-前端路由和后端路由的概念|学习笔记
|
网络协议 网络架构
路由是什么
路由介绍: 什么是路由: 路由就是寻径
223 0
|
移动开发 前端开发 应用服务中间件
前端路由那些事
谈到路由,一般分为前端路由和后端路由两种,后端路由指的当用户通过浏览器切换不同URL时,都会向服务器发起资源请求,服务器通过后端路由匹配之后根据不同URL返回不同页面,而前端路由则将浏览器与服务器交互(页面跳转的URL规则匹配)的任务交给前端来做
351 0
前端路由那些事
|
移动开发 前端开发 数据可视化
浅谈前端路由🏃
浅谈前端路由🏃