问题:有哪些分区策略/分区算法?
分区策略的定义:决定生产者将消息发送到哪个分区的算法。
1. 轮询策略/顺序分配(默认分区策略)
优点:可以提供非常优秀的负载均衡能力,可以保证消息被平均分配到所有分区上。
缺点:无法保证消息的有序性。
2. 随机策略
优点:消息的分区选择逻辑简单。
缺点:负载均衡能力一般,也无法保证消息的有序性
3. hash策略(如果指定了key,默认分区策略为hash策略)
kafka允许为每条消息定义消息key,可以根据key来为消息选择分区。
优点:可以保证相同key的消息被发送到相同的分区,因此可以保证相同key的所有消息之间的顺序性。
缺点:可能会产生数据倾斜 —— 取决于数据中key的分布,以及使用的hash算法。