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 只有在成功写入每个分区的副本时,才能成功写入卡夫卡主题吗?_Apache Kafka_Kafka Producer Api_Kafka Partition - Fatal编程技术网

Apache kafka 只有在成功写入每个分区的副本时,才能成功写入卡夫卡主题吗?

Apache kafka 只有在成功写入每个分区的副本时,才能成功写入卡夫卡主题吗?,apache-kafka,kafka-producer-api,kafka-partition,Apache Kafka,Kafka Producer Api,Kafka Partition,只有在成功写入每个分区的副本时,才能成功写入卡夫卡主题吗?或者是否可以配置仲裁 假设你有 制作人 带有Topic1分区1标题的服务器1 带有Topic1分区1 replica的服务器2 带有Topic1分区1 replica的服务器3 制片人致函主题1。仅当从领导者和两个副本接收到确认时,才存储消息是一项规则吗?或者可以配置quorum:only leader吗?如果我正确理解您的问题,您正在寻找名为acks的生产者API的配置 确认:制作人要求领导者在考虑请求完成之前收到的确认数量。这将控制发

只有在成功写入每个分区的副本时,才能成功写入卡夫卡主题吗?或者是否可以配置仲裁

假设你有

制作人 带有Topic1分区1标题的服务器1 带有Topic1分区1 replica的服务器2 带有Topic1分区1 replica的服务器3
制片人致函主题1。仅当从领导者和两个副本接收到确认时,才存储消息是一项规则吗?或者可以配置quorum:only leader吗?

如果我正确理解您的问题,您正在寻找名为acks的生产者API的配置

确认:制作人要求领导者在考虑请求完成之前收到的确认数量。这将控制发送的记录的持久性。允许以下设置:


acks=0如果设置为零,则生产者根本不会等待来自服务器的任何确认。该记录将立即添加到套接字缓冲区并被视为已发送。在这种情况下,无法保证服务器已收到记录,重试配置将不会生效,因为客户端通常不知道任何故障。为每条记录返回的偏移量将始终设置为-1

acks=1这意味着领导者将把记录写入其本地日志,但将在不等待所有追随者的完全确认的情况下做出响应。在这种情况下,如果领导者在确认记录后立即失败,但在追随者复制记录之前,记录将丢失

acks=所有这一切意味着领导者将等待全套同步副本确认记录。这保证了只要至少有一个同步副本保持活动状态,记录就不会丢失。这是最有力的保证。这相当于acks=-1设置

类型:stringDefault:1有效值:[all,-1,0,1]重要性:高


查看Producer API以了解更多详细信息。

如果我正确理解了您的问题,您正在查找名为acks的Producer API的配置

确认:制作人要求领导者在考虑请求完成之前收到的确认数量。这将控制发送的记录的持久性。允许以下设置:


acks=0如果设置为零,则生产者根本不会等待来自服务器的任何确认。该记录将立即添加到套接字缓冲区并被视为已发送。在这种情况下,无法保证服务器已收到记录,重试配置将不会生效,因为客户端通常不知道任何故障。为每条记录返回的偏移量将始终设置为-1

acks=1这意味着领导者将把记录写入其本地日志,但将在不等待所有追随者的完全确认的情况下做出响应。在这种情况下,如果领导者在确认记录后立即失败,但在追随者复制记录之前,记录将丢失

acks=所有这一切意味着领导者将等待全套同步副本确认记录。这保证了只要至少有一个同步副本保持活动状态,记录就不会丢失。这是最有力的保证。这相当于acks=-1设置

类型:stringDefault:1有效值:[all,-1,0,1]重要性:高


查看生产者API以了解更多详细信息。

除了ACK之外,还有一个问题,即消费者何时可以看到消息-这独立于生产者的ACK,取决于代理配置-如果所有追随者都同步收到消息,则会发生这种情况。如果有任何延迟,则是min.insync.replicas收到消息时。关于这一点,我在

上写过一点,除了ACK之外,还有一个问题,即消息何时对消费者可见——这与生产者的ACK无关,取决于代理配置——当所有追随者都收到消息时,如果他们是同步的,就会发生这种情况。如果有任何延迟,则是min.insync.replicas收到消息时。我在

上写了一些关于这一点的内容,每条记录的偏移量总是设置为-1-偏移量是给制作者的,而不是给消费者的吗?是的,没有可以给制作者的偏移量,因为acks=0是触发和遗忘模式。由于生产者没有等待写入的代理响应,代理无法返回新的偏移量。是否可以配置仲裁?e、 g.假设5个副本,仲裁=3?这是一个有趣的问题。acks配置无法完成此操作,仅允许值0、1和所有值。我不知道如何做5分之3。你为什么想要/需要这样做?我的观点是,我认为你永远不会需要它作为一种要求
T通常,拥有副本需要的是一致性/耐久性,这是当前选项提供的。Quorum易受大脑分裂情况的影响,因此除非真的有必要,否则应避免使用。每条记录返回的偏移量将始终设置为-1-是否将偏移量提供给制作者,而不是消费者?是的,当acks=0为触发和遗忘模式时,无法将偏移量返回给制作者。由于生产者没有等待写入的代理响应,代理无法返回新的偏移量。是否可以配置仲裁?e、 g.假设5个副本,仲裁=3?这是一个有趣的问题。acks配置无法完成此操作,仅允许值0、1和所有值。我不知道如何做5分之3。你为什么想要/需要这样做?我的观点是,我认为你永远不会需要它作为一项要求。通常,拥有副本需要的是一致性/耐久性,这是当前选项提供的。Quorum易受大脑分裂情况的影响,因此除非确实必要,否则应避免使用。