一、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、运行服务和客户端。