2012-01-06 23 views
15

Vedo questo nuovo NGINX+ZeroMQ progetto su github e ora sono confuso.Mongrel2 vs. NGINX + ZeroMQ?

Quali sono le differenze di funzionalità e scalabilità tra Mongrel2 e NGINX + ZeroMQ.

(Il motivo per cui mi chiedo è perché sono sotto l'impressione Mongrel2 è stato creato esclusivamente dal Nginx non supportava ZeroMQ)

risposta

32

Ho anche letto che il nginx + zeromq modulo e ho subito notato un notevole differenza

Il modulo nginx ZeroMQ utilizza socket REQ/REP per comunicare con i processi di back-end. D'altra parte mongrel2 utilizza due socket. Un PUSH/PULL per inviare messaggi a valle (ai gestori) e un PUB/SUB (per ricevere risposte dai gestori). Questo lo rende totalmente asincrono. Quando mongrel2 invia una richiesta ai gestori di backend, ritorna immediatamente dalla chiamata zmq_send() e la risposta verrà ricevuta in un altro socket, in qualsiasi momento successivo.

Un'altra differenza è che mongrel2 è in grado di inviare la stessa risposta a più di un client. Il tuo gestore può dire a mongrel2 qualcosa del genere: "Consegna questa risposta alle connessioni 4, 5, 6 e 10, per favore". Mongrel2 invia l'ID di connessione all'interno del messaggio ai gestori.

Spero che questo aiuti! =)

1

NGINX + ZeroMQ ha bug. 1. Non funziona con NGINX 1.5 motivo NGINX prima di inviare al server ZMQ (per questo chiama catena di invio) hook upstream, verifica se la connessione è valida o meno. E fallirebbe perché ha socket ZMQ e non socket TCP in quanto il protocollo è diverso, si direbbe che sia una connessione non valida.

  1. Ci sono molte altre cose del genere.

  2. Questo modulo non supporta keepalive. Non solo a monte ma anche a valle non funzionerebbe. Sto lottando con il rendere il lavoro keepalive a valle.

La mia raccomandazione: Ci vorrebbe due mesi al mese per implementare ZMQ NGINX con keepalive.