Kafka Connect中的连接器和任务之间是什么关系? [英] What is the relationship between connectors and tasks in Kafka Connect?

查看:18
本文介绍了Kafka Connect中的连接器和任务之间是什么关系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们在一个项目上使用Kafka Connect已经有一段时间了,目前完全只使用Confluent Kafka Connect JDBC connector。我很难理解"任务"在Kafka Connect中的作用,特别是这个连接器。我理解"连接器";它们包含一系列关于特定源/宿的配置以及它们所连接的源/目标主题。我了解连接器和任务之间存在1:Many关系,以及任务用于并行化工作的一般原则。但是,我们如何了解连接器何时将/可能创建多个任务?

  • 在源连接器的情况下,我们使用JDBC连接器按时间戳和/或主键来拾取源数据,因此这看起来是非常自然的顺序。事实上,我们所有的源连接器似乎只有一个任务。什么会触发Kafka Connect创建多个连接器?当前我们在distributed mode中运行Kafka Connect,但只有一个Worker;如果我们有多个Worker,我们是否会在每个连接器上获得多个任务,或者这两个任务是否不相关?

  • 在接收器连接器的情况下,我们使用tasks.max=1显式配置每个接收器连接器,因此毫不奇怪,我们也只看到每个连接器有一个任务。如果我们删除该配置,我们大概可以/将获得多个任务。这是否意味着我们输入主题上的消息可能会被无序使用?在这种情况下,如何确保更改的数据一致性?

此外,我们还经常看到单个连接器和任务同时进入失败状态的情况(由于输入连接问题)。重新启动任务将使其脱离此状态,并重新启动数据流,但连接器仍处于失败状态。这怎么可能--连接器的状态不就是其所有子任务的集合吗?

推荐答案

任务是执行实际数据来源或接收的线程。

每个连接器的任务数由连接器的实现确定。以MySQL的Debezium源连接器为例,由于一个MySQL实例一次只能写入一个binlog文件,并且必须按顺序读取一个文件,因此一个连接器只能生成一个任务。

而对于接收器连接器,任务数应等于主题的分区数。

员工之间的任务分配由任务重新平衡决定,这与Kafka消费者组重新平衡的过程非常相似。

这篇关于Kafka Connect中的连接器和任务之间是什么关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