当前位置:首页 >> 中药养生 >> 深扒RocketMQ源码之后,我找出了RocketMQ消息减法消费的7种原因

深扒RocketMQ源码之后,我找出了RocketMQ消息减法消费的7种原因

发布时间:2024-01-20

所以这个匹配不要随意另设,一旦另设大了,就也许带来了第一星期被轻新商品。

除了比方说商品第一星期的形式都有,RocketMQ还赞同依序商品第一星期的形式,也则会带来轻复商品,演算本来约莫,但是在意味着第一星期轻新商品的演算不一样。

商品者建议书offset挫败

首到时来讲一讲什么是offset。

后面感叹过,第一星期在转发的时候无需而无须转发到,第一星期之后则会被放到Queue中都,本来真正的第一星期不是在Queue中都,Queue遗的是每个第一星期的方位,但是你可以了解为Queue遗的是第一星期。

而第一星期在Queue中都是有序列号的,这个序列号就被特仅指offset,从0开始,单调依此类推1。

比如感叹,如上图,第一星期1的offset就是0,第一星期2的offset就是1,共五类推。

这个offset的一个作用就是用来监管商品者的商品延迟。

当商品者在尝试商品第一星期以以前,无需将所商品的第一星期的offset建议书给RocketMQ系统监管员,告诉RocketMQ,这个Queue的第一星期我早就商品到了这个方位了。

建议书offset的预定义就在上述第二节写道的处理事件结果的中都间

这样有一个效用,那么一旦商品者轻启了或者其它啥的要从这个Queue拉取第一星期的时候,此时他只无需下回RocketMQ系统监管员上次这个Queue第一星期商品到哪个方位了,以以前商品者只无需从这个方位开始商品第一星期不用,这样就应付了接着商品的关键问题。

但是RocketMQ在新设计的时候,当商品到时第一星期的时候并不是不间断告诉RocketMQ系统监管员offset,而是均会转发。

如图,当商品者商品到时第一星期的时候,则会将offset保遗到内遗中都的一个Map数据集结构中都,所以纸片视频的那段预定义本来是改版内遗中都的offset

而在商品者启动时的时候则会重启一个均会执行,意味着是5s一次,则会通过网络请将内遗中都的每个Queue的商品延迟offset转发给RocketMQ系统监管员。

由于是均会执行,所以就也许显现出代理维修服务器一旦宕机,带来了除此都有商品的offset没有人尝试告诉RocketMQ系统监管员的持续官能

此时,商品延迟offset就丢了,那么商品者轻启的时候并不需要从RocketMQ中都利用到上一次建议书的offset,从这里开始商品,而不是除此都有的offset,显现出不晓得商品到了第8个第一星期,RocketMQ却告诉他只商品到了第5个第一星期的持续官能,此时不可避免则会带来了第一星期又显现出轻复商品的持续官能。

系统监管员持续性所谓offset挫败

上一节感叹到,商品者则会有一个整年5s两口的均会执行将每个队列的商品延迟offset建议书到RocketMQ系统监管员

当RocketMQ系统监管员接管到建议书请以以前,则会将这个商品延迟offset保遗到内遗中都

同时为了必需RocketMQ系统监管员轻启商品延迟不则会丢失,也则会重启一个均会执行,意味着也是5s一次,将内遗中都的商品延迟持续性所谓到遗储设备副本中都

所以,整个商品延迟offset的数据集相伴反复如下

当RocketMQ系统监管员轻启以以前,则会从遗储设备中都载入副本的数据集加载到内遗中都。

跟商品者产生的关键问题一样,一旦RocketMQ再次发生宕机,那么offset就有也许丢失5s两口的数据集,RocketMQ系统监管员一旦轻启,商品者从RocketMQ系统监管员利用到的第一星期商品延迟就比意味着商品的延迟偏高,某种程度也则会带来了第一星期轻复商品。

非标准不间断offset挫败

在RocketMQ的高可用形式中都,有一种叫作非标准不间断的形式,当配键值插了以以前,从键值可以手动升级为配键值对外提供会面时,必需高可用。

