让Thrift支持双向通信
来源:互联网 发布:unity3d 改变模型动画 编辑:程序博客网 时间:2024/06/05 18:57
【问题】
Thrift采用了C/S模型,不支持双向通信:client只能远程调用server端的RPC接口,但client端则没有RPC供server端调用,这意味着,client端能够主动与server端通信,但server端不能主动与client端通信而只能被动地对client端的请求作出应答。这种RPC模式在某些应用中存在缺陷,比如:有些应用,在大部分情况下,client端会主动向server端发请求或者向server端发送数据,而在少部分情况下,server端也需要主动向client发送一些命令,告知进行某些操作。
为了解决该问题,通常有三种方案可供选:
方案一:轮询
该方案很容易想到:client端周期性地向server端询问是否需要进行某些操作,如果需要,则什么也不做,如果需要,则按照server的应答(response)要求进行操作。该方案的不足是延迟较大、且会浪费大量资源,造成不必要的访问开销。
方案二:双client/server
通信双方都既是client,也是server。该方案需要在通信双方之间建立两个通信通道,开启两个端口,这比较繁琐,且很不优雅。但仍是目前普遍采用的一套方案。
client/server <————————-> client/server
方案三:异步共享通道
Thrit底层实际上是socket,而socket是支持双向传输的,因此,我们完全可以通过修改thrift本身实现双向传输。有兴趣的读者可参考:
http://joelpm.com/2009/04/03/thrift-bidirectional-async-rpc.html
- 让Thrift支持双向通信
- Thrift 双向通信实现(C#版)
- Thrift 双向通信实现(Android版)
- Thrift 双向通信实现(c++版)
- 成功将thrift单向通信该为双向通信
- android arduino音频通信模块 支持双向通信
- Spring集成Thrift - remoting支持
- Thrift多接口支持例子
- thrift学习第二步,一个简单的双向通信demo以及原理讲解,以及注意事项
- Thrift对多接口服务的支持
- ctags支持lua protobuf thrift objective-c
- Thrift对多接口服务的支持
- 修改 sparkmetadata,使thrift server支持中文
- Thrift
- thrift
- thrift
- thrift
- Thrift
- 数据结构学习笔记(一):Heap
- JAVASE基础-day11(开发工具&常见对象)
- Android中微信抢红包助手的实现
- 伸缩布局之-侧轴的对齐方式
- 并发编程的挑战(一)
- 让Thrift支持双向通信
- 解决:The project cannot be built until build path
- Tinker接入小白教程
- win10快捷键大全 win10常用快捷键
- 伸缩布局的伸缩比例
- 设计模式(十二)享元模式
- 树专题-树的简单递归
- lintcode | 克隆二叉树
- nodejs 知识