Thrift之协议与编解码

众所周知,协议与编解码是网络连接最为关键的部分。通过传输协议与编解码,才能保证网络两端的设备正常交互。并且定义合理的协议以及正确的编解码方式,能够大大的提高网络数据传输的效率。这里,我们从Thrift源码层面看一下它的协议与编解码:


Thrift之协议与编解码_第1张图片
image.png

由上可知:
Thrift支持的协议有:Json,SimpleJson,Binary,Compact Binary

Thrift通过TProtocol抽象类,定义了协议和编解码的顶层接口。同样,关联了一个TTransport传输对象,另外定义了一系列读写消息的编解码接口:


Thrift之协议与编解码_第2张图片
image.png

协议其实就是通过客户端和服务器端约定传输什么数据,如何解析数据。对于RPC框架来说,传入的最重要数据就是方法名,方法参数,返回的数据就是返回码,返回数据。

Thrift之协议与编解码_第3张图片
image.png

writeMessageBegin:TBinaryProtocol传输消息头的数据顺序:name(方法名),type(方法类型),seqid(消息序列号)。


image.png

writeFieldBegin:传输字段数据。

同样,读取数据时,也会按照写入的数据执行。
通过Thrift自动生成java代码, 在写数据时,会依次调用上边各个方法:


Thrift之协议与编解码_第4张图片
image.png

综上所述,我们可以知道Thrift在协议与编解码层如何对一个rpc请求做的数据编解码,数据传输,以及数据读取。

你可能感兴趣的:(Thrift之协议与编解码)