目前我有一个使用 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 之外,您还能想到哪些选项?