Mongrel2 против NGINX+ZeroMQ?
Я вижу этот новый проект NGINX+ZeroMQ на github, и теперь я в замешательстве.
Каковы особенности и отличия масштабируемости между Mongrel2 и NGINX+ZeroMQ.
(Причина, по которой я спрашиваю, заключается в том, что у меня сложилось впечатление, что Mongrel2 был создан исключительно потому, что NGINX не поддерживает ZeroMQ)
2 ответа
Я также читал о модуле nginx+zeromq и сразу заметил значительную разницу.
Модуль ZeroMQ nginx использует сокеты REQ/REP для связи с внутренними процессами. С другой стороны, mongrel2 использует два сокета. Один PUSH/PULL для отправки сообщений в нисходящем направлении (обработчикам) и один PUB/SUB (для получения ответов от обработчиков). Это делает его полностью асинхронным. Когда mongrel2 отправляет запрос бэкэнд-обработчикам, он немедленно возвращается из вызова zmq_send() и ответ будет получен в другом сокете в любое время позже.
Другое отличие состоит в том, что mongrel2 способен отправлять один и тот же ответ более чем одному клиенту. Ваш обработчик может сказать mongrel2 что-то вроде этого: "Доставьте этот ответ на соединения 4, 5, 6 и 10, пожалуйста". Mongrel2 отправляет идентификатор соединения в сообщении обработчикам.
Надеюсь это поможет! знак равно
NGINX+ZeroMQ имеет ошибки. 1. Он не работает с NGINX 1.5 по причине NGINX перед выполнением отправки на сервер ZMQ (для этого он вызывает цепочку отправки) в восходящем хуке, проверяет, является ли соединение действительным или нет. И он потерпит неудачу, потому что у него есть сокет ZMQ, а не сокет TCP, так как протокол отличается, он скажет, что это неверное соединение.
Есть еще много таких.
Этот модуль не поддерживает keepalive. Не только вверх по течению, но даже вниз по течению не будет работать. Я борюсь за то, чтобы заставить работать keepalive вниз по течению.
Моя рекомендация: для внедрения ZMQ NGINX с keepalive потребуется два человека в месяц.