当前位置:   article > 正文

RocketMQ-Queue分配算法

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是消费进度记录器

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/925319
推荐阅读
相关标签
  

闽ICP备14008679号