2011-02-02 21 views
29

Quali sono le tue esperienze con ZeroMQ come middleware di messaggistica generica?La produzione ZeroMQ è pronta?

  1. Ti sei imbattuto in qualche bug ostile o "caratteristiche" non ovvie? Per esempio. 2.0 non stava scaricando i messaggi correttamente e the troubleshooting guide sembra dare la soluzione più terrificante di tutti loro: "sleep(1) prima dell'uscita".
  2. L'API ha ridotto la complessità delle applicazioni o si è rivelata problematica?
  3. La compatibilità con le versioni precedenti è spesso compromessa?

risposta

28

Lo sto usando per la ricerca, quindi "semi-produzione". È una struttura meravigliosa, e il modo in cui le cose sono architettate ha sicuramente un senso una volta che l'hai completamente distrutto. Ma ho riscontrato troppi problemi per considerarlo pronto per la produzione. Sto usando jzmq, quindi alcuni potrebbero essere specifici.

  1. L'impostazione di jzmq su OS X/Eclipse è ... non piacevole.
  2. L'avvio dell'applicazione causa occasionalmente un errore di asserzione nel codice ZeroMQ C, quindi devo avvolgere la mia applicazione in qualcosa che controlli questo stato eccezionale.
  3. Gli errori sono spesso molto indicativi. Ho avuto troppe eccezioni di stato illegali senza alcun messaggio esplicativo.
  4. Nessun supporto per TLS. Questo è quasi un affare per me, e potrei facilmente vederlo escludere la sua disponibilità per un numero di applicazioni.
  5. La documentazione è "off". Il official guide è bello, ma se si dispone di un problema specifico, di solito non è utile. E mi ci vuole più tempo del solito per trovare le risposte alle cose quando fai ricerche su Google. La mailing list è comunque piuttosto attiva.

MA, e questo è un grande ma, non posso contare quante ore uomo mi ha salvato. This post ha una buona sintesi di alcuni dei modi in cui rende la vita più piacevole.

14

Sto anche utilizzando ZeroMQ in un ambiente di "semi-produzione" (prototipazione per DARPA). Finora è stato davvero eccellente per "legare insieme i gatti", specialmente quando quei gatti sono scritti in lingue diverse e vivono su macchine diverse. Gli idiomi di socket disponibili rendono il pensiero su un problema di calcolo distribuito molto semplice. La forza di ZeroMQ è l'ergonomia: un solido modello mentale e abbondanti legami linguistici.

Procedere con cautela, tuttavia, se si ha a che fare con vincoli di prestazioni rigide. Sto lavorando su un sistema in tempo reale e ho scoperto che, sebbene ZeroMQ sia una soluzione ad alte prestazioni, non è pronta per l'uso. Penso che l'architettura esistente abbia un grande potenziale; sembra solo essere ostacolato da alcuni bug insignificanti. Probabilmente avrei dovuto aspettarmelo da una libreria che si è evoluta così rapidamente, passando da 0.0 a 3.0 in un tempo relativamente breve. Tuttavia, pensavo di ottenere un rimpiazzo sostitutivo per il mio stack di protocolli manipolati a mano e di aver immediatamente colpito alcuni rompi-colpi. Se decidi di utilizzare ZeroMQ, tieni presente che stai lavorando ben al di sopra del livello di trasporto, e se le prestazioni sono meno che desiderabili, c'è poco che puoi fare al riguardo.

Detto questo, le chatter sulla mailing list e sul canale IRC sono piuttosto grandi. Gli sviluppatori sembrano sinceramente interessati a costruire qualcosa che sia completamente all'avanguardia. Lo adorano che la loro biblioteca abbia un brusio e si stia abituando a cose serie e interessanti. Sono persone impegnate, quindi non aspettarti un sacco di mani.Se hai un vero problema, però, sono ansiosi di sapere cosa sta succedendo.

Bottom line: Un grande coltellino svizzero per problemi di calcolo distribuiti quotidianamente. Sii prudente se stai cercando prestazioni all'avanguardia; è almeno una delle maggiori uscite. Eppure, il futuro è ottimo per questo progetto, quindi usalo e supportalo.

-2

disclaimer: questo proviene da una persona che non ha mai utilizzato AMQP o altri prodotti simili in precedenza.

La documentazione errata non è buona. (C# sarebbe un brutto se non ci fosse documentazione per .Net e C#) Quindi ZMQ potrebbe essere la cosa migliore là fuori se sai come usarlo, ma la documentazione che esiste (non molto) è piuttosto male (siamo così intelligente, questo è così bello, Erlang, blah blah, non un singolo esempio di guida in -...).
Si dice così, la maggior parte dei progetti del sistema operativo ha una cattiva documentazione o nessuno. Sì, ma per alcuni progetti OS puoi google un sacco di roba (tutorial, esempi ...). Con ZMQ è: Zero è per la documentazione. Dal momento che Im a C++ dev lo dice così. Prima di provare a usare ZMQ, ho pensato che la spinta abbia una cattiva documentazione e relativamente pochi esempi su internet. Ma rispetto alla documentazione di ZMQ Boost è eccezionale e gli esempi sono abbondanti.

EDIT: per rendere le cose più divertenti (la guerra civile: P): http://www.infoq.com/news/2012/03/Crossroads-IO

Martin Sustrik e Martin Lucina, creatori dell'originale ZeroMQ, hanno deciso di riprendere il controllo del progetto da parte fork esso . Il nuovo progetto , denominato Crossroads I/O, è in fase di installazione per incoraggiare un ecosistema commerciale che sia maggiormente in grado di soddisfare le loro esigenze finanziarie a lungo termine .

EDIT2: la copia e l'esecuzione esempi dalla guida (versione CPP di "A Broker domanda-risposta") opera pretende molto. Puoi vedere quanto è buono il processo di sviluppo della libreria dal fatto che non hanno i loro esempi come test. : P
EDIT3: alcuni degli esempi sono in v2. *, Ofc la versione più recente è v3.2. Quindi, di nuovo, questo odora di un progetto OS infetto non mantenuto.

+1

Ma ... ZeroMQ non è scritto in Erlang. Quello è RabbitMQ. –

+0

Sostengono di essere un framework di agenti MT come Erlang ... leggi il loro manifesto: D – NoSenseEtAl

+1

http://crossroads.io è morto e l'ultimo commit su https://github.com/crossroads-io/libxs era di 3 anni fa. Ma almeno non è un progetto non mantenuto come https://github.com/zeromq/libzmq che è stato aggiornato solo ... oh ... aspetta ... 6 giorni fa. –