00:00
同学们,我们本节课讲一下不公平分发。默认情况下呢,Rabbit MQ呢是采用轮训分发的。轮训分发同学们都知道,就是你一条我一条,哎,我一条你一条,分的非常公平,就你一条我一条,你吃一口我吃一口。就这种感觉啊,相当于是像大锅饭一样是吧,这大家呃,不是按劳分配的,是你吃一个我吃一个,哎,你有的我也有。这就叫轮训分发,但是实际上这种分发呢,在某些场景下,这种策略并不是很好,比如说两个消费者在处理任务时,其中一个消费者处理的非踌,而另外一个消费者处理的非常的慢。这个时候呢,我们还采用轮训分发的话,那么就会造成处理速度快的这个消费者有很大一部分时间是处于空闲状态。而处理慢的那个消费者一直在干活,这种分配方式呢,在这种情况下其实不太好。
01:06
但是rob q并不知道这种情况,他依然依然很公平的在进行分发,实际上这个轮训分发真的公平吗?不公平对,按照当今社会的情况来看。轮训分放是不公平的,因为有的人能力强,有的人能力弱,能力强的人他就干的多,能力弱的人他就干的少,干的少,所以呢,真正的公平不应该是轮训分房,应该是不公平分。为什么呢?因为遵循了一个能者。多劳的一个前提。你能干,你就多收入,你不能干,你就少收入。完了呢,这样呢,能干的人多干点儿,不能干的人少干点,这样呢就可以让能干的人不至于有大量的空闲状态。
02:00
充分的利用了每一台机器的这个性能。从而达到了这个分发效率是最高的。所以咱们在企业上班强烈建议。使用不公平分法。不拼发,你就记住一点,叫能者多劳。那么怎么才能进行能者多劳呢?就是在。接收消息的时候要求信道对设置一个基本的叫QOS。你只要把QS设置成一,就会改成不公平分方。如果你不设置默认就是轮训分发,如果你设置了零,那也是轮训分发,而轮训设置的就是零,默认走的是零,那么不公平分发呢,是几呢?是一,哎,只要你改成一了,那么我们这个就改成了不公平分发,而不公平分发在很多场景情况下是非常适用的。一旦你设置成一之后,你在这个信道的里面就会看到这里面有个队列。
03:06
这个队列呢,就会有一个叫分配数量为一,按照一的这种类型分配,而一正是不公平分发的方式。对吧,所以我们应该把它改成改成一。那么这个一改在哪里呢?改在消费方。由消费方。这门设置一。不是由生产方。是由消费方设成一,因为消费方到底是以零轮训分发,还是以一不公平分发,由消费者这边的代码来决定。所以我们要是改代码的话,我们就应该怎么办,就应该去更改消费者这边的代码,所以可以打开消费者这边代码,消费者呢有多个,你看咱们之前是WORK3和WORK4,他都是消费者,所以消费者在接收消息的之前。
04:03
这个位置之前对他在这就应该设置一下。设置什么呢?设置成叫不公平。分发。对,怎么设置用心道。对信道呢,点上基本的。Basic叫QOS,完了呢,前方这里面让咱们填的就是。分发的一个一个数量是吧,分发的哎,就获取的一个数量,那么这个获取的数量呢,你给它改成几呢?改成一是吧,默认是几,默认是零,为什么是零,因为是一个小写的int嘛。小写的印子,当你不给他值的时候,默认初始值不是零吧?对吧,初始之灵了,你给它改成一就是公平分发了。所以咱们把它粘出来。放在这个位置。诶改了默认是零啊,改成一,改成一就是不公平分发我们把它。
05:02
来,放进去。放进去,哎,这样就达到了一个。接收消息采用不公平分发原则,当然除了写它以外,另外一个消费者你应该也写上,所以到这边。另外一个消费者是吧,也写上这样。就达到了这个目的。那我们可以一起来测一测,到底好不好用。怎么测呢?这么测,首先呢,我们将两个消费者启动起来。好,完了,将另外一个也启动起来。还是老老例子啊,完了呢,这个work克三呢,就是C1等待时间较短,CC4是吧,就C2啊等待时间较长,也就说较长的这个这个人相当于干活比较慢,较短的人,哎,干活比较快,按照不公平分发原则来说,C1应该干的特别多,对吧,我们可以在这儿发送方这边对可以发,例如发。
06:04
三条消息。发三条消息的话,以C1的干活的能力,C2和干活的能力来说,应该C1。干两个,C2干一个,因为C2实在是太慢了。因为C2同学们都知道他要沉睡30秒,而他只沉睡一秒。不公平,分发原则来说,他应该分发两个,而它分发一个。对。其实实际上情况应该是你一条啊,我一条,那么再等到他一条完,再他一条的时候,还得由这个C干,所以咱们可以试一试啊。AA。BB。CC。滴滴发了四条消息,按照这个能者多劳的原则。那么你看C1已经。做完BBCCDD了,这个C2连AA都没干完。
07:02
此时此刻,如果你后续还有意义。是吧,F应该还由谁呀?由这个叫C1完成,你看eeff都由他完成,而我们的C1C2现在刚刚干完A。你要速度非常的慢,那么这样呢?但是这样的好处就是,你看我们由于配置了不公平分发原则,C1特别能干,所以C1干了五个消息,而C2不能干,只干了一个消息。这就是不公平分发原则的好处。不要让C长期处于。空闲状态。充分的利用了C1的这个机器的这个能力啊,所以呢,不公平分发原则更加的呃,符合这种场景。
我来说两句