在非标准不间断形式下,从键值意味着整年10s则会向配键值转发请,不间断一些元数据集,这些元数据集就都有商品延迟

当从键值利用到配键值的商品延迟以以前,则会将配键值的商品延迟另设到自己的内遗中都,同时也则会持续性所谓到遗储设备。

所以整个商品延迟offset的数据集的相伴反复就则会变成如下

某种程度,由于也是均会执行,那么一旦配键值插了,从键值就则会丢10s两口的商品延迟,此时如果从键值升级为配键值对外提供会面时,就则会显现出跟纸片写道的一样的持续官能,商品者从这个新的配键值中都拿到的商品延迟比意味着的偏高,自然而然就则会轻复商品第一星期。

所以,总的来感叹,在商品延迟数据集相伴的反复中都,只要某个每一集显现出了关键问题,都有很有也许则会带来了第一星期轻复商品。

轻恒定

到时来讲一讲什么是轻恒定,本来轻恒定极好了解,我感叹一下你就明白了。

后面感叹到,商品者是从队列中都利用第一星期的

在RocketMQ中都,有个商品者组成员的本质,一个商品者组成员中都可以有多个商品者,并不相同商品者组成员之间商品第一星期是互相干扰的,所以后面写道的商品者本来都在商品组成员下

在同一个商品者组成员中都,第一星期商品有两种形式:

战斗群商品形式广播商品形式

由于RocketMQ意味着是战斗群商品形式,并且绝大多数其业务一幕都是采用战斗群商品形式,所以这里就不争论广播商品形式了,熟悉的同学可以看看RocketMQ第一星期断断续续而又精彩的有生之年 这篇文章。

战斗群商品形式是仅指同一条第一星期并不需要被这个商品者组成员商品一次,这就叫战斗群商品。

并且后面写道建议书商品延迟给RocketMQ系统监管员的持续官能只则会战斗群商品形式下才则会有,在广播商品形式不则会提给到RocketMQ系统监管员,意味着持续性所谓到本地遗储设备

同时后面感叹的商品者建议书商品延迟真正建议书的是商品者组成员对于这个Queue的商品延迟,而不是仅指明确的某个商品者对于Queue商品延迟。

虽然感叹这里将后面写道的一些含义更深一步,但是并不不利于后面的了解。

战斗群商品的意味着就是将队列按照一定的算法资源分配给商品者,意味着是按照平均资源分配的。

如图所示,假定某个topic有4个Queue,有个商品者组成员订阅了这个topic,这个商品者组成员有两个商品者1和商品者2,此时每个商品者就可以被资源分配两个队列,这样就能必需第一星期但会持续官能下只则会被商品一次。如果只有一个商品者,那么这个商品者就则会商品所有队列,极好了解。

接着中都间又启动时了一个商品者3,此时为了必需刚上线的商品者3必须商品第一星期,就要顺利到时成轻恒定可用,轻新资源分配每个商品者商品的队列。

在轻恒定以以前就也许则会显现出下面这种持续官能

如上图,原本被商品者2商品的Queue4被资源分配给商品者3,此时商品者3就能商品到第一星期了,这就是轻恒定。

除了导入商品者则会带来了轻恒定外,商品者存量提高,队列的存量增高或者提高都则会触发轻恒定。

在了解了轻恒定本质以以前,接下来分析一下为什么轻恒定则会带来了第一星期的轻复商品。

假定在顺利到时成轻恒均会,还未轻恒定到时以以前,商品者2此时还是则会按照纸片第二节写道的商品第一星期的演算来商品Queue4的第一星期

当商品者2早就轻恒定到时成了,注意到Queue4自己早就不想商品了,那么此时就则会把这个Queue4另设为dropped,就是丢弃的含意

但是由于轻恒定顺利到时成时商品者2仍然在商品Queue4的第一星期,但是当商品到时以以前,注意到队列被另设成dropped,那么此时被商品者2商品第一星期的offset就不则会被建议书,或许如下预定义

这段预定义后面早就显现出过,一旦dropped被另设成true,这个if条件就通不过,商品延迟就不则会被建议书。

尝试商品第一星期了,但是却不建议书商品延迟,这就颇为西北侧了。。

