您的位置:首页 > 运维架构 > 网站架构

RPC框架Thrift架构描述

2017-07-11 16:51 369 查看
一、Thritf API的CS架构



Thrift包含创建CS架构程序的完整技术栈。最上层是从IDL生成的代码,你只需要自己实现服务器端的业务代码部分就可以。业务规则的实现类指需要实现生成的Iface接口就可以。Thrif有内建的数据类型,创建的数据结构作为发送、接收的结果。protocol和translate layer是Thrift运行时的一部分,Thrift包括将protocol和translates绑定到一起的基础部件。

二、thrift支持的协议

TBinaryProtocol – 一个简单的二进制格式,简单但没有进行空间优化。比text协议要快但是难于调试。
TCompactProtocol – 一个压缩的二进制格式,通常处理起来也很高效。
TDebugProtocol – 一个便于人阅读的文本格式,用来帮助调试。
TDenseProtocol – 类似于TCompactProtocol, 但传输的内容不包括元数据。
TJSONProtocol – 使用JSON来编码数据。
TSimpleJSONProtocol – 一个剥离了元数据的JSON格式,只写协议且不能有Thritft自己进行解释。适合于脚本语言。

三、thrift支持的传输协议

TFileTransport – 写入文件
TFramedTransport – 使用非阻塞服务时,需要这个传输协议。它以贞的形式发送数据,且每一帧的前面包含长度信息。
TMemoryTransport – 使用内存作为I/O。
TSocket – 使用阻塞的套接字I/O。
TZlibTransport – 用zlib进行压缩,与其他传输工具配合使用。

四、thrift支持的服务

TNonblockingServer – 使用非阻塞I/O的多线程服务(java是使用NIO实现)。这个服务必须使用TFramedTransport
TSimpleServer – 使用阻塞I/O的单线程服务,测试的时候特别有用。
TThreadPoolServer –
使用阻塞I/O多线程服务。

五、使用Thrift的典型工作流程



1、设计你的系统和服务,是接收数据、发送数据还是远程执行一些操作。

2、使用IDL编写接口描述文档,以.thrift为扩展名。服务描述关于函数、参数及返回值、是否抛出异常等信息,这一个文件里面可以提供多个服务的描述。

3、使用thrift命令来生成各种语言的库。

4、实现服务器端和客户端。第一步是实现服务并包装在服务代码中,这些代码依赖于Thrift库和生成的代码,你需要选择合适的processor,transport,和protocol,并且增加实现具体功能的代码。第二步是实现客户端,主要是择合适的processor,transport,和protocol并且实例化由编译器生成的服务类。

5、运行服务和客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: