我正在调查 Kafka,以评估它是否适合我们的用例。您能否帮助我了解 Kafka 在更改现有主题的分区数量方面的灵活性?
具体来说,
理想情况下,我希望更改对生产者和消费者透明。卡夫卡能确保这一点吗?
更新: 根据我目前的理解,Kafka 的设计似乎不允许这样做,因为它必须更改消费者组到分区的映射。那是对的吗?
Lij*_*ohn 11
1.是否可以在不拆除集群的情况下更改分区数?
是的,kafka 支持在运行时增加分区数,但由于其设计不支持减少分区数
2.是否有可能在不降低话题的情况下做到这一点?
是的,前提是您要增加分区。
3.添加/删除分区会自动处理跨新分区重新分配消息吗?
如前所述,不支持删除分区。
当您增加分区数时,现有消息将保留在与以前相同的分区中,只有新消息才会被考虑用于新分区(也取决于您的分区器逻辑)。增加主题的分区将触发集群重新平衡,其中消费者和生产者将收到更新的主题元数据通知。生产者将在收到更新的元数据后开始向新分区发送消息,消费者重新平衡器将在消费者组之间重新分配分区并从上次提交的偏移量恢复消费。所有这些都将在后台发生,因此您不必在客户端进行任何更改边
是的,这是完全可能的。你只对你选择的主题执行以下命令:bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic <your_topic_name> --partitions <new_partition_count>。请记住,Kafka 只允许增加分区数,因为减少它会导致数据丢失。
请注意,分区的一个用例是对数据进行语义分区,并且添加分区不会更改现有数据的分区,因此如果消费者依赖该分区,这可能会打扰他们。也就是说,如果数据按 hash(key) % number_of_partitions 进行分区,那么该分区可能会通过添加分区来进行混洗,但 Kafka 不会尝试以任何方式自动重新分配数据。
bringing down the topic你的意思是deleting the topic。注意:正如我之前提到的,您只能添加分区,无法删除。
| 归档时间: |
|
| 查看次数: |
10692 次 |
| 最近记录: |