Кафка полностью заменяет балансировщики нагрузки? - PullRequest
2 голосов
/ 05 февраля 2020

Мне задали вопрос, чтобы добиться масштабирования системы. Сама система обрабатывает данные клиентов и создает фильтрацию этих данных и производит некоторую аналитическую информацию.

1) Первая итерация:

Мой первоначальный ответ состоял в том, чтобы предоставить кластерное решение Kafka.

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

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

В этом сценарии нет необходимости думать о балансировщиках нагрузки, потому что Kafka сама выполняет балансировку нагрузки.

2) Вторая итерация: меня спросили, как мне масштабировать систему если есть огромный рост спроса. Каков будет подход к масштабированию системы?

В этом случае при рассмотрении кластера Кафки; подсчет брокеров и разделов должны быть описаны в начале. Это не что-то расширяющееся. Поэтому, несмотря на то, что Kafka обеспечивает большую гибкость при рассмотрении нескольких местоположений и быстро растущих запросов, мое второе мнение заключается в использовании привязки Elasti c Load Balancers & automati c для центров обработки данных.

Когда в подсчете число запросов удваивается на следующий день. Балансировщики нагрузки направляют нагрузку на другие балансировщики нагрузки / другие центры обработки данных, поэтому в случае необходимости новые кластеры Kafka автоматически подключаются к общей системе.

Основная маршрутизация нагрузки может выполняться географически.

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

Мой второй подход похож на следующую схему.

https://i.stack.imgur.com/kEx1C.jpg

(Между тем, я встречал некоторых интервьюеров до этого интервью, и они точно назвали балансировщик нагрузки «устаревшей технологией», и я был признан очень жестоким, потому что я предложил балансировщики нагрузки.)

Если вы являетесь экспертом Kafka и занимаетесь масштабированием растущих запросов в нескольких местах, я был бы рад, если вы оставите свои комментарии.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Балансировка нагрузки с Kafka может столкнуться с проблемами, так как сам клиент собирается создать несколько соединений с брокерами Kafka, возможно, в обход ваших прокси. При запуске клиенты (производители / потребители) отправляют метаданные запросов на bootstrap .servers выяснить, как выглядит кластер. Это можно наблюдать в деталях, когда вы включаете уровни трассировки / отладки в клиентах Java.

С другой стороны, для решения уровня me sh потребуется поддержка протокола, например что-то подобное происходит в посланнике - https://github.com/envoyproxy/envoy/issues/2852

0 голосов
/ 06 февраля 2020

Хотя вы можете разместить балансировщики нагрузки TCP перед брокерами Kafka, это только создает другую точку отказа, и IMO не имеет смысла, потому что клиенты должны отправлять запросы лидерам разделов напрямую, для которых балансировщик нагрузки не имеет контекста.

HAProxy или Nginx не являются "устаревшими", хотя "service me sh" & "API Gateway" могут быть "новыми" терминами, используемыми для описания других функций, которые они предоставляют.

При увеличении производства сообщений пользовательские настройки Kafka могут быть скорректированы с учетом противодавления. Только когда брокеры приближаются к аппаратным ограничениям, следует добавлять больше ресурсов (не только во время резкой нагрузки)

...