2012-04-14 14 views
8

Al momento ho una soluzione che utilizza ZeroMQ per scambiare payload del buffer del protocollo. Il metodo di serializzazione del protocollo di protocollo è destinato a rimanere così com'è, ma posso sostituire ZMQ con un'opzione più conveniente. Le cose che non mi piacciono in ZMQ sono:Quali sono le alternative a ZeroMQ per lo spostamento dei payload del buffer del protocollo?

Usa JNI sul lato Java, e sono stato morso prima da JNI, in scenari complessi, multi-thread. Cerco di eliminarlo ogni volta che posso.

Non ho bisogno di fare la coda, ho solo bisogno di rpc.

miei requisiti (che sono per lo più coperti da ZeroMQ) sono:

  • supporto per 32/64 bit * nix, Windows, MacOS.

  • Supporto per Java, C++ e C# in primo luogo e Python, Ruby ecc. Sarebbe bello.

  • Il supporto linguistico deve essere fornito da implementazioni native nella lingua, non tramite il wrapping del codice nativo.

  • Prestazioni elevate. licenza

  • non virali, non GPL, ecc AGPL

  • Ho pensato di usare parsimonia come il livello di trasporto su TCP (credo che supporta tale) con buffer di protocollo carichi utili, se la sua implementazione Java per la messaggistica non sta usando JNI.

Quali opzioni si può pensare ad un valore diverso da ZMQ per questa configurazione?

+1

Hai guardato da vicino Thrift? L'ultima volta che l'ho guardato, non è stato -giusto- trasporto: è una * sostituzione * per i buffer del protocollo (più trasporto). –

+1

Non è chiaro cosa si abbia realmente bisogno da 0mq. È piuttosto generico (sembra quasi una presa diritta), quindi copre un sacco di gorund. Stai cercando una coda? RPC? –

+0

@GregKopff: non posso sostituire i buffer di protocollo in questo progetto. Dovrà essere utilizzato per la serializzazione, a prescindere dal metodo di trasporto – mahonya

risposta

7

Avete considerato qualcosa come Storm o Spread?

+0

Grazie, entrambi sono abbastanza interessanti. Queste sono nuove opzioni per me da guardare. – mahonya

+7

Si noti che Storm utilizza effettivamente ZeroMQ come trasporto, quindi non è un'opzione se si desidera sostituire ZeroMQ. – gb96

+0

+1 per suggerimento di diffusione. – hroptatyr

10

Probabilmente dovresti dare un'occhiata a Netty. Si tratta di un framework per server NIO Java ad alte prestazioni con supporto integrato per Protocol Buffer, rilasciato sotto i termini della licenza Apache. Il framework è ben documented e alcuni examples mostrano come prototipare i protocolli con i Protocol Buffers.

0

La domanda originale è stata posta circa un anno dopo che JeroMQ è stato inserito nel github. È l'implementazione pure-java di ZeroMQ. Ha visto uno sviluppo costante durante gli anni intermedi e sembra essere comparable in speed all'implementazione C.

Problemi correlati