【问题标题】:Kafka streams fundamentals explanationKafka 流基础解释
【发布时间】:2019-05-22 17:31:03
【问题描述】:

我对 Kafka 流及其工作方式有一些疑问,我对一般 Kafka 消费者和生产者范式有经验,但是,这是我第一次尝试使用 Kafka 流。

问题:

  1. 在一般的 Kafka 消费者模型中,我们订阅一个主题并从一个分区开始消费,为了简单起见,假设我们有 1 个分区和 1 个消费者,现在如果我们想增加我们的处理能力,我们会增加分区的数量并另外添加更多消费者,这在 Kafka Streams 中如何工作,如果我们增加分区,我们应该如何扩展应用程序,我们需要添加更多机器还是需要做其他事情?
  2. 当我通过 Kafka 消费者使用数据时,我最终可能会对消息进行处理,例如,我可能会查询 API 下载文件并写入 NFS 并转发消息或将传入消息值写入数据库,然后将通知转发到另一个 Kafka 主题,如何解决相同的用例,我们没有遵循 KAFKA -> KAFKA 的范例,而是使用 KAFKA -> PROCESS(STORE IN DB) -> KAFKA,Kafka Streams 甚至可以解决这个用例吗?
  3. 最后,如何处理异常以及如何管理偏移量。在一个不断运行的生产系统中,有源源不断的消息流来,如果出现任何异常,比如由于任何网络中断,我们会关闭消费者并进行清理启动。如何使用 Kafka Stream 处理应用实现相同的功能?

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:
    1. 消费者 API 仍在以完全相同的方式在幕后工作。要回答这个问题 - 您启动更多正在运行的应用程序实例;这些不一定必须在完全不同的服务器上

    2. 不建议使用 Kafka Streams 进行不限于Kafka-Kafka 交互的远程工作。至少在不接受这会引入延迟的情况下,例如,在进行依赖于时间窗口的主题连接时不应该这样做。 Kafka Connect 可以成为您将数据从主题获取到数据库的系统

    3. 同样,Kafka Streams 只是生产者/消费者 API 之上的一层。您仍然会遇到相同的网络异常,或者如果您读取了损坏的记录,则有 options for handling poison pill records

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      相关资源
      最近更新 更多