是否有任何允许回调的Thrift风格的RPC系统?

时间:2016-07-22 12:46:48

标签: protocol-buffers rpc thrift flatbuffers capnproto

在使用几种不同的消息传递和RPC系统之后,我得出的结论是,您最终总是需要传统的RPC,推送某种类型的事件。否则你不可避免地会得到一些民意调查。

例如,HTTP最初只支持RPC样式的方法(GET和POST立即返回响应)。人们意识到需要推送事件,所以使用长轮询进行黑客攻击。最终,这已通过Server-Sent Events修复。

CoAP(基于UDP的轻量级HTTP版本)还通过向GET请求添加“monitor”选项来支持推送事件。这是一个非常优雅的解决方案。

但这些都不是Thrift风格的RPC,我的意思是你编写一个接口定义文件,并且有一些工具可以将该接口编译为您选择的语言的本机代码。此后,您可以像远程程序一样调用远程程序。

所以我的问题是,是否有任何Thrift风格的RPC系统允许您订阅推送事件并在事件到达时调用回调(或类似)?

1 个答案:

答案 0 :(得分:1)

是:

  • gRPC支持“流式传输”,这意味着单个逻辑RPC调用实际上可能涉及每个方向的多条消息。
  • Cap'n Proto支持对象功能,允许连接的任何一方向对方发送对象引用,可以对其进行调用。例如,客户端可以在服务器上调用方法,并且作为方法参数之一,提供回调对象。回调对象实现了一些预定义的RPC接口。当服务器调用回调对象时,它正在回调客户端。实际上,Cap'n Proto连接是完全对称的:客户端和服务器之间的协议级别没有区别。

(披露:我是Cap'n Proto的作者,也是Protocol Buffers v2的作者,虽然我不隶属于gRPC。)