1

我的主题有 3 个分区(在 3 个不同的代理中)。我想向特定的分区 1 发送消息(添加分区 ID 或在我的消息中指定一个键)。假设分区 1 已满磁盘,是否会为此消息选择替代分区(在本例中为分区 2 或 3)?

4

1 回答 1

1

磁盘用完的不是主题,而是整个代理。如果代理用完磁盘,它将自行关闭,您将无法向其发送或接收数据。

当您专门指向一个分区时,它现在取决于您的复制因子值是否大于 1。如果您复制了主题分区,则分区领导者将从死代理切换到另一个具有分区的代理同步中。

如果您没有超过 1 个的复制,您的生产者最终会收到 OutOfMemory 错误,并且它没有生成到备用分区 2 或 3 的数据。

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

于 2020-10-07T05:30:28.463 回答