我需要了解一些关于卡夫卡的事情:
考虑到这两种情况,您可能会遇到这样一种情况:如果所有数据都进入单个分区,则一个消费者无法继续处理所有消息。请记住,您可以仅使用一个消费者来处理一个分区(当然,如果使用不同的消费者组,您可以使用 2 个消费者,但这不是您的情况),因此随着时间的推移,您将开始落后。但是,如果您有多个分区,您要么能够使用一个消费者并并行处理数据(这在某些情况下可能有助于加快速度),要么只是添加更多消费者。
默认情况下,Kafka 使用基于哈希的分区。这可以通过提供自定义分区器进行配置,例如,如果您不关心消息最终位于哪个分区,则可以使用随机分区。
主题的目的完全取决于你
UPD,回答评论中的问题:
添加更多消费者通常是为了增加更多计算能力,而不是为了实现所需的并行性。要添加并行性,请添加分区。大多数消费者实现在不同线程上处理不同分区,因此如果您有足够的计算能力,您可能只有一个消费者并行处理多个分区。然后,如果您开始遇到一个消费者不够用的情况,您只需添加更多消费者即可。
创建主题时,您只需指定分区数量(以及该主题的复制因子,但这是另一回事)。要发送的密钥和分区完全取决于生产者。事实上,您可以将生产者配置为使用随机分区器,它甚至不会关心密钥,只需随机选择分区即可。键 -> 分区之间没有直接关系,只是从这样的设置中受益很方便。
您能详细说明一下这一点吗?不确定我是否理解这一点,但我想你的问题是你是否可以只发送一个值,而 Kafka 会以某种方式自行推断出一个密钥。如果是这样,那么答案是否定的 - Kafka 不会对消息应用任何转换并按原样存储它们,因此如果您希望消息包含密钥,则生产者必须显式发送该密钥。
| 归档时间: |
|
| 查看次数: |
1182 次 |
| 最近记录: |