RocketMQ|RocketMQ -- 元数据的拉取
拉取的时机
和Kafka -- 元数据的拉取时机的类似,分为发消息的时候以及定时任务。
拉取的流程
【RocketMQ|RocketMQ -- 元数据的拉取】获取topic的时候,先从缓存获取是否有这个topic对应的路由数据,如果有,就直接返回。
文章图片
如果本地缓存,那需要通过网络请求(Netty)去NameServer获取topic的路由数据。
如果从NameServer拿到topic信息的话,就会把这个topic数据存放在缓存中,以供下次直接取用,避免频繁的拉取。
文章图片
在放入缓存的时候,还会跟缓存里的数据进行对比,如果跟缓存里不一致,就会更新broker的地址以及MessageQueue(这个后面讲)。
和kafka对比
Kafka -- 元数据的拉取流程
共同点
- 按需拉取。也就是说,需要哪些topic的信息,就拉取这些topic。所以在定时任务触发拉取元数据消息的时候,会读取内存里有哪些topic信息,根据这些topic的信息去拉取元数据。
- 先判断内存里是否有topic信息,如果有,直接用,如果没有或者不可用去服务端拉取并更新内存。
- kafka可以批量拉取topic的信息,RocketMQ是一个个topic去拉,性能上比kakfa低。
- kafka的发送消息、拉取元数据是有专门的线程来处理的(发送消息也是这个线程),由于是异步的,所以用休眠-唤醒的模式来通知拉取结果。
- RocketMQ是当前线程处理,会有多线程需要拉取topic信息的情况,需要加锁。
- kafka会对5分钟内不用的topic进行删除,RoeketMQ好像没有??
推荐阅读
- 技能树-基础之章-数据结构-链表操作
- Java|数据结构与算法(java)(线性表-队列)
- 数据结构与算法|315,关于《C程序设计伴侣》一书致人民邮电出版社的公开信
- 数据治理一体化实践之体系化建模
- 【Python】系列|【Python】面试官:元组列表都分不清,回去等通知pa
- 数据结构-算法|数据结构之红黑树,2-3-4树,插入旋转调整
- 戴口罩的人脸数据被公开贩卖(两毛一张,能用于训练算法精准度也能申请信用贷款!...)
- 深度学习|Tensorflow2.x 用Lenet神经网络训练 fashion_mnist数据集 并预测。
- #|《大话数据结构》从零开始 —— 第三章(线性表之链式存储结构 (单链表、静态链表、双向链表、循环链表))
- 数据结构|数据结构基本概念以及线性表的基本操作