栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

rocketMq学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

rocketMq学习笔记

【尚硅谷】2021新版RocketMQ教程丨深度掌握MQ消息中间件

消息生产

producer获取nameserver的topic路由表 , 向指定的broker的queue发送消息

消息写入

一个broker中所有topic消息都在commitlog中 , 满1g后生成新的 , 文件名为第一条消息的空间大小偏移量 , 每条消息都会记录当前的消息偏移量 , comsumequeue , 生产者 , 消息长度 ;

向commitlog中记录queue索引的具体消息 , 再向topic中的comsumequeue写索引信息 , 索引信息记录了该条消息处于commitlog的偏移量 , 同一个queue中的消息的tag可能是不同的

消息读取

consumer获取broker中queue当前消费位置, 计算offset , 像 broker提交 queue , queueoffset , tag信息 , 在对应的comsumequeue中找到索引, 再计算commitlog的实际偏移量获取实际消息体

性能

零拷贝 , comsumequeue的cache顺序写读 , 页预读机制 , commitlog存放所有topic消息 , 存在随机读写

生产者发送给queue选择

轮询 或者 选择当前rt最短的节点

轮询 , queue接受响应延迟 , 影响之后的消息发送 , 导致producer中消息积压;

最短rt , 可能消息都发送到一个queue中, 对应的消费者压力增大

indexfile

针对包含key的消息创建的索引 , 索引文件名为创建的时间戳 , 指定时间条件查询消息;

每个indexfile记录了最多2000w个索引单元 , 每个索引单元记录了消息在commitlog的物理偏移量;

消费类型

可选拉取 和 推送 , 推送consumer与queue维持长连接 , 有消息时, broker触发consumer的回调 , 通知comsumer拉取消息

消费模式

广播 , 集群; 广播每个topic的消息都会发送给consumerGroup下的所有consumer, 消息进度在consumer端保存; 集群只会给同一consumerG的consumer发送消息 , 消费进度在broker端保存;

rebalance

在集群消费模式下 , 消费者, queue数量变化 需要重新分配queue与consumer的对应关系 ;

这种情况会导致消费暂停 , 消息积压, 如果是异步提交ack , 还会导致消息的重复消费 ,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/327784.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号