开发者学堂课程【RocketMQ 知识精讲与项目实战(第三阶段):负载均衡-消费者消费】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/704/detail/12454
负载均衡-消费者消费
Consumer 负载平衡
消费者的负载平衡有两种消费方式,即集群模式和广播模式。
1.集群模式
其实集群模式本身就是负载平衡的一种实现。集群模式假设想要消费者的负载平衡,是否要启动两个消费者的即可,启动两个相同消费者的信息,让两个消费者共同承担消息的消费。其中涉及到的问题是 rocketMQ 是如何负载压力?具体看图所示,有三个消费者,此时若有生产者同时发送六条消息到这六个队列当中,消费者会均摊这六个队列,比如最左边的负责前1,2队列,中间的负责3,4队列,最右边的负责5,6队列,即启动多个消费者来负载生产者发送的消息。在 rocketMQ 当中默认支持这种负载平衡的方式。不需要更改太多的配置,只需要启动多个消费者,前提是消费者负载平衡是集群模式。这是负载平衡的一种算法,思考一下是否存在其他算法?
还可以通过环状轮流分配,如图所示。依然是三个消费者六个队列,相比于集群模式,分摊队列的方式有所不同,最左边的人消费1,4队列,中间的人消费2,5队列,最右边的人消费3,6队列。与上面集群模式相比,当前消费者分摊到的 messageQueue 队列来自于两个不同的 broker ,这是另外的一种负载平衡。效果相似,将这两种负载平衡的方式了解之后,思考如果再来一个消费者,这六个队列已经被前三个消费者消费完毕,那么该此消费者该如何?其实这个消费者是多余的,该消费者不会进行工作,不进行消费消息。在控制消费者的数量的时候,消费者的数量最好不要超过 queue 的数量,让队列的数量大于消费者的数量,使得多个消费者均可工作。
2.广播模式
广播模式是这三个消费者没有负载消息的压力,而是每个消费者需要将所有队列中的消息均消费一遍,广播模式不属于负载平衡的形式,对于消费者的负载平衡,我们指的都是集群平衡,关于消费者的负载平衡介绍到这。