2

我开始为企业解决方案学习 Kafka。

在阅读过程中,我想到了一些问题:

  1. 主题上的所有分区是否大小相同?

  2. 如果在某个主题上发送 Kafka 消息并且该主题过载,会发生什么情况。没有关于该主题的任何新消息的记忆?

4

1 回答 1

2

主题上的所有分区是否大小相同?

不,它们通常大小不一样。主要取决于您如何跨分区分发消息。如果您在消息中使用键,它们将被散列并用于分区您的数据。如果消息中没有键,数据将在分区中循环分配。

此外,它还取决于生产者在将其发送到代理之前将多少消息包装到一个批次中,以及您正在应用哪种压缩类型。

但是,您可以说 TopicPartition 的所有副本在同步时具有相同的大小。

如果在某个主题上发送 Kafka 消息并且该主题过载,会发生什么情况。没有关于该主题的任何新消息的记忆?

主题本身不能重载,而是整个 Kafka 代理。如果一个代理没有剩余可用磁盘空间,它将自行关闭,并且在这种情况下,如果领导者在该代理上,您将无法再将任何数据写入 TopicPartition。但是,如果只有一个代理出现故障,并且您在主题中配置了多个复制,则这些副本将接管另一个代理。

为确保这种情况永远不会发生,您可以应用 Kafka 中可用的基于卷的保留策略,如果您设置cleanup.policydelete设置retention.bytes主题/副本的数量不会超过您的存储限制。

于 2020-09-21T05:44:54.127 回答