面试题答案
一键面试轮询策略
- 基本工作原理:按照顺序依次将消息发送到各个分区。例如,假设有3个分区,第一条消息发送到分区0,第二条发送到分区1,第三条发送到分区2,第四条又发送到分区0,依此类推。
- 特点:
- 优点:实现简单,能均匀地将消息分布到各个分区,在各分区负载均衡方面表现良好,避免单个分区压力过大。
- 缺点:如果消息具有某些关联性(如需要按用户ID聚合消息),轮询策略无法保证相关消息发到同一分区,不利于后续处理。
随机策略
- 基本工作原理:每次发送消息时,随机选择一个分区来发送。例如,从所有可用分区中随机抽取一个分区,将消息发送到该分区。
- 特点:
- 优点:同样实现简单,能在一定程度上达到负载均衡,并且由于随机选择,不会出现某些固定的分配模式导致的潜在问题。
- 缺点:无法保证消息的顺序性,对于有顺序要求的消息场景不适用;也不能保证具有特定关系的消息发到同一分区。
按消息键哈希策略
- 基本工作原理:对消息的键(Key)进行哈希计算,然后将哈希值与分区总数取模,得到的结果就是消息要发送到的分区编号。例如,假设消息键为“user123”,对其哈希值与5(假设分区总数为5)取模,若结果为3,则消息发送到分区3。
- 特点:
- 优点:能保证具有相同键的消息始终发送到同一个分区,这对于需要按键进行消息聚合、顺序处理等场景非常有用,比如按用户ID处理用户相关消息,可保证同一用户的消息在同一分区。
- 缺点:如果键的分布不均匀,可能导致某些分区负载过高,而其他分区负载过低,出现数据倾斜问题。