2012-04-14 12 views
8

Por el momento tengo una solución que usa ZeroMQ para intercambiar cargas útiles de buffer de protocolo. El método de serialización de búfer de protocolo está destinado a permanecer tal como está, pero puedo reemplazar ZMQ con una opción más conveniente. Las cosas de las que no estoy contento en ZMQ son:¿Cuáles son las alternativas a ZeroMQ para mover las cargas útiles del buffer de protocolo?

Utiliza JNI en el lado de Java, y JNI me ha mordido antes, en complejos escenarios de subprocesos múltiples. Intento eliminarlo siempre que puedo.

No necesito hacer cola, solo necesito rpc.

Mis requisitos (que están cubiertos en su mayoría por ZeroMQ) son:

  • Apoyo a 32/64 bits * nix, Windows, MacOS.

  • Soporte para Java, C++ y C# principalmente, y Python, Ruby etc. Sería bueno.

  • El soporte de idiomas debe ser proporcionado por implementaciones nativas en el idioma, no a través del código nativo.

  • Alto rendimiento. licencia

  • no viral, sin GPL, etc. AGPL

  • He estado pensando acerca del uso de Ahorro como la capa de transporte a través de TCP (supongo que es compatible con eso) con tampones protocolo cargas útiles, si su aplicación Java para los mensajes no está utilizando JNI.

¿Qué opciones puedes pensar aparte de ZMQ para esta configuración?

+1

¿Has mirado de cerca a Thrift? La última vez que lo miré, no lo hizo -justo- el transporte: es un * reemplazo * para los búferes de protocolo (más el transporte). –

+1

No está claro lo que realmente necesita de 0mq. Es bastante genérico (se ve casi como enchufes rectos), por lo que cubre un montón de gorund. ¿Estás buscando hacer cola? RPC? –

+0

@GregKopff: No puedo reemplazar los búferes de protocolo en este proyecto. Tendrá que ser utilizado para la serialización, sin importar cuál sea el método de transporte – mahonya

Respuesta

7

¿Ha considerado algo así como Storm o Spread?

+0

Gracias, ambos son bastante interesantes. Estas son nuevas opciones para que pueda ver. – mahonya

+7

Tenga en cuenta que Storm realmente usa ZeroMQ como su transporte, por lo tanto, no es una opción si desea reemplazar ZeroMQ. – gb96

+0

+1 por sugerencia de propagación. – hroptatyr

10

Probablemente deberías echar un vistazo a Netty. Es un marco de servidor Java NIO de alto rendimiento con soporte integrado para Protocol Buffer, que se publica bajo los términos de la licencia de Apache. El marco está bien documented y algunos examples muestran cómo prototipar protocolos con Buffers de Protocolo.

0

La pregunta original se formuló aproximadamente un año después de que JeroMQ se pusiera en github. Es la implementación de Java puro de ZeroMQ. Se ha visto un desarrollo constante a lo largo de los años intermedios y parece ser comparable in speed para la implementación C.

Cuestiones relacionadas