2012-04-14 7 views
8

Im Moment habe ich eine Lösung, die ZeroMQ verwendet, um Protokoll-Puffer-Payloads auszutauschen. Die Protokollpuffermethode der Serialisierung bleibt so wie sie ist, aber ich kann ZMQ durch eine bequemere Option ersetzen. Die Dinge, die ich nicht glücklich bin in ZMQ sind:Was sind die Alternativen zu ZeroMQ für das Verschieben von Protokoll-Puffer-Payloads?

Es verwendet JNI auf der Java-Seite, und ich habe vor von JNI, in komplexen, Multi-Thread-Szenarien gebissen worden. Ich versuche es zu eliminieren, wann immer ich kann.

Ich brauche keine Warteschlange, ich brauche nur rpc.

Meine Anforderungen (die von ZeroMQ meist bedeckt sind) sind:

  • Unterstützung für 32/64 Bit * nix, Windows, MacOS.

  • Unterstützung für Java, C++ und C# in erster Linie und Python, Ruby usw. wäre nett.

  • Die Sprachunterstützung muss von nativen Implementierungen in der Sprache bereitgestellt werden, nicht durch das Einbinden von systemeigenem Code.

  • Hohe Leistung.

  • Nicht Viral Lizenz, keine GPL, AGPL usw.

  • Ich habe über die Verwendung von Thrift als Transportschicht über TCP denken (ich denke, es unterstützt die) mit Protokollpuffern Nutzlasten, wenn seine Java-Implementierung für Messaging verwendet JNI nicht.

Welche Optionen können Sie für dieses Setup anders als ZMQ denken?

+1

Haben Sie sich Thrift genau angesehen? Das letzte Mal, als ich es angeschaut habe, war es nicht - nur - Transport: Es ist ein * Ersatz * für Protokollpuffer (plus Transport). –

+1

Es ist nicht klar, was Sie wirklich von 0mq brauchen. Es ist ziemlich generisch (sieht fast wie gerade Steckdosen aus), also bedeckt es eine Menge von Gorund. Du suchst Schlange? RPC? –

+0

@GregKopff: Ich kann Protokollpuffer in diesem Projekt nicht ersetzen. Es muss für die Serialisierung verwendet werden, egal was die Transportmethode ist – mahonya

Antwort

7

Haben Sie etwas wie Storm oder Spread betrachtet?

+0

Danke, beide sind sehr interessant. Das sind neue Möglichkeiten, die ich mir ansehen kann. – mahonya

+7

Beachten Sie, dass Storm tatsächlich ZeroMQ als Transport verwendet, daher keine Option, wenn Sie ZeroMQ ersetzen möchten. – gb96

+0

+1 für Spread-Vorschlag. – hroptatyr

10

Sie sollten sich wahrscheinlich Netty ansehen. Es ist ein leistungsstarkes Java NIO Server-Framework mit integrierter Unterstützung für Protocol Buffer, das unter den Bedingungen der Apache-Lizenz veröffentlicht wird. Das Framework ist gut documented und einige examples zeigen, wie Protokolle mit Protocol Buffers Protoypen.

0

Die ursprüngliche Frage wurde etwa ein Jahr nach JeroMQ wurde auf GitHub gestellt. Es ist die pure-Java-Implementierung von ZeroMQ. Es hat sich in den vergangenen Jahren ständig weiterentwickelt und scheint zur C-Implementierung comparable in speed zu sein.

Verwandte Themen