根据this维基百科条目:
“协议缓冲区与Facebook的Thrift协议非常相似,不同之处在于它不包含用于定义服务的具体RPC堆栈。由于协议缓冲区是开源的,因此出现了许多RPC堆栈以填补这一空白。“
但是,没有引用RPC堆栈的示例。任何人都可以建议基于Java的RPC堆栈实现吗?
答案 0 :(得分:9)
如果您想要基于Java的RPC堆栈,那就是RMI。但是,它不能很好地跨平台工作。
我一直在使用ProtoBuf来做RPC。您可以通过将protobuf消息包装在另一个定义服务或调用的protobuf中来模拟RPC堆栈。有关详细信息,请查找此问题的答案,
Google Protocol Buffers and HTTP
如果你想要支持更多平台,如PHP,Ruby,C#等,Thrift看起来是一个非常好的选择。但是,与ProtoBuf相比,它看起来非常复杂。
答案 1 :(得分:4)
Google开源了他们的RPC框架gRPC,它使用Protocol Buffers定义服务和消息。 gRPC是跨平台的,支持C,C ++,C#,Java,Go,Node.js,Python,Ruby,Objective-C和PHP。
gRPC基于HTTP / 2标准,支持新功能,如双向流,流控制,报头压缩和多路复用连接。