Mongrel2 против NGINX + ZeroMQ?

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

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

  • Есть еще много чего.

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

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