Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 当一个分区关闭时,Kafka生产者是否将无键消息写入另一个分区?_Apache Kafka_Kafka Producer Api - Fatal编程技术网

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中