具有多个任务的分布式官方Mongodb Kafka源连接器不起作用

时间:2020-07-06 17:10:58

标签: mongodb apache-kafka apache-kafka-connect changestream mongodb-kafka-connector

我在Windows机器上运行Apache Kafka,其中有两个Kafka-Connect-Workers(端口8083、8084)和一个带有三个分区的主题(一个副本)。 我的问题是,每当我关闭其中一个时,我都能看到故障转移到其他Kafka-Connect工作程序,但是由于任务数始终为一,因此没有发生负载平衡。 我正在使用官方的MongoDB-Kafka-Connector作为具有task.max = 6的Source(ChangeStream)。 我尝试使用多个线程更新MongoDB,以便它将更多数据推送到Kafka-Connect中,并可能使Kafka-Connect创建更多任务。即使在数据量较大的情况下,任务计数仍将保持不变。

如何确认只有一项任务正在运行?通过api“ http:// localhost:8083 / connectors / mongodb-connector / status”: 响应: { "name":"mongodb-connector", "connector": { "state":"RUNNING", "worker_id":"xx.xx.xx.xx:8083" } "tasks": [ { "id": 0, "state": "RUNNING" "worker_id": "xx.xx.xx.xx:8083" } ], "type": "source" } 我在这里想念什么吗?为什么不创建更多任务?

1 个答案:

答案 0 :(得分:0)

这似乎是MongoDB Kafka官方源连接器的行为。这是我在Ross Lawley(MongoDB开发人员)的另一个论坛上得到的答案:

在1.2.0之前,接收器连接器仅支持单个任务。 源连接器仍仅支持单个任务,这是因为它使用单个Change Stream游标。这足以监视和发布群集范围,数据库范围或单个集合中的更改。

我举了这张票:https://jira.mongodb.org/browse/KAFKA-121 得到以下回应: 源连接器将仅产生单个任务。 这是设计使然,因为更改流支持源连接器。变更流在内部使用与复制引擎相同的数据,因此应该能够像数据库那样扩展。 没有计划允许多个游标,但是,如果您认为这不符合您的要求,则可以配置多个连接器,每个连接器都有自己的更改流游标。