我只是一个Kafka的新手,对Kafka生产者的幂等性学了一点知识。
根据我的理解,当生产者向代理发送消息时,代理需要向生产者发回一个ACK来告诉它消息已经收到。如果生产者由于某种原因没有接收到ACK,生产者必须再次向代理发送相同的消息,以便复制该消息。而幂等生成器可以消除这个问题。
基本上,每个生产者将被分配一个PID,每个消息将被分配一个序列号。所以PID+序列号可以识别一条消息。Kafka的理想化就是这样运作的。
在某个时刻,生成器正在向分区a发送消息X,a成功地接收到X,但在发送ACK时失败。因此生产者重新发送消息X。
它将是分区a或分区b,哪个将接收最新的消息X?
重新发送是在内部完成的,我们不在应用程序代码中完成。因此,当发送到分区a
的消息X
没有收到确认时,它将被重新发送到同一个分区。如果我们手动对应用程序代码进行重发,那么是的,会有重复的。
我正在浏览文档,我知道通过启用 幂等性:幂等生成函数对一个主题对一个生成函数只启用一次。基本上,每一条消息发送都有更高的保证,并且在出现错误时不会重复 那么,如果我们已经有幂等性,那么为什么我们需要在Kafka Stream中另一个恰好一次的属性呢?幂等性和恰好一次之间有什么区别 为什么在普通Kafka制作人中不提供一次房产?
Kafka文件说,幂等生产者是可能的,与相同的生产者会话,我无法理解这一点。 比方说,Kafka为每条消息添加序列号,最后一个序列号在Kafka中维护(不确定它维护在哪里)。 它是如何生成序列号的,它保存在哪里? 为什么当制作人崩溃并再次出现时,它不能保持序列? 我怎样才能使它在制作人会话之间真正幂等?
一、 我正试图用Kafka信源和信宿测试Flink一次语义: 运行flink应用程序,只需将消息从一个主题传输到另一个主题,并行度=1,检查点间隔20秒 每2秒使用Python脚本生成具有递增整数的消息。 使用read_committed隔离级别的控制台使用者读取输出主题。 手动杀死TaskManager 我希望在输出主题中看到单调递增的整数,而不考虑TaskManager的终止和恢复。 但实际上
我在应用程序中使用了Kafka 1.0.1,我已经开始使用0.11中引入的幂等生产者功能,在使用幂等生产者功能时,我很难理解排序保证。 我的生产者的配置是: 重试50次 根据文件: 重试 设置一个大于零的值将导致客户端重新发送任何记录,如果该记录的发送失败,可能会出现暂时性错误。请注意,此重试与客户端在收到错误后重新发送记录没有什么不同。允许在不设置最大值的情况下重试。航班请求。每连接到1可能会改
问题内容: 我有以下结构: 该方法 可以 被许多线程同时调用。该 会 抛出异常(它在后台,可能成为过时的使用一些数据)。 如果引发异常,则执行一些耗时的任务,比如说“更新”所有当前数据,并且我可以调用。 问题: 如何确保只调用 一次 ?如果我在的条目中放置了原子标志,则不能确定何时清除该标志。 我该如何解决?请注意:由于它是一个外部API,因此我无法修改,并且我正在使用装饰器模式来使用它。 问题答
我正在寻找Python的第n个根函数/算法,但在发布之前:没有整数根,见鬼 我从哪里至少可以获得一个指南,指导如何编程生成精确的/ 对于(第一个参数是数字,第二个参数是根深度(或其他内容))不返回或的函数。 编辑:所以,你给了我这个解决方案:,当我问这个问题时,我就知道了,但它不适用于,例如,。你不能用有理数来表示,因此给出了不正确的结果