11

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

它在 Java 端使用 JNI,我之前在复杂的多线程场景中被 JNI 咬过。我尽量消除它。

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

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

  • 支持 32/64 位 *nix、Windows、MacOS。

  • 主要支持 Java、C++ 和 C#,以及 Python、Ruby 等。

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

  • 高性能。

  • 非病毒许可,无 GPL、AGPL 等。

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

对于此设置,除了 ZMQ 之外,您还能想到哪些选项?

4

3 回答 3

11

您可能应该看看Netty。它是一个高性能的 Java NIO 服务器框架,内置对根据 Apache 许可条款发布的 Protocol Buffer 的支持。该框架有据可查,一些示例展示了如何使用 Protocol Buffers 对协议进行原型设计。

于 2012-04-15T18:27:46.777 回答
8

您是否考虑过StormSpread之类的东西?

于 2012-04-17T07:28:29.043 回答
1

最初的问题是在JeroMQ被放到 github大约一年后提出的。它是 ZeroMQ 的纯 Java 实现。在过去的几年中,它一直在不断发展,并且在速度上似乎可以与C 实现相媲美。

于 2017-05-05T23:30:54.343 回答