面试题答案
一键面试消息分发区别
- 集群消费(Clustering):
- 一条消息只会被同一个消费组内的一个消费者实例消费。例如,消费组内有3个消费者实例A、B、C,一条消息到达后,只会被A、B、C其中之一接收并处理。
- RocketMQ通过负载均衡算法,将消息平均分配给消费组内的各个消费者实例。
- 广播消费(Broadcasting):
- 一条消息会被同一个消费组内的所有消费者实例消费。即消费组内若有多个消费者实例,每个实例都会收到并处理这条消息。
- 不管有多少个消费者实例,每个实例都能完整地收到所有消息,不存在消息分配问题。
应用场景区别
- 集群消费(Clustering):
- 高并发处理场景:适用于需要处理大量消息且追求处理效率的场景,如订单处理系统。多个消费者实例并行处理不同的消息,提高整体处理速度。
- 数据一致性要求高场景:比如在银行转账操作中,同一笔转账消息不能被重复处理,确保数据准确性。
- 广播消费(Broadcasting):
- 系统通知场景:例如推送系统公告、全局配置更新等,需要所有相关的消费者都能收到通知信息。
- 数据备份与同步场景:多个数据节点都需要同步相同的数据,每个消费者都处理消息以完成数据备份或同步。