RocketMQ-Queue分配算法

介绍

一个Topic中的Queue只能有Consumer Group中的一个Consumer进行消费,那么他们之间的配对关系如何确定的,即Queue要分配给那个Consumer进行消费?也就是算法策略,常见有4中策略,这些策略通过创建Consumer时的构造器传进去的。

平均分配策略

在这里插入图片描述
该算法是根据avg=QueueCount / ConsumerCount 的计算结果进行分配的,如果能够整除,则按顺序将avg个Queue逐个分配,如果不能整除,则将多余出的Queue按照Consumer顺序逐个分配

环形平均策略

在这里插入图片描述

环形平均算法是指,根据消费者的顺序,以此由Queue队列组成的环形图逐个分配

一致Hash策略

在这里插入图片描述

该算法会将Consumer的Hash值作为Node节点存放到Hash环上,然后Queue的Hash值也放到Hash环上,通过逆时针方向,距离Queue最近的那个Consumer就是该Queue要分配的Consumer

同机房策略

在这里插入图片描述
该算法会根据Queue的部署机房位置和Consumer的位置,过滤出当前相同机房的Queue,然后按照平均分配活环形平均策略对同机房的Queue进行分配,如果没有同机房的Queue,则会按照平均策略或者环形平均策略对所有的Queue进行分配

至少一次原则

RocketMQ有一个原则,每条消息必须被成功消费一次,什么事消费成功呢?Consumer在消息消费完成后悔向其消费进度记录器提交消费消息的offset,offset被成功记录到记录器中,那么这条消息就被成功消费了

什么事消费进度记录器
广播模式:Consumer本身就是消费进度记录器
集群模式:Broker是消费进度记录器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员劝退师-TAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值