4

我在我的 Windows 机器上运行 Apache Kafka,有两个 Kafka-Connect-Workers(端口 8083、8084)和一个带有三个分区的主题(一个复制)。我的问题是,每当我关闭其中一个 Kafka-Connect 工作人员时,我都能看到故障转移到其他工作人员,但由于任务数始终为 ONE,因此没有发生负载平衡。我使用官方 MongoDB-Kafka-Connector 作为 Source(ChangeStream),tasks.max=6。我尝试使用多个线程更新 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" } 我在这里遗漏了什么吗?为什么没有创建更多任务?

4

1 回答 1

3

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

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

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

于 2020-07-10T10:31:56.820 回答