面试题答案
一键面试负载均衡策略选择及原因
在高并发电商订单处理系统中,推荐使用RangeAssignor策略。原因在于该策略能将分区按照消费者数量平均分配,在订单处理场景下,分区内订单按顺序处理能保证业务逻辑一致性,如库存扣减等操作,不会因乱序导致数据不一致问题。
不同负载均衡策略优缺点
- RangeAssignor
- 优点:
- 分区分配均匀,能充分利用消费者资源,提高处理效率。
- 同一分区内消息按顺序处理,符合订单处理中部分需顺序执行的业务逻辑。
- 缺点:
- 当主题分区数不能被消费者实例数整除时,可能导致部分消费者负载过重。比如主题有10个分区,3个消费者实例,会有一个消费者比其他消费者多分配一个分区。
- 优点:
- RoundRobinAssignor
- 优点:
- 分配策略简单,将所有主题的分区轮询分配给消费者,能更均衡地分配负载,避免某几个消费者负载过重。
- 当新消费者加入或旧消费者离开时,能快速重新分配分区,具有较好的动态适应性。
- 缺点:
- 可能会将同一主题的不同分区分配到不同消费者,无法保证分区内消息顺序处理,对于订单处理中一些需要严格顺序处理的业务场景(如订单状态变更)可能不合适。
- 优点:
- StickyAssignor
- 优点:
- 具有一定的粘性,当消费者实例数量不变时,尽量维持原有的分区分配关系,减少不必要的重新分配开销。
- 综合了RangeAssignor和RoundRobinAssignor的优点,既考虑了分区分配的均匀性,又能在一定程度上保持分区分配的稳定性。
- 缺点:
- 实现相对复杂,增加了系统的维护成本。
- 当消费者实例数量变化较大时,重新分配分区的过程可能会比较复杂,导致短暂的处理效率下降。
- 优点: