【问题标题】:Kafka Connect and StreamsKafka 连接和流
【发布时间】:2019-03-10 22:54:08
【问题描述】:

所以我最近开始阅读有关 Kafka 的内容,我对 Kafka Connect 和 Kafka Streams 之间的区别感到有些困惑。 根据定义 Kafka Streams 可以从 Kafka 主题收集数据,对其进行处理并将输出推送到另一个 Kafka 主题。 Kafka Connect 将大型数据集移入和移出 Kafka。

我的问题是,为什么我们需要 Kafka Connect 能够读取、处理数据并将其推送到主题?为什么要增加一个组件? 如果有人可以解释其中的区别,那就太好了 在此先感谢:)

【问题讨论】:

    标签: apache-kafka apache-kafka-streams apache-kafka-connect


    【解决方案1】:

    Kafka StreamsApache Kafka 的流处理库。因此,您可以构建流式应用程序,从/向 Kafka 主题读取/写入数据。这是一个通用库。

    另一方面,Kafka Connect 是一个“数据集成”框架。通常您使用 Kafka Connect 将数据从一些数据系统(如关系数据库)导入到一些 Kafka 主题中。您也可以使用相同的框架进行数据导出。

    有很多用于不同数据存储系统的连接器:HDFS、关系数据库、ElasticSearch 等等。

    使用这两个组件(Kafka Connect、Kafka Streams)的可能场景之一是:

    从关系数据库中不断将数据导入 Kafka 主题。使用 Kafka Streams 应用程序处理该数据,该应用程序将结果写入某个输出主题。使用 Kafka Connect 将该输出主题中的数据导出到 ElasticSearch。

    [1] 这篇博文很好地概述了这两种技术的结合:https://www.confluent.io/blog/hello-world-kafka-connect-kafka-streams/

    【讨论】:

      【解决方案2】:

      Kafka 连接:由于 Kafka 充当数据中心(标准),因此 kafka 必须连接到世界上的整个数据源并导入数据。这些都具有相同的行为,所以如果我们为此目的有一个共同的框架和标准。它将非常有用和干净。这就是卡夫卡连接在这里的原因。它只是桥梁。这里不会发生数据转换。因为它不是为了那个目的。

      Kafka Streams:专为数据转换而设计。因此,所有与计算相关的库都将在此处提供。

      【讨论】:

        【解决方案3】:

        Kafka Connect 不应该用于比选择字段更广泛的过滤和更大的数据转换。 Kafka 峰会上有关于何时不使用简单消息转换 (SMT) 的演讲

        Kafka Streams 可以嵌入到任何 Java 应用程序中,作为一种内存 KV 存储供应用程序使用。例如,可以编写一个 Web 应用程序并使用 KTable 作为由 Kafka 备份的数据库。否则,它只是比生产者和消费者更高级别的库,但仅限于处理单个 Kafka 集群数据。 KSQL 是在此之上的附加层。

        另一方面,Kafka Connect(虽然可能是嵌入的;请参阅 Debezium 嵌入模式),意味着更加“放手” - 如果存在连接器,那么您所需要的只是配置文件,而不是自己编写任何代码

        【讨论】:

          猜你喜欢
          • 2020-08-09
          • 1970-01-01
          • 1970-01-01
          • 2021-10-07
          • 2020-06-23
          • 2019-03-12
          • 2022-10-17
          • 2021-12-20
          • 1970-01-01
          相关资源
          最近更新 更多