我们已经在一个项目上使用了一段时间的Kafka,目前只使用凝聚式Kafka连接JDBC连接器。我很难理解“任务”在Kafka中的作用,特别是这个连接器。我理解“连接器”;它们包含一组关于特定源/接收器的配置,以及它们连接到的主题。我理解连接器和任务之间存在着1:Many关系,以及任务用于并行化工作的一般原则。但是,我们如何理解连接器何时会/可能创建多个任务?
tasks.max=1显式地配置每个接收器连接器,因此毫不奇怪,我们也只看到了每个连接器的一个任务。如果我们删除了该配置,那么我们可以/将得到多个任务。这是否意味着我们输入主题上的消息可能会被按顺序消耗?在这种情况下,如何确保更改的数据一致性?此外,我们还不时地看到单个连接器和任务都将进入失败状态(因为输入连接问题)。重新启动任务将从此状态中移除它,并重新启动数据流,但连接器仍处于失败状态。这怎么可能--难道连接器的状态不是所有子任务的总和吗?
发布于 2021-05-08 11:20:20
任务是执行数据的实际来源或下沉的线程。
每个连接器的任务数由连接器的实现决定。以德贝兹源连接器到MySQL为例,因为一个MySQL实例一次正好写入一个binlog文件,并且必须按顺序读取一个文件,因此一个连接器只生成一个任务。
对于接收器连接器,任务的数量应该等于主题的分区数。
工人之间的任务分配是由任务再平衡决定的,这是一个与卡夫卡消费者群体再平衡非常相似的过程。
https://stackoverflow.com/questions/67265075
复制相似问题