Thrift的层次结构

1 概念

Thrift的网络堆主要有4部分组成,分别是Transport、Protocol、Processor、Server,下图是thrift网络堆的层次图:


2 传输层(Transport)

传输层为网络的读写提供了一个简单抽象的接口,使得thrift的传输从系统底层摆脱出来(例如:序列化和反序列化)。

下列是传输层开放的接口:

·        open

·        close

·        read

·        write

·        flush

除了上面的传输接口,Thrift经常使用ServerTransport接口去接受或者创建一个原始的传输对象。就如名字的定义一样,ServerTransport 主要用在服务端为请求的连接创建传输对象。

·        open

·        listen

·        accept

·        close

下列是可用的传输方式:

·        文件

·        http

3 协议层(Protocol)

协议层定义了一种机制,将数据结构映射到内存。另外,协议层还指定怎样使用相关的传输对象编解码数据类型。因此协议层提供了编码的方案完成序列化和反序列化,例如可支持json、xml、纯文本,压缩的二进制等等。

下列是协议层接口:

writeMessageBegin(name, type, seq)
writeMessageEnd()
writeStructBegin(name)
writeStructEnd()
writeFieldBegin(name, type, id)
writeFieldEnd()
writeFieldStop()
writeMapBegin(ktype, vtype, size)
writeMapEnd()
writeListBegin(etype, size)
writeListEnd()
writeSetBegin(etype, size)
writeSetEnd()
writeBool(bool)
writeByte(byte)
writeI16(i16)
writeI32(i32)
writeI64(i64)
writeDouble(double)
writeString(string)
 
name, type, seq = readMessageBegin()
                  readMessageEnd()
name = readStructBegin()
       readStructEnd()
name, type, id = readFieldBegin()
                 readFieldEnd()
k, v, size = readMapBegin()
             readMapEnd()
etype, size = readListBegin()
              readListEnd()
etype, size = readSetBegin()
              readSetEnd()
bool= readBool()
byte = readByte()
i16 = readI16()
i32 = readI32()
i64 = readI64()
double= readDouble()
string = readString()

thrift的协议层被设计成面向流,不需要任何明确的结构说明。例如,在我们序列化它们之前不需要知道有多长的字符串或者有多少个字段。

下列是可用的协议方式:

·        binary:相当简单的二进制编码按字段的类型的字节长度编码实际的值

·        compact:压缩

·        json

4 处理器层(Processor

处理器层封装了从输入流读取数据和将数据写入输出流,处理层接受的输入流和输出流就是协议层的对象。

 

interfaceTProcessor{
    bool process(TProtocol in, TProtocol out)throws TException
}

特定服务的处理器层是由脚本代码生成,处理器层使用输入协议对象从总线读取数据,然后触发处理函数(由开发者编写)处理数据,再将处理结果使用输出协议对象写回总线。

 

5 服务器层(Server)

一个服务器汇集所有下列的各种功能:

·        创建传输对象

·        为传输对象创建输入\输出协议对象

·        在输入\输出协议对象的基础上创建处理器对象

·        等待请求连接,然后将数据交给处理器对象处理

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值