【问题标题】:Why is there no Async / Non-Blocking Support in Kafka Streams API?为什么 Kafka Streams API 中没有异步/非阻塞支持?
【发布时间】:2019-06-03 11:55:01
【问题描述】:

我想知道为什么 Kafka Stream API 中没有通过简单回调或 Java 的 CompletableFuture 或 Scala Futures 提供非阻塞支持。

我知道需要维护分区中的排序,但是跨分区我看不出通过阻塞昂贵的资源来实现排序的原因:线程。

即当我让我的 Kafka Streams 应用程序调用外部服务时,例如在 mapValues 在 1 个服务器上运行并且我有超过数千个分区,我可能会锁定机器,因为所有线程都被阻塞。在这里有一些像 mapValuesAsync() 这样的 API 方法会很好,不是吗?

还可以想象一下,在 Kafka Stream App 上,在其流程中执行多个阻塞操作,每个主题需要更少的分区才能遇到问题。在这里浪费线程看起来不是一个好的 API 设计。

是否计划为此提供任何支持?还是我在这里监督一些事情?

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    异步处理在流处理中通常很难。这不仅仅是关于排序,还有关于容错、跟踪进度等。

    虽然支持也不是不可能,事实上已经有设计方案了:https://cwiki.apache.org/confluence/display/KAFKA/KIP-408%3A+Add+Asynchronous+Processing+To+Kafka+Streams

    随时帮助构建此功能!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-15
      • 2015-03-09
      • 2018-04-06
      • 2014-06-24
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2011-05-02
      相关资源
      最近更新 更多