Нужно предложение по теме кафки/созданию раздела

#apache-kafka

Вопрос:

Нужна помощь в лучшем способе создания тем и разделов кафки.

У нас уже есть сервисные брокеры MS SQL для разных баз данных на разных серверах баз данных. Мы используем SB с набором очередей, и эти очереди распространены во всех разных БД.

Теперь мы хотим снизить нагрузку на БД, поэтому планируем, что они перейдут на темы Кафки, вместо того, чтобы давить на уровень БД.

Таким образом, у каждой бд будет свой набор клиентских транзакций, которые используют каждую очередь, и они будут находиться в пределах этой области бд, поэтому, если что-то произойдет только с одной бд, клиенты в этой бд будут видеть проблемы, в то время как другие бд все еще работают хорошо.

Имея это в виду, теперь нам нужно придумать аналогичную архитектуру с темами Кафки.

Итак, если мы перейдем к кластеру Кафки с N брокерами и создадим тему для каждой очереди, которую мы использовали в БД, как мы все еще можем уменьшить зависимости от нескольких клиентов, будучи теперь централизованной темой для всех БД /клиентов?Можем ли мы использовать разделы здесь?

Ниже приведено представление о том, как я объяснил выше

DB1 -gt; Очередь 1; Очередь 2; Очередь 3 (несколько клиентов в этой базе данных будут использовать все эти очереди, в то время как каждая очередь обслуживает разные функции)

DB2 -gt; Очередь 1; Очередь 2; Очередь 3 (те же очереди, что и в DB1, обслуживающие те же функции)

Итак, сказав это, какой может быть лучший дизайн для этого в Кафке?

Комментарии:

1. Было бы полезно, если бы вы могли описать фактические действия, выполняемые клиентом базы данных, а не описывать, как вы создали «очередь» с использованием реляционной базы данных. Например, действие в очереди-это просто событие создания, однако использование любых данных из Кафки не удаляет их из этой «очереди», а записи не поддаются изменению, поэтому готовы ли вы обрабатывать дубликаты?

2. Спасибо, что разобрались. Поэтому, основываясь на действиях клиента, мы отправляем сообщение в очередь, а затем он вызывает веб-сервис, который обрабатывает сообщение и выполняет действия, и после этого сообщение должно исчезнуть из очереди само по себе.

3. Если вы хотите, чтобы сообщения «исчезали» при потреблении, то Кафка не подходит для этой задачи

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

5. Это зависит от того, как вы обрабатываете смещенные коммиты. Потребитель может обработать сообщение, а затем не фиксировать смещение. Когда потребитель затем перезагрузится, он снова обработает это сообщение… Если вы зафиксируете смещение вручную перед обработкой, то обработка завершится неудачно, и вы фактически пропустите сообщения. Вы можете настроить это с помощью нескольких конфигураций «точно один раз», но это относится только к семантике доставки Кафки, а не к обработке внешних сообщений, таких как в/из баз данных