Apache kafka 当一个分区关闭时,Kafka生产者是否将无键消息写入另一个分区?
Apache kafka 当一个分区关闭时,Kafka生产者是否将无键消息写入另一个分区?,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,例如,我有一个有2个分区的主题,一个生产者使用defaultpartitioner(我假设的循环)写入该主题。在某个时候,分区1变得不可用,因为所有副本代理都脱机。假设消息没有指定的密钥,生产者会将消息重新发送到分区2吗?或者只是被卡住了?这是一个有趣的问题,我们应该从更广泛(集群)的角度来看待它
在某个时候,分区1变得不可用,因为所有副本代理都脱机
我看到以下情况:
分区1的所有副本代理与分区2的副本代理不同
分区1的所有副本代理与分区2的相同
某些副本代理与分区2相同
在场景“1”中,这意味
例如,我有一个有2个分区的主题,一个生产者使用defaultpartitioner(我假设的循环)写入该主题。在某个时候,分区1变得不可用,因为所有副本代理都脱机。假设消息没有指定的密钥,生产者会将消息重新发送到分区2吗?或者只是被卡住了?这是一个有趣的问题,我们应该从更广泛(集群)的角度来看待它
在某个时候,分区1变得不可用,因为所有副本代理都脱机
我看到以下情况:
分区1的所有副本代理与分区2的副本代理不同
分区1的所有副本代理与分区2的相同
某些副本代理与分区2相同
在场景“1”中,这意味着您仍然有足够多的代理处于活动状态,因为复制因素是一个主题范围,而不是基于分区的配置。在这种情况下,一旦第一个代理停止,它的数据将被移动到另一个代理,以确保分区始终有足够的同步副本
在场景“2”中,两个分区都不可用,您的KafkaProducer最终将超时。现在,这取决于是否有其他代理处于活动状态,并且可以接收分区的数据
在场景“3”中,死亡副本将转移到正在运行的代理。在此期间,KafkaProducer将只写入分区2,因为这是主题中唯一可用的分区。一旦分区1具有足够的同步副本,生产者将再次开始为两个分区生成副本
事实上,我可以想出更多的场景。如果你需要一个更具体的答案,你需要具体说明
- 你有多少经纪人
- 您的复制因子实际上是什么,以及
- 哪个经纪人以什么样的时间顺序下跌
假设消息没有指定的密钥,生产者会将消息重新发送到分区2吗
KafkaProducer不会将以前发送到分区1的数据重新发送到分区2。写入分区1的内容将保留在分区1中。这是一个有趣的问题,我们应该从更广泛(集群)的角度来看待它
在某个时候,分区1变得不可用,因为所有副本代理都脱机
我看到以下情况:
分区1的所有副本代理与分区2的副本代理不同
分区1的所有副本代理与分区2的相同
某些副本代理与分区2相同
在场景“1”中,这意味着您仍然有足够多的代理处于活动状态,因为复制因素是一个主题范围,而不是基于分区的配置。在这种情况下,一旦第一个代理停止,它的数据将被移动到另一个代理,以确保分区始终有足够的同步副本
在场景“2”中,两个分区都不可用,您的KafkaProducer最终将超时。现在,这取决于是否有其他代理处于活动状态,并且可以接收分区的数据
在场景“3”中,死亡副本将转移到正在运行的代理。在此期间,KafkaProducer将只写入分区2,因为这是主题中唯一可用的分区。一旦分区1具有足够的同步副本,生产者将再次开始为两个分区生成副本
事实上,我可以想出更多的场景。如果你需要一个更具体的答案,你需要具体说明
- 你有多少经纪人
- 您的复制因子实际上是什么,以及
- 哪个经纪人以什么样的时间顺序下跌
假设消息没有指定的密钥,生产者会将消息重新发送到分区2吗
KafkaProducer不会将以前发送到分区1的数据重新发送到分区2。写入分区1的内容将保留在分区1中