消费者的消息粒度负载均衡
在5.0版本中为了提升消费者的负载均衡,RocketMQ5.0 sdk暂时仅支持SimpleConsumer,本文针主要针对SimpleConsumer非顺序消息类型进行消息粒度负载均衡机制实战
PushConsumer与SimpleConsumer仅支持消费下游更加均衡,数据不倾斜。
消息粒度负载均衡策略官方文档图
环境搭建可以参考rocketMQ5.0事务消息实战_rocketmq实战-CSDN博客
消费者与消费者负载均衡概述:RocketMQ5.0消费者与消费者的负载均衡_rocketmq pushconsumer与simpleconsumer区别-CSDN博客
广播消费
广播消费可以理解为一个topic被多个不同下游服务订阅消费:基于consumer group来区别不同的服务(消费者)。广播消费不同的consumer group互相独立,互不影响。每个消费者可以完整的消费topic的消息。
广播消费实战
生产者产生1000条消息,启动两个消费者服务订阅相同的topic,consumerGroup分别为group1,group2
生产者
生产者发送1000条消息
消费者
创建两个消费者服务topic一致,ConsumerGroup分别为:group1,group2
消费结果
group1,group2分别每个消费者可消费到消费者分组内所有的消息。
共享消费
共享消费可以理解为consumer GroupA为k8s service的概念,消费consumer为pod,将外部的请求通过lb,随机分配给不同的pod。多个pod合作处理外部service的所有调用。
共享消费实战
生产者产生1000条消息,启动三个服务消费者消费消息
生产者
生产者发送1000条消息
消费者
相同的代码,相同的consumer group我们启动三个consumer
消费结果
三个消费者分别消费,342,342,323条。看起来几乎平均分配。在dashboard里面把topic的读写队列数量修改都为1,生产者多次发送消息。结果还是近似平均分配。
重要
消息粒度负载均衡策略保证同一个队列的消息可以被多个消费者共同处理,但是该策略使用的消息分配算法结果是随机的,并不能指定消息被哪一个特定的消费者处理。