Хобрук: Ваш путь к мастерству в программировании

Kafka-Connect: создание нового коннектора в распределенном режиме создает новую группу

В настоящее время я работаю с конфлюентной платформой 3.0.1. Я пытаюсь создать 2 соединителя для двух разных рабочих процессов, но при попытке создать новый соединитель создает для него новую группу.

Two connectors were created using below details:

1) POST http://devmetric.com:8083/connectors

{
    "name": "connector1",
    "config": {
        "connector.class": "com.xxx.kafka.connect.sink.DeliverySinkConnector",
        "tasks.max": "1",
        "topics": "dev.ps_primary_delivery",
        "elasticsearch.cluster.name": "ad_metrics_store",
        "elasticsearch.hosts": "devkafka1.com:9300",
        "elasticsearch.bulk.size": "100",
        "tenants": "tenant1"
    }
}

2) POST http://devkafka01.com:8083/connectors

{
    "name": "connector2",
    "config": {
        "connector.class": "com.xxx.kafka.connect.sink.DeliverySinkConnector",
        "tasks.max": "1",
        "topics": "dev.ps_primary_delivery",
        "elasticsearch.cluster.name": "ad_metrics_store",
        "elasticsearch.hosts": "devkafka.com:9300",
        "elasticsearch.bulk.size": "100",
        "tenants": "tenant1"
    }
}

Но оба они были созданы под разными идентификаторами группы. После этого я запросил существующие группы.

$ sh ./bin/kafka-consumer-groups --bootstrap-server devmetric.com:9091  --new-consumer  --list

Result was:
connect-connector2
connect-connector1

Эти группы были созданы Kafka connect автоматически и не были предоставлены мной. Я дал другой group.id в worker.properties. Но я хотел, чтобы оба коннектора находились в одной группе, чтобы они работали параллельно для обмена сообщениями. На данный момент у меня есть 1 миллион данных по теме «dev.ps_primary_delivery», и я хочу, чтобы оба коннектора получили по 0,5 миллиона каждый.

Пожалуйста, дайте мне знать, как это сделать.


Ответы:


1

Думаю, требуются некоторые пояснения ...

  1. group.id в файле worker.properties не относится к группам потребителей. Это «рабочая группа» - несколько рабочих в одной рабочей группе будут разделять работу между собой - поэтому, если один и тот же коннектор имеет много задач (например, коннектор JDBC имеет задачу для каждой таблицы), эти задачи будут распределены между всеми. рабочие в группе.

  2. У соединителей для раковины есть потребители, которые входят в группу потребителей. Group.id этой группы всегда "connect -" + имя коннектора. В вашем случае у вас есть «коннектор-коннектор1» и «коннектор-коннектор2» на основе имен ваших коннекторов. Это также означает, что два соединителя могут быть в одной группе только ... если они имеют одинаковое имя. Но имена уникальны, поэтому в одной группе не может быть двух соединителей. Причина в том ...

  3. Сами по себе коннекторы не получают событий, они просто запускают кучу задач. У каждой задачи есть потребители, которые являются частью группы потребителей соединителя, и каждая задача будет обрабатывать подмножество тем и разделов независимо. Таким образом, наличие двух соединителей в одной группе, по сути, означает, что все их задачи являются частью одной группы - так зачем вам два соединителя? Просто настройте больше тем и задач для одного соединителя, и все готово.

Единственное исключение - если используемый соединитель неправильно использует задачи или ограничивает вас только одной задачей. В таком случае - либо у них есть веская причина, либо (что более вероятно) кому-то нужно улучшить их коннектор ...

20.01.2017
  • Спасибо за разъяснения. Я просмотрел код Kafka-connect и смог понять разницу между группой потребителей и группой рабочих. 21.01.2017
  • Что делать, если у меня есть два экземпляра kafka-connect, которые не знают друг друга? Название коннектора должно быть уникальным? 10.09.2019

  • 2

    Вы можете установить consumer.group.id как значение, которое может принимать Kafka Connect, и использовать его как group.id для всего приложения.

    Преимущество: вы получаете одну группу потребителей, к которой ваше приложение подключается. Недостаток: вы должны быть осторожны с конфигурациями группы потребителей. Сделайте так, чтобы все они выглядели одинаково

    14.08.2018
  • Даже пытался добавить consumer.group.id в конфигурацию, но он просто указывает, что потребитель находится в формате connect- ‹worker_name›. 13.06.2019
  • Новые материалы

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

    Расистский и сексистский робот, обученный в Интернете
    Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

    Управление состоянием в микрофронтендах
    Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..