
消息中间件
文章平均质量分 97
菜菜的后端私房菜
专注Java后端技术栈,热爱工作,热爱生活,关注菜菜,分享更多干货日常哟~
展开
-
RocketMQ(五):揭秘高吞吐量并发消费原理
提交消费请求后,会根据每次消费批处理最大消息数量进行分批次构建消费请求并提交到线程池执行任务并发消费消息的特点是吞吐量大,使用线程池对拉取的消息进行消费,但是消费消息是无法预估执行顺序消费消息时会使用消费者的消费监听器进行消费消息并获取返回状态,根据状态进行后续的处理(集群模式下)如果状态为成功则删除ProcessQueue中的消息,并更新内存中记录Broker的消费偏移量,后续定时任务向Broker进行更新该消费者所有队列对应的消费偏移量。原创 2024-11-21 09:25:34 · 1096 阅读 · 0 评论 -
RocketMQ(四):消费前如何拉取消息?(长轮询机制)
消息中间件消费端获取消息的方式通常有推送、拉取、长轮询(推拉结合)三种Broker主动推送消息有很好的实时性,但消费端未做流控可能会压力大,导致吞吐量、性能下降,消息积压消费者主动拉取消息能根据自己的消费能力决定拉取数量,但无法预估拉取频率,太慢会导致实时性差长轮询是特殊的拉取方式,在拉取的基础上,如果未拉取到消息会进行等待,超时或消息到达后再进行拉取,弥补拉取方式实时性差的缺点,但大量长连接一直等待资源开销大。原创 2024-11-21 09:24:48 · 1039 阅读 · 0 评论 -
RocketMQ(三):面对高并发请求,如何高效持久化消息?
Broker为了持久化消息会写很多文件,其中主要为CommitLog、ConsumerQueue、IndexFile文件为了实现高性能的写入,写入文件通常都是使用mmap(内存映射)对应源码中的MappedFileCommitLog为消息顺序写入的文件,通过顺序写的方式提高写入性能,文件名以起始偏移量命名,固定1G,消息被消费后会删除。原创 2024-11-20 11:35:45 · 1055 阅读 · 0 评论 -
RocketMQ(二):揭秘发送消息核心原理(源码与设计思想解析)
先校验参数,避免参数出错再获取Topic路由信息,如果本地没有就从NameServer获取然后通过线性轮询法选择队列,如果开启后,同步失败新的重试会选择其他broker紧接着对消息进行封装,设置唯一ID、压缩消息、检查禁止发送钩子、发送前后钩子等最后使用Netty写请求进行rpc,期间也会有rpc的钩子,如果是同步则会等待在此期间会进行重试、超时检测。原创 2024-10-23 09:15:33 · 1024 阅读 · 0 评论 -
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
消息中间件通常有削峰填谷、异步通信、架构解耦、高性能、高可用、集群扩展、负载均衡等相关特点,同时项目中引入消息中间件也会增加调用链路、系统复杂度RocketMQ由NameServer、Broker、Product、Consumer等集群组成其中Broker作为服务端,负责接收消息、对消息进行高效持久化、消费消息时高效查询定义Topic对消息进行分类,为了提升水平扩展写入能力,Topic下可以设置MessageQueue队列,消息作为数据载体存储在队列中,等待被消费。原创 2024-10-22 09:27:20 · 1292 阅读 · 0 评论