Apache kafka 我们所说的'是什么意思;提交';卡夫卡经纪人中的数据?

Apache kafka 我们所说的'是什么意思;提交';卡夫卡经纪人中的数据?,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,在包含N个代理的Kafka集群中,对于针对分区的主题T,生产者将数据发布到Leader代理。卡夫卡术语中的“提交”一词是指数据在Leader broker中提交,还是将数据提交给Leader broker以及ISR列表中可用的相应关注者。这由所谓的ack控制: acks=0如果设置为零,则制作者根本不会等待服务器的任何确认。该记录将立即添加到套接字缓冲区并被视为已发送。在这种情况下,无法保证服务器已收到记录,重试配置将不会生效(因为客户端通常不知道任何故障)。为每条记录返回的偏移量将始终设置为

在包含N个代理的Kafka集群中,对于针对分区的主题T,生产者将数据发布到Leader代理。卡夫卡术语中的“提交”一词是指数据在Leader broker中提交,还是将数据提交给Leader broker以及ISR列表中可用的相应关注者。

这由所谓的
ack
控制:

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

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

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


谢谢。我没有从制片人的角度考虑任何事情。如果我将数据从我的应用服务器发送到Kafka brokers,什么时候可以将数据视为已提交?。通过提交方式,数据被刷新到代理的磁盘上。如果acks=0(在我的例子中),如果数据写入Leader broker磁盘,它会被视为已提交吗?“我没有从生产者的角度考虑任何事情”我不理解你的问题。“已提交”是指代理向生产者确认它已存储消息。生产商可以决定它想要的耐用性级别。如果“acks=0”,您将无法获得任何耐用性保证。制作人在发送网络数据包的时候就已经结束了。这是很有价值的信息,但我认为它也没有地址
commit
。在API中,
commit()
使用者
上的一个函数。据我所知,提交与消费者是否将某封邮件/偏移标记为“已处理”有关。啊,我明白了,谢谢。那么“卡夫卡中‘提交’是什么意思”的答案应该是“不是OP的意思”;)。