我需要了解何时使用 Kafka 连接与 由开发人员编写的自己的消费者/生产者。我们正在获得Confluent平台。同样为了实现容错设计,我们是否必须从所有代理运行消费者/生产者代码(jar文件(?
Kafka connect 通常用于将外部源连接到 Kafka,即从Kafka生成/消费外部源。
您可以使用连接器执行的任何操作都可以通过以下方式完成 生产者+消费者
现成的连接器只能简化将外部源连接到 Kafka,而无需开发人员编写低级代码。
要记住的几点..
- 如果源和接收器都是同一个 Kafka 群集,则连接器没有意义
- 如果要从数据库执行更改数据捕获 (CDC( 并将其推送到 Kafka,则可以使用数据库源连接器。
- 资源约束:Kafka 连接是一个单独的过程。因此,请仔细检查您可以在资源和易于开发之间进行权衡。
- 如果您正在编写自己的连接器,则很好,除非有人尚未编写它。如果您使用的是第三方连接器,则需要检查它们的维护情况和/或是否提供支持。
我们是否必须从所有代理运行消费者/生产者代码(jar文件(?
不要在代理上运行客户端代码。让所有内存和磁盘访问都保留给代理进程。
何时使用卡夫卡连接与自己的消费者/产品
根据我的经验,应该考虑这些因素
- 无论如何,您都计划部署和监视 Kafka Connect,并且拥有执行此操作的可用资源。同样,这些不会在代理机器上运行
- 您不打算经常更改连接器代码,因为您必须重新启动整个连接器 JVM,这将运行不需要重新启动的其他连接器
- 您无法将自己的生产者/消费者代码集成到现有应用程序中,或者只是宁愿拥有更简单的生产/消费循环
- 最好不要使用与特定二进制格式绑定的结构化数据
- 编写自己的连接器或使用社区连接器已经过充分测试,并可针对您的用例进行配置
与原始生产者/消费者 API 相比,Connect 的容错选项有限,缺点是代码更多,具体取决于使用的其他库
注意:Conflut 平台还是同一个 Apache Kafka
Kafka Connect:Kafka Connect是一个开源平台,基本上包含两种类型:Sink和Source。Kafka Connect 用于从 Kafka获取/放入数据库的数据。Kafka 连接有助于将各种其他系统与 Kafka 一起使用。它还有助于跟踪从数据库到Kafka的更改(如更改数据捕获(CDC(答案之一中所述(。系统维护偏移量,以便从该特定偏移量读取/写入 Kafka 或任何其他数据库的数据。
有关更多详细信息,您可以参考 https://docs.confluent.io/current/connect/index.html
生产者/消费者:
生产者和消费者只是一个终端系统,它使用Kafka来生产和消费Kafka的主题。它们用于我们希望将数据广播给消费者组中的各种消费者的地方。这种系统还为消费者群体维护了数据的滞后和偏移。
不,在运行 Kafka connect 时不需要运行任何生产者/消费者。如果要检查没有数据丢失,可以在运行源连接器时运行使用者。对于接收器连接器,可以通过运行其特定的选择查询在数据库中验证已生成的数据。