我在我的windows机器上运行apachekafka,有两个kafka connect worker(端口8083、8084),一个主题有三个分区(一个分区的复制)。我的问题是,每当我关闭其中一个kafka connect worker时,我都能够看到故障转移到另一个kafka connect worker,但是负载平衡没有发生,因为任务数总是一个。我使用官方的mongodbkafka连接器作为tasks.max=6的源(changestream)。我尝试用多个线程更新mongodb,这样它就可以将更多的数据推入kafka connect,并可能使kafka connect创建更多的任务。即使在数据量较大的情况下,任务数仍然是1。
我如何确认只有一个任务正在运行?“通过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条答案
按热度按时间qxgroojn1#
看来这是官方mongodbKafka源码连接器的行为。这是我在另一个论坛上从ross lawley(mongodb开发者)那里得到的答案:
在1.2.0之前,接收器连接器只支持单个任务。源连接器仍然只支持单个任务,这是因为它使用单个变更流游标。这足以监视和发布集群范围、数据库范围或下至单个集合的更改。
我开了这张罚单:https://jira.mongodb.org/browse/kafka-121 得到以下响应:源连接器将只生成一个任务。这是设计上的,因为源连接器由变更流支持。更改流在内部使用的数据与复制引擎使用的数据相同,因此应该能够像数据库那样进行扩展。没有允许多个游标的计划,但是,如果您觉得这不符合您的需求,那么您可以配置多个连接器,每个连接器都有自己的变更流游标。