Управление подключением при использовании производителя kafka в среде с высоким трафиком

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

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

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

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

Ответ 1

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

Ответ 2

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

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