2015-05-07 3 views
11

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

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

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

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

ответ

2

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

+0

спасибо за ваше предложение и ссылку. Тем не менее, я не мог связать, как система, например прана, может использоваться как производитель кафки. Вы хотите сказать, что только способ реализации kafka-продюсера заключается в том, чтобы он работал параллельно с основным приложением и помещал ли он сообщения в фоновом режиме? Если да, то будет ли процесс создания демон? – Shades88

+1

Prana - это только пример, чтобы познакомить вас с рисунком коляски. В этом случае вы должны разработать свою собственную коляску, например: небольшое крошечное Java-приложение со встроенным http-сервером (например, Undertow), приложение будет подключаться к kafka при запуске и предоставлять api для отправки сообщений, например:/messages/$ topic, а затем ваше приложение php отправит сообщения в/localhost/messages/$ topic –

+0

, конечно, sidecar должен быть развернут на том же компьютере, что и ваше php-приложение. –

2

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

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

+0

спасибо за ваш ответ. Таким образом, вы используете только один объект соединения? Также вы отправляете сообщения непосредственно из своего приложения или из отдельного бэкэнд-процесса? Если вы используете kafka-продюсер в своем веб-приложении, это объект уровня приложения? Я имею в виду, как количество установленных связей ограничено? Когда я использовал php's kafka lib, поскольку php не разделял ничего арку, так как многие соединения открываются, поскольку есть запросы, jst ограничивается настройками сервера. Это очень опасно. – Shades88

Смежные вопросы