两个方向的 Thrift RPC

Posted

技术标签:

【中文标题】两个方向的 Thrift RPC【英文标题】:Thrift RPC in two directions 【发布时间】:2012-11-03 18:41:49 【问题描述】:

我正在寻找一种方法来创建从服务器到客户端的 rpc 调用。 这可以使用节俭吗?换句话说,我想在不创建另一个 TSocketServer 的情况下从两个方向调用 RPC。

谢谢

【问题讨论】:

【参考方案1】:

thrift 中的双向通信没有很好的文档记录。这不是“正常”的节俭用法。

我最近回答了一个类似这样的问题,但它是针对 Go 语言的。我希望您可以在那里使用我的答案作为 C++ 解决方案的灵感。 RPC from both client and server in Go

【讨论】:

【参考方案2】:

我个人不是节俭专家,但我确实在它仍处于孵化器阶段时看过它。 对于许多其他 RPC 机制,我没有找到用 thrift 处理异步回调的方法。 所以每当我需要这个时,我仍然坚持使用 corba。 TAO 是我的最爱之一。 但如果有人能证明我错了,我将不胜感激。

【讨论】:

【参考方案3】:

TCP 连接是全双工的 -> 您在客户端和服务器端都有描述符。只需写信给他们,例如使用系统调用

我确定在您序列化 thrift 消息后,您可以像普通的 unsigned char* 一样发送它。

【讨论】:

你是对的,但这是一个低级操作。如果我使用不同的传输方法而不是 TCP 怎么办?必须有更好的方法以节俭的方式做到这一点。 我认为这是一个您可以查看的示例,看起来几乎没有什么方法可以做您想做的事。基于这个 thrift 文件 svn.apache.org/repos/asf/thrift/trunk/contrib/transport-sample/… 它提供了这个功能。示例:svn.apache.org/repos/asf/thrift/trunk/contrib/transport-sample

以上是关于两个方向的 Thrift RPC的主要内容,如果未能解决你的问题,请参考以下文章

RPC-Thrift

thrift

Thrift快速入门

Thrift写RPC接口

Thrift总结创建RPC服务

Thrift RPC实战.初次体验Thrift