我在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"
}
我在这里想念什么吗?为什么不创建更多任务?
答案 0 :(得分:0)
这似乎是MongoDB Kafka官方源连接器的行为。这是我在Ross Lawley(MongoDB开发人员)的另一个论坛上得到的答案:
在1.2.0之前,接收器连接器仅支持单个任务。 源连接器仍仅支持单个任务,这是因为它使用单个Change Stream游标。这足以监视和发布群集范围,数据库范围或单个集合中的更改。
我举了这张票:https://jira.mongodb.org/browse/KAFKA-121 得到以下回应: 源连接器将仅产生单个任务。 这是设计使然,因为更改流支持源连接器。变更流在内部使用与复制引擎相同的数据,因此应该能够像数据库那样扩展。 没有计划允许多个游标,但是,如果您认为这不符合您的要求,则可以配置多个连接器,每个连接器都有自己的更改流游标。