gpt4 book ai didi

apache-kafka - 了解 Kafka Streams 中处理器实现中的事务

转载 作者:行者123 更新时间:2023-12-04 13:03:23 25 4
gpt4 key购买 nike

在使用 Kafka Streams 的处理器 API 时,我使用了这样的东西:

context.forward(key,value)
context.commit()

实际上,我在这里所做的是每分钟将状态从状态存储发送到接收器(在 init() 方法中使用 context.schedule())。我在这里不明白的是:
[Key,Value] 对我向前发送然后执行 commit() 取自 国营店 .它是根据我从 的特定逻辑聚合而成的许多 不连续 输入 [键,值] 对。每个这样的输出 [key,value] 对是 少数未排序的聚合 [key,value] 对来自输入(kafka 主题)。所以,我不明白 Kafka 集群和 Kafka Streams lib 如何知道原始输入 [key,value] 对与发送的最终输出 [key,value] 之间的相关性。如果 Kafka 不知道输入对和输出对之间的连接,它如何被事务包装(故障安全)。当我执行 context.commit() 时实际提交的是什么?谢谢!

最佳答案

详细解释所有这些超出了我在答案中可以写的内容。

基本上,如果提交事务,当前输入主题偏移量和对 Kafka 主题的所有写入都是以原子方式完成的。这意味着,在提交完成之前刷新所有挂起的写入。

事务不需要了解您的实际业务逻辑。他们只是将输入主题的进度跟踪与输出主题的写入“同步”。

我建议阅读相应的博客文章并在 Kafka 中观看有关 Exact-once 的讨论以获取更多详细信息:

  • 博客:https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
  • 博客:https://www.confluent.io/blog/enabling-exactly-kafka-streams/
  • 座谈:https://www.confluent.io/kafka-summit-nyc17/resource/#exactly-once-semantics_slide
  • 座谈:https://www.confluent.io/kafka-summit-sf17/resource/#Exactly-once-Stream-Processing-with-Kafka-Streams_slide

  • 顺便说一句:这是一个关于 Streams API 中手动提交的问题。你应该考虑一下: How to commit manually with Kafka Stream?

    关于apache-kafka - 了解 Kafka Streams 中处理器实现中的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48258730/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com