Kafka 会允许 "unballanced" 分区吗?
Will Kafka allow "unballanced" partitions?
系统设计时提出的一个问题,如果以在数据流中经常出现的方式选择消息键,是否意味着只有一个主题分区将独占接收这些消息甚至 如果这会导致分区填充数据的方式不平衡?
Kafka 是否具有在多个分区中“拆分”具有相同密钥的消息的机制,在这种情况下会牺牲顺序?
或者在 key -> partition
分配中没有例外,无论这对分区大小有何影响?
回答你题中的问题,答案是肯定的,kafka会允许不平衡分区
您可以定义自己的partioner class 来决定将消息发送到哪里,在默认架构中,它使用murmur2 算法来决定将每个密钥发送到哪里,因此它在相同的分区,如果您的用例不需要在事件之间排序,您可能根本不需要发送密钥,并且消息将分布在各个分区中,在上次更新中,从生产者发送到同一分区的 kafka“批处理”消息具有甚至更好的吞吐量...
明确一点,kafka 不要求您发送消息的密钥
系统设计时提出的一个问题,如果以在数据流中经常出现的方式选择消息键,是否意味着只有一个主题分区将独占接收这些消息甚至 如果这会导致分区填充数据的方式不平衡?
Kafka 是否具有在多个分区中“拆分”具有相同密钥的消息的机制,在这种情况下会牺牲顺序?
或者在 key -> partition
分配中没有例外,无论这对分区大小有何影响?
回答你题中的问题,答案是肯定的,kafka会允许不平衡分区
您可以定义自己的partioner class 来决定将消息发送到哪里,在默认架构中,它使用murmur2 算法来决定将每个密钥发送到哪里,因此它在相同的分区,如果您的用例不需要在事件之间排序,您可能根本不需要发送密钥,并且消息将分布在各个分区中,在上次更新中,从生产者发送到同一分区的 kafka“批处理”消息具有甚至更好的吞吐量...
明确一点,kafka 不要求您发送消息的密钥