Kafka Connect 与 Streams for Sinks
Kafka Connect vs Streams for Sinks
我想了解 Connect 为您带来了什么,而 Streams 没有。我们有一部分应用程序想要使用主题并写入 mariadb。
我可以用一个简单的处理器完成这个。读取记录,存储在状态存储中,然后批量插入到 mariadb 中。
为什么这是个坏主意? JDBC Sink Connector 给你带来了什么?
好问题!这一切都是关于为工作使用正确的工具。 Kafka Connect 的具体目的是在源系统和 Kafka 之间进行流式集成,或者从 Kafka 到其他系统(包括 RDBMS)。
Kafka Connect 给你什么?
- 可扩展性;您可以部署多个工作人员,Kafka Connect 将在他们之间分配任务
- 韧性;如果一个节点发生故障,Kafka Connect 将在另一个工作节点上重新启动工作
- 易于使用;存在多种技术的连接器,因此实现连接器通常只需要几行 JSON
- 模式管理;支持 JSON 中的模式,与 Avro 的模式注册表完全集成,Protobuf
社区的可插拔转换器
- 单消息转换的内联转换
- 所有集成任务的统一和集中管理和配置
这并不是说您不能在 Kafka Streams 中执行此操作,但是当它由Kafka Connect 为您准备的盒子。以同样的方式,你 可以 使用消费者 API 和一堆定制代码来进行 Kafka Streams API 给你的流处理,同样你 可以 使用 Kafka Streams 将 Kafka 主题中的数据导入数据库——但你为什么要这么做?
如果您需要在将数据发送到接收器之前转换数据,那么推荐的模式是将转换与发送分离。转换 Kafka Streams(或 KSQL)中的数据并将其写回另一个 Kafka 主题。使用 Kafka Connect 收听该新主题并将转换后的消息写入目标接收器。
我想了解 Connect 为您带来了什么,而 Streams 没有。我们有一部分应用程序想要使用主题并写入 mariadb。
我可以用一个简单的处理器完成这个。读取记录,存储在状态存储中,然后批量插入到 mariadb 中。
为什么这是个坏主意? JDBC Sink Connector 给你带来了什么?
好问题!这一切都是关于为工作使用正确的工具。 Kafka Connect 的具体目的是在源系统和 Kafka 之间进行流式集成,或者从 Kafka 到其他系统(包括 RDBMS)。
Kafka Connect 给你什么?
- 可扩展性;您可以部署多个工作人员,Kafka Connect 将在他们之间分配任务
- 韧性;如果一个节点发生故障,Kafka Connect 将在另一个工作节点上重新启动工作
- 易于使用;存在多种技术的连接器,因此实现连接器通常只需要几行 JSON
- 模式管理;支持 JSON 中的模式,与 Avro 的模式注册表完全集成,Protobuf 社区的可插拔转换器
- 单消息转换的内联转换
- 所有集成任务的统一和集中管理和配置
这并不是说您不能在 Kafka Streams 中执行此操作,但是当它由Kafka Connect 为您准备的盒子。以同样的方式,你 可以 使用消费者 API 和一堆定制代码来进行 Kafka Streams API 给你的流处理,同样你 可以 使用 Kafka Streams 将 Kafka 主题中的数据导入数据库——但你为什么要这么做?
如果您需要在将数据发送到接收器之前转换数据,那么推荐的模式是将转换与发送分离。转换 Kafka Streams(或 KSQL)中的数据并将其写回另一个 Kafka 主题。使用 Kafka Connect 收听该新主题并将转换后的消息写入目标接收器。