thrift应用

来源:互联网 发布:如何选择导师 知乎 编辑:程序博客网 时间:2024/06/05 05:46

1.下载thrift包 http://thrift.apache.org/download
2.安装依赖
sudo apt-get install automake bison flex g++ git libboost1.55-all-dev libevent-dev libssl-dev libtool make pkg-config
3.php语言依赖 sudo apt-get install …
4.ubuntu下安装 sudo apt-get install thrift-compiler
5.Thrift 是对 IDL(Interface Definition Language) 描述性语言的一种具体实现。

数据类型:
基本类型:
bool:布尔值,true 或 false,对应 Java 的 boolean
byte:8 位有符号整数,对应 Java 的 byte
i16:16 位有符号整数,对应 Java 的 short
i32:32 位有符号整数,对应 Java 的 int
i64:64 位有符号整数,对应 Java 的 long
double:64 位浮点数,对应 Java 的 double
string:未知编码文本或二进制字符串,对应 Java 的 String
结构体类型:
struct:定义公共的对象,类似于 C 语言中的结构体定义,在 Java 中是一个 JavaBean

            struct RequestStruct              {                      1: i32 requestId                      2: string requestData              }               struct ResponseStruct              {                       1: i32 responseId                       2: string responseData              }               service ThriftSample  //thrift与自定义代码的接口              {                ResponseStruct SendReceive(1: RequestStruct request)                    string GetServerTime()              }
  容器类型:      list:对应 Java 的 ArrayList      set:对应 Java 的 HashSet      map:对应 Java 的 HashMap  异常类型:      exception:对应 Java 的 Exception  服务类型:      service:对应服务的类

协议TProtocol :
在传输协议上总体划分为文本 (text) 和二进制 (binary) 传输协议,为节约带宽,提高传输效率,一般情况下使用二进制类型的传输协议为多数
TBinaryProtocol —— 二进制编码格式进行数据传输
TCompactProtocol —— 高效率的、密集的二进制编码格式进行数据传输
TJSONProtocol —— 使用 JSON 的数据编码协议进行数据传输
TSimpleJSONProtocol —— 只提供 JSON 只写的协议,适用于通过脚本语言解析
TDebugProtocol - Uses a human-readable text format to aid in debugging.

传输层TTransport :
TSocket —— 使用阻塞式 I/O 进行传输,阻塞型socket,用于客户端,采用系统函数read和write进行读写数据;(BIO),是最常见的模式
TSSLSocke—— 继承TSocket,阻塞型socket, 用于客户端;采用openssl的接口进行读写数据。
THttpTransport:采用Http传输协议进行数据传输
TFileTransport – 以文件形式进行传输。
TMemoryTransport – 将内存用于I/O. java实现时内部实际使用了简单的ByteArrayOutputStream。
TZlibTransport – 使用zlib进行压缩, 与其他传输方式联合使用。当前无java实现
TFramedTransport —— 以frame为单位进行传输,使用非阻塞方式,按块的大小进行传输,类似于 Java 中的 NIO
TFastFramedTransport 与TFramedTransport相比,始终使用相同的Buffer,提高了内存的使用率
TNonblockingTransport —— 使用非阻塞方式,用于构建异步客户端
TSaslClientTransport与TSaslServerTransport, 提供SSL校验

服务端类型TServer :
TSimpleServer —— 单线程服务器端使用标准的阻塞式 I/O
TThreadedServer – 多线程服务模型,使用阻塞式IO,每个请求创建一个线程。(java 不支持)
TThreadPoolServer —— 多线程服务器端使用标准的阻塞式 I/O
TThreadedSelectorServer 允许你用多个线程来处理网络I/O。它维护了两个线程池,一个用来处理网络I/O,另一个用来进行请求的处理
TNonblockingServer —— 多线程服务器端使用非阻塞式 I/O
THsHaServer - 半同步半异步的服务模型,一个单独的线程用来处理网络I/O,一个worker线程池用来进行消息的处理

Thrift优缺点总结
(1)相比SOAP,数据量更小,客户端开销小,但是通用性和可扩展性差,数据格式固定,更适合做静态数据交互
(2)相比其他RPC框架结构,Thrift支持的语言更多,支持更多的数据类型
(3)Thrift内嵌了完整RPC实现,PB在文档方面性能更好

Thrift优缺点总结

附1.Thrift 架构

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

0 0
原创粉丝点击