Распределенный официальный коннектор исходного кода Mongodb Kafka с несколькими задачами Не работает

Я запускаю Apache Kafka на своем компьютере с Windows с двумя Kafka-Connect-Workers (порт 8083, 8084) и одной темой с тремя разделами (репликация одного). Моя проблема в том, что я могу видеть переключение на другой рабочий Kafka-Connect всякий раз, когда я выключаю один из них, но балансировка нагрузки не происходит, потому что количество задач всегда ОДНО. Я использую официальный MongoDB-Kafka-Connector в качестве источника (ChangeStream) с tasks.max = 6. Я попытался обновить MongoDB с помощью нескольких потоков, чтобы он мог отправлять больше данных в Kafka-Connect и, возможно, мог заставить Kafka-Connect создавать больше задач. Даже при большем объеме данных количество задач остается единым.

Как я подтвердил, что выполняется только одна задача? Это через api http: // localhost: 8083 / connector / mongodb-connector / status: Response: { "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)


Похоже, это поведение официального коннектора MongoDB Kafka Source Connector. Это ответ, который я получил на другом форуме от Росс Лоули (разработчик MongoDB):

До 1.2.0 коннектор приемника поддерживал только одну задачу. Коннектор Source по-прежнему поддерживает только одну задачу, потому что он использует один курсор Change Stream. Этого достаточно, чтобы отслеживать и публиковать изменения в масштабе кластера, базы данных или до одной коллекции.

Я поднял этот билет: https://jira.mongodb.org/browse/KAFKA-121 Получил следующий ответ: Исходный соединитель всегда будет создавать только одну задачу. Это сделано намеренно, поскольку исходный соединитель поддерживается потоком изменений. Потоки изменений внутри используют те же данные, что и механизм репликации, и поэтому должны иметь возможность масштабирования, как и база данных. Не планируется разрешать использование нескольких курсоров, однако, если вы почувствуете, что это не соответствует вашим требованиям, вы можете настроить несколько соединителей, и каждый будет иметь свой собственный курсор потока изменений.

person Hamid    schedule 10.07.2020