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

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

开发者学堂课程【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查询路由信息。

相关文章
|
NoSQL Redis
Redis 字符串(String)
10月更文挑战第16天
178 4
|
人工智能
【AI大模型应用开发】1.2 Prompt Engineering(提示词工程)- 站在巨人的肩膀上,超实用!常用提示词整理
【AI大模型应用开发】1.2 Prompt Engineering(提示词工程)- 站在巨人的肩膀上,超实用!常用提示词整理
535 0
|
存储 安全 算法
三种常见的加密算法:MD5、对称加密与非对称加密的比较与应用
网络安全聚焦加密算法:MD5用于数据完整性校验,易受碰撞攻击;对称加密如AES快速高效,密钥管理关键;非对称加密如RSA提供身份验证,速度慢但安全。三种算法各有所长,适用场景各异,安全与效率需权衡。【6月更文挑战第17天】
3070 2
|
前端开发 JavaScript API
网页自动提交Form表单的方法
在数字化时代,自动化任务如网页自动提交Form表单,能大幅提升效率。这涉及自动填写注册信息等场景。本文概述了多种实现方式:JavaScript可直接在前端自动填充并提交;Python结合Selenium模拟真实用户操作;AOKSend作为API工具发送表单数据;第三方工具如iMacros、AutoHotkey和Zapier提供非编程自动化选项。根据需求选择合适方法,可显著提升工作效能,减少重复性劳动。
|
C语言
每天一道C语言编程:求N以内的素数(普通方法+优化方法)
每天一道C语言编程:求N以内的素数(普通方法+优化方法)
299 0
|
机器学习/深度学习 测试技术
LLM-Blender:大语言模型也可以进行集成学习
最近在看arxiv的时候发现了一个有意思的框架:LLM-Blender,它可以使用Ensemble 的方法来对大语言模型进行集成。
628 0
|
Web App开发 安全 搜索推荐
双链笔记 Roam Research 综合评测、学习资源、使用教程分享
Roam Research 综合评测以及学习资源/使用教程分享 Roam Research 是最近几年,除了 Notion 以外,被广大笔记用户最为关注的产品。关于 Roam, 很多读者已经了解颇多。因此,对于 Roam 我只做简要评价,重点在于分享 Roam 使用所需要的学习资源和使用教程。
938 0
双链笔记 Roam Research 综合评测、学习资源、使用教程分享
|
Linux API 数据中心
Docker容器的操作一共有哪些?底层原理是什么?
Docker容器的操作一共有哪些?底层原理是什么?
210 0
|
运维 监控 安全
SLS告警通知体验升级——移动端免登查看与操作
SLS告警通知体验重磅升级,支持了移动端免登陆的能力,从而可以随时随地在手机上查看告警信息并进行后续的管理,提升运维效率。
587 0