java — управление соединением при использовании производителя kafka в среде с высоким трафиком

Я собираюсь использовать kafka в очень интенсивной среде трафика с более чем миллиардом запросов в день. Каждый запрос будет устанавливать соединение с кластером kafka для отправки сообщения. Таким образом, каждую секунду будет происходить так много соединений. Это может вызвать проблемы, такие как время ожидания сокета.
производитель делает все непостоянные соединения. Так что в таком случае могут возникнуть проблемы с тайм-аутом сокета или истощением порта.

Большая часть экосистемы находится в php, поэтому я должен использовать php библиотеку для kafka. Теперь, как эффективно использовать производителя kafka для смягчения этой конкуренции за соединение?

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

Теперь я знаю, что есть много приложений / сайтов чрезвычайно большого объема, использующих kafka для прямой передачи сообщений. Кто-нибудь из вас может подсказать мне, как решить эти проблемы? Могут ли постоянные соединения помочь в этом случае? Является ли использование php-библиотеки kafka-продюсера в такой громоздкой среде плохой идеей?

12

Решение

Мы также используем java-библиотеку kafka, и мы делаем это, как говорит @apatel. Я думаю, что в вашей ситуации вы можете попытаться предоставить некоторую коляску для своих серверов с помощью приложения php, sidecar создаст Producer при запуске, а java-драйвер Kafka будет управлять несколькими соединениями. , Вот интересная статья о приложении Netflix для коляски Netflix Prana

2

Другие решения

Мы используем java-библиотеку kafka и подключаемся к kafka при запуске сервера. В настоящее время мы ежедневно отправляем около полутора миллиардов сообщений на kafka, и у нас никогда не было с этим проблем.

Когда вы создаете Producer, он в основном создает несколько соединений … по одному для каждого раздела. Поэтому, пока вы используете разбиение, вы можете отправлять каждое сообщение напрямую в kafka, не кэшируя его на своей стороне и не отправляя в пакетном режиме.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector