【问题标题】:Are there any Thrift-style RPC systems that allow callbacks?是否有任何 Thrift 风格的 RPC 系统允许回调?
【发布时间】:2016-11-26 09:09:33
【问题描述】:

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

例如,HTTP 最初只支持 RPC 样式的方法(GET 和 POST 立即返回响应)。人们意识到需要推送事件,因此使用长轮询来破解它。最终,Server-Sent Events 解决了这个问题。

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

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

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

【问题讨论】:

  • 你看过 GRPC 吗?它基于回调(虽然不一定是订阅模型,因为我认为你只能有一个处理程序),并且支持 protobuf,并且刚刚开始支持 FlatBuffers。

标签: protocol-buffers rpc thrift flatbuffers capnproto


【解决方案1】:

是的:

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

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

【讨论】:

    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    相关资源
    最近更新 更多