00:02
好,那么下面我们来看这个Q的选择算法啊,就比较简单。首先啊,这个前提是什么?对于无序消息,呃,因为我们这个消息啊,有有这种啊,你看有这种啊,有序的有无序的啊,后边我们会会给大家讲这个分类啊,这个其实有序消息呢。呃,实际上你写到哪个Q。你可以指定。我们现在说的这个无序消息呢,就是我不指定啊,让你随便往里边放,放到哪个Q是吧,你你系统来决定。所以这种无序消息啊,对于无序消息,其Q的选择算法也称为消息投递算法,这种在看一些其他资料的时候啊,呃,会收到啊,有效消息投递啊,消息投递算法啊。哎,所以所以这个是一个意思啊。呃。那么常见的有两种,一,一个叫轮巡啊,一个叫最小投递延迟。
01:06
那么轮询简单是吧,默这默认就是轮询的啊啊,它可以保证每一个Q呃,可以均匀的获取到消息,什么意思呢。嗯,就说啊,我这儿啊,假设我这儿啊,有这个这个。这是队列啊,这都是对的,Q,我也不管在哪个broke,反正就是这些队列啊。然后呢,这是我的生产者,我生产的消息,剩产一条,我给他剩一条我给他剩下一条,我给他生产一条,我给他,然后再来就是他他他他再来他他他哎,这是轮询是吧。这比较简单。但这种算法其实有一个问题。什么问题?他这个算法啊,就是你这边我发送成功了,才会往它发送。也就是说,如果说我给他写入了消息。
02:04
这个比如说投递的过程。比较缓慢。这个延迟比较严重,因为网络原因呢,或者其他什么原因,我给你发了,让你成功了没有,你这个成功的APP给我发送太慢。会导致。那么下一条消息迟迟的不能发送给他。会出现这种情况。那所以。呃,所以呢。呃,这个这个这个这这这会出现什么问题呢?就是你这个生产者生产的大量的消息啊,它里边啊,我给大家就这复杂稍微复杂一些了啊,就是它里边肯定也有一个。队列有个缓存,队列里边缓存的是它生产的,产生的这些消息,这些消息是不是要发送给他们?那现在产生的问题是,他他这个消息一直发不出去,导致的结果是它里边的消息会越来越多。
03:03
对不对,他的压力会增大。就是这种算法啊,它本身就是你轮学算法本身存在的问题。因为各个队列啊,他的那个投递延迟不一样。是吧,啊,这简单写一下吧。啊,简单写一下啊,呃该呃算法存在的一个。问题。呃,这个由于呃。某些原因。嗯。在。某些。上的。可能。嗯。头顶延迟。较严重。呃,从而。
04:01
导致。从而导致。呃,这个。Pro。User。嗯的缓存队列中。出现。较大的消息。积压吧,消息积压啊。这个。影响消息的。行。对吧,它存在的问题啊,存在问题。所以怎么办呢?哎,就有了下一个叫最小投递延迟,你不是嫌它这个投递延迟是吧,大吗?我就找最小。消息投递,呃,最小投递延迟算法。啊,该算法会统计,你注意它会统计每次消息投递的时间延迟。
05:00
这里RT。我每一次我都统计2T。然后根据统计出的结果将消息投递到时间延迟最小的。谁的小,我就投给谁。如果延迟相同,诶,然后采用轮询算法。谁的延迟最小,我就投给谁,你处理的快呀,我就投给你。是吧,这个这个其实可以提高啊,我们整体的体体这个投递性能。嗯。是可以。有效。提升,呃,消息的。搞定。要注意啊,任何东西都其实都是两面的。它也存在问题。他没有那个问题,他他就有新的问题了,他有什么问题,大家想一下啊。那如果说。加了几个队列啊,加了几个队列。
06:02
啊,我这生产者生产消息。往下一投。往他投,最开始肯定都是轮询的投的,因为这个RT是一样的对吧,延迟一样都都没有。紧接着一算啊,谁的最快,比如说他的最快。那下一次再。就投给他了。又是会长。你注意,下一次又投给他了。呃,然后再再再投,又投给他了。呃,再投他这次的延迟,比如说再投这次延迟又大了。比他们杀的大。这这里边都记录的有啊,比他们笑的大,哎,那这次谁的谁的谁的大,呃,谁的最小,他的最小效益又投给他了。投喂它以后发现他这次延迟有。又大了。在这几个里边谁的最小,哎,它的最小。那就投给他了。
07:01
这这这刚开始没问题的啊,但是。看有没有这种可能性。最开始四个都投了。是多少?谁的最小?他的对象。好了。消息来了,投给他。因为这次还小。投给他,投给他,投给他,投给他看到了没有,是不是所有消息都投给他了,这几个因为他们的延迟。每一次,他的延迟比他们的都小。所以所有的消息都投给他了。这个极端情况。这三个里边各接收了一个消息,紧接着所有消息都发给他了,有没有这个可能性?当然有啊。当然我说的这种极端情况,你要不是极端情况,那那有可能是导致什么,是不是这个分配不均呢。是不是?那你这延迟小的消息很多,那这会出现一种什么情况呢?
08:00
你不要忘了啊,这边还有谁啊,这边还有个消费者集群呢。包括消费者集群,假设我消费者集群啊,呃,里边123我四个队列啊,我就来四个消费者。那每一个消费者消费一个。那由于他们里边消息分配不均,所以导致的结果是这个家伙都快忙死了,这仨那闲着呢?所以你消费效率会变低。整体消费效率、消费性能下降。那么就会出现大量的消息堆积到它里边了。这是我们的MQ啊,会堆积到MQ,就是形成了什么,形成了消息堆积。还形成了消息堆积在这儿。是不是,其实所以这这各有各的问题啊,各有各的问题是吧?呃,该算法也存在。
09:02
呃,也存在,呃一个。啊什么的,呃,消息在。Q。上的分配。五军。不均匀。是吧?呃。这个。投递。延迟小的。呃,投递延迟小的,呃。其。呃。可能。投递延迟小的。Q。行。可能会。嗯。存在。嗯。大量的消息。是吧?
10:00
R。对,该。Q的消费者。嗯。压力。增大。啊,降低。啊,降低。这个消息。消费吧。小消费。消费能力。可能会。导致。这个。Q。消息的。对吧,这是它存在的问题,当然这这些啊,我们到关于消息堆积,呃,我们到后边第八点这儿再专门给大家说,你知道这儿可能存在这样一个问题啊。OK。
我来说两句