Kafka Connect与接收器流

时间:2019-01-18 16:08:28

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

我试图了解Connect可以给您带来什么,而Streams却不能。我们在应用程序的一部分中希望消耗一个主题并写入mariadb。

我可以用一个简单的处理器来完成。阅读记录,存储在状态存储中,然后批量插入mariadb。

为什么这是个坏主意? JDBC Sink Connector会给您带来什么?

1 个答案:

答案 0 :(得分:3)

好问题!所有这些都是使用正确的工具完成工作。 Kafka Connect的特定用途是源系统和Kafka之间的流集成,或者从Kafka到其他系统(包括RDBMS)的流集成。

Kafka Connect给您带来什么?

  • 可扩展性;您可以部署多个工作人员,Kafka Connect将在他们之间分配任务
  • 弹性;如果某个节点发生故障,Kafka Connect将在另一个工作线程上重新开始工作
  • 易于使用;连接器适用于多种技术,因此实现连接器通常仅需要几行JSON
  • 模式管理;支持JSON中的模式,与用于Avro的Schema Registry完全集成,来自Protobuf社区的可插拔转换器
  • 通过单消息转换进行内联转换
  • 针对所有集成任务的统一,集中式管理和配置

这并不是说您不能在Kafka Streams中执行此操作,但是当Kafka为您提供开箱即用的代码时,您最终将不得不自己编写很多代码连接。您可以可以使用Consumer API和一堆定制代码来执行Kafka Streams API给您的流处理,类似地,您可以使用Kafka Streams来获取数据从Kafka主题存储到数据库中-但是为什么呢?

如果需要在将数据发送到接收器之前进行转换,则建议的模式是将转换与发送分离。在Kafka Streams(或KSQL)中转换数据,并将其写回到另一个Kafka主题。使用Kafka Connect收听该新主题,并将转换后的消息写入目标接收器。