于是当商品者3开始商品Queue4的第一星期的时候,他就则会下回RocketMQ系统监管员,我商品者3所在的商品者组成员对于Queue4这个队列商品到哪了,我接着商品不用。

此时由于没有人建议书商品延迟,RocketMQ系统监管员告诉商品者3的商品延迟就则会比意味着的偏高,这就带来了第一星期轻复商品的持续官能。

清扫但会商品的第一星期

在RocketMQ中都有这么一个程序,则会均会清扫但会即将商品的第一星期。

如图,假定有5条第一星期直到现在即将被商品者处理事件,这5条第一星期则会被遗在一个等价中都,并且是按照offset的大小查找,第一星期1的offset之比,第一星期5的offset最大。

RocketMQ商品者启动时时则会重启一个意味着15分两口执行一次的均会执行

这个均会执行则会去检查即将处理事件的第一星期的第一条第一星期,也就是图中都的第一星期1,一旦注意到第一星期1早就处理事件了高达15分两口了,那么此时就则会将第一星期1从等价中都移出,以以前则会隔一均会间再次商品第一星期1。

这也则会有西北侧,虽然第一星期1从等价中都被移出了,但是第一星期1并没有人消亡,仍然被商品者独自处理事件,但是第一星期1隔一均会间就则会再次被商品,就则会显现出第一星期1被轻复商品的持续官能。

这就是清扫但会商品的第一星期带来了轻复商品的或许。

但此时又则会便是一个新的疑点,为什么要移出这个处理事件高达15分两口的第一星期呢?

这就又跟后面写道的商品延迟建议书有关!

后面感叹过第一星期被商品到时成以以前则会建议书商品延迟,建议书的商品延迟意味着则会有两种持续官能:

第一种就是某个虚拟机商品了所有的第一星期,当把所有的第一星期都商品到时成以以前,就则会把第一星期从等价中都全部移出,此时建议书的商品延迟offset就是图中都第一星期5的offset+1

加1的可用是为了必需如果再次发生轻启,那么商品者来年商品的开端方位就是第一星期5中都间的第一星期,必需第一星期5不被轻复商品

第二种持续官能就不太一样了

假定直到现在有两个虚拟机来处理事件这5条第一星期,虚拟机1处理事件以前2条,虚拟机2处理事件后3条,如图

直到现在虚拟机1显现出了但会处理事件第一星期的持续官能。

此时虚拟机2处理事件到时第一星期以以前,移出中都间三条第一星期,立即建议书offset的时候注意到等价中都还有特官能,就是虚拟机1即将处理事件的以前两条第一星期,此时虚拟机2建议书的offset并不是第一星期5相异的offset,而是第一星期1的offset,预定义如下

这么来作的配要或许就是必需第一星期1和第一星期2有数被商品一次。

因为一旦建议书了第一星期5相异的offset,如果商品者轻启了,来年商品就则会接着从第一星期5的中都间开始商品,而对于第一星期1和第一星期2来感叹,并不知道有没有人被商品尝试,就有也许显现出第一星期丢失的持续官能。

所以,一旦等价中都之后面的第一星期但会处理事件,那么就则会带来了中都间被商品的第一星期延迟难以建议书,那么轻启以以前就则会带来了大量第一星期被轻复商品。

为了应付这个关键问题,RocketMQ引入了均会清扫的程序,均会清扫但会商品的第一星期,这样商品延迟就可以建议书了。

之后

总得来感叹,RocketMQ中都还是遗在很多种带来了第一星期轻读商品的持续官能,并且官方也感叹了,只是在大多数持续官能下第一星期不则会轻复

所以如果你的其业务一幕中都无需必需第一星期不想轻复商品,那么就无需根据其业务一幕充分的新设计整数等高效率方案。

文中:

作者:三友

如果心里本文对你有帮助,点赞关注赞同一下

肚子疼腹泻吃什么药
吃什么药能治疗打鼾效果好
胃溃疡要怎么治疗效果比较好
哈萨克斯坦试管婴儿费用多少钱
新冠用什么药
标签:
友情链接: