【发布时间】:2021-01-21 23:45:00
【问题描述】:
我的主题有 3 个分区(在 3 个不同的代理中)。我想向特定的分区 1 发送消息(添加分区 ID 或在我的消息中指定一个键)。假设分区 1 已满磁盘,是否会为此消息选择替代分区(在本例中为分区 2 或 3)?
【问题讨论】:
标签: apache-kafka kafka-topic kafka-partition
我的主题有 3 个分区(在 3 个不同的代理中)。我想向特定的分区 1 发送消息(添加分区 ID 或在我的消息中指定一个键)。假设分区 1 已满磁盘,是否会为此消息选择替代分区(在本例中为分区 2 或 3)?
【问题讨论】:
标签: apache-kafka kafka-topic kafka-partition
磁盘耗尽的不是主题,而是整个代理。如果代理用完磁盘,它将自行关闭,您将无法向其发送或接收数据。
当您专门指向一个分区时,它现在取决于您的复制因子值是否大于 1。如果您复制了主题分区,则分区领导者将从死代理切换到另一个代理有一个分区同步。
如果您的复制不超过 1 个,您的生产者最终会收到 OutOfMemory 错误,并且它没有生成到备用分区 2 或 3 的数据。
为确保这种情况永远不会发生,您可以应用 Kafka 中可用的基于卷的保留策略,如果您将 cleanup.policy 设置为删除并设置 retention.bytes,这样您就不会使用主题/副本的数量超出您的存储限制。
【讨论】: