Mongrel2 против NGINX + ZeroMQ? - PullRequest
       15

Mongrel2 против NGINX + ZeroMQ?

15 голосов
/ 07 января 2012

Я вижу этот новый NGINX + ZeroMQ проект на github, и теперь я в замешательстве.

Каковы различия между функциями и масштабируемостью между Mongrel2 и NGINX + ZeroMQ.

(причина, по которой я спрашиваю, заключается в том, что у меня сложилось впечатление, что Mongrel2 был создан исключительно потому, что NGINX не поддерживает ZeroMQ)

Ответы [ 2 ]

32 голосов
/ 07 января 2012

Я также читал о модуле nginx + zeromq, и я сразу заметил значительную разницу.

Модуль ZeroMQ nginx использует сокеты REQ / REP для связи с внутренними процессами.С другой стороны, mongrel2 использует два сокета.Один PUSH / PULL для отправки сообщений в нисходящем направлении (обработчикам) и один PUB / SUB (для получения ответов от обработчиков).Это делает его полностью асинхронным.Когда mongrel2 отправляет запрос бэкэнд-обработчикам, он немедленно возвращается из вызова zmq_send () и ответ будет получен в другом сокете в любое время позже.

Другое отличие состоит в том, что mongrel2 способен отправлять тот же ответболее одного клиента.Ваш обработчик может сказать mongrel2 что-то вроде этого: «Доставьте этот ответ на соединения 4, 5, 6 и 10, пожалуйста».Mongrel2 отправляет идентификатор соединения в сообщении обработчикам.

Надеюсь, это поможет!=)

1 голос
/ 12 апреля 2014

NGINX + ZeroMQ содержит ошибки. 1. Он не работает с NGINX 1.5 по причине NGINX перед выполнением отправки на сервер ZMQ (для этого он вызывает цепочку отправки) в восходящем хуке, проверяет, является ли соединение действительным или нет. И он потерпит неудачу, потому что у него есть сокет ZMQ, а не сокет TCP, так как протокол отличается, он скажет, что это недопустимое соединение.

  1. Есть еще много таких.

  2. Этот модуль не поддерживает keepalive. Не только вверх по течению, но даже вниз по течению не будет работать. Я борюсь за то, чтобы заставить работать keepalive вниз по течению.

Моя рекомендация: для внедрения ZMQ NGINX с keepalive понадобится два человека в месяц.

...