ZeroMQ有哪些替代方案可以移动协议缓冲区有效负载?

mah*_*nya 8 c++ java rpc protocol-buffers zeromq

目前我有一个使用ZeroMQ来交换协议缓冲区有效负载的解决方案.序列化的协议缓冲区方法必须保持不变,但我可以用更方便的选项替换ZMQ.我在ZMQ不满意的事情是:

它在Java方面使用JNI,在复杂的多线程场景中我被JNI咬过.我尽力消除它.

我不需要排队,我只需要rpc.

我的要求(主要由ZeroMQ涵盖)是:

  • 支持32/64位*nix,Windows,MacOS.

  • 主要支持Java,C++和C#,Python,Ruby等也不错.

  • 语言支持必须由语言中的本机实现提供,而不是通过包装本机代码.

  • 高性能.

  • 非病毒许可证,无GPL,AGPL等

  • 如果用于消息传递的Java实现不使用JNI,我一直在考虑使用Thrift作为TCP上的传输层(我猜它支持这一点)和协议缓冲区有效负载.

除了ZMQ之外,您还可以考虑哪些选项进行此设置?

小智 11

你应该看看Netty.它是一个高性能的Java NIO服务器框架,内置支持Protocol Buffer,它是根据Apache License的条款发布的.该框架已有详细记录,一些示例显示了如何使用Protocol Buffers对协议进行原型设计.


Chr*_*ith 8

你考虑过像StormSpread这样的东西吗?

  • 请注意,Storm实际上使用ZeroMQ作为其传输,因此如果您想要替换ZeroMQ则不是一个选项. (7认同)
  • 看起来风暴现在使用Netty而不是zeromq:https://github.com/nathanmarz/storm/pull/556 (2认同)