欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

thirft rpc 具体调用流程 博客分类: Thrift RPC 教程 thriftrpc中间件

程序员文章站 2024-03-13 18:18:45
...

Thrift调用过程中,Thrift客户端和服务器之间主要用到传输层类、协议层类和处理类三个主要的核心类,这三个类的相互协作共同完成rpc的整个调用过程。在调用过程中将按照以下顺序进行协同工作:

        (1)     将客户端程序调用的函数名和参数传递给协议层(TProtocol),协议层将函数名和参数按照协议格式进行封装,然后封装的结果交给下层的传输层。此处需要注意:要与Thrift服务器程序所使用的协议类型一样,否则Thrift服务器程序便无法在其协议层进行数据解析;

        (2)     传输层(TTransport)将协议层传递过来的数据进行处理,例如传输层的实现类TFramedTransport就是将数据封装成帧的形式,即“数据长度+数据内容”,然后将处理之后的数据通过网络发送给Thrift服务器;此处也需要注意:要与Thrift服务器程序所采用的传输层的实现类一致,否则Thrift的传输层也无法将数据进行逆向的处理;

        (3)     Thrift服务器通过传输层(TTransport)接收网络上传输过来的调用请求数据,然后将接收到的数据进行逆向的处理,例如传输层的实现类TFramedTransport就是将“数据长度+数据内容”形式的网络数据,转成只有数据内容的形式,然后再交付给Thrift服务器的协议类(TProtocol);

        (4)     Thrift服务端的协议类(TProtocol)将传输层处理之后的数据按照协议进行解封装,并将解封装之后的数据交个Processor类进行处理;

        (5)     Thrift服务端的Processor类根据协议层(TProtocol)解析的结果,按照函数名找到函数名所对应的函数对象;

        (6)     Thrift服务端使用传过来的参数调用这个找到的函数对象;

        (7)     Thrift服务端将函数对象执行的结果交给协议层;

        (8)     Thrift服务器端的协议层将函数的执行结果进行协议封装;

        (9)     Thrift服务器端的传输层将协议层封装的结果进行处理,例如封装成帧,然后发送给Thrift客户端程序;

        (10)    Thrift客户端程序的传输层将收到的网络结果进行逆向处理,得到实际的协议数据;

        (11)    Thrift客户端的协议层将数据按照协议格式进行解封装,然后得到具体的函数执行结果,并将其交付给调用函数;

 

  1. 数据传输协议
    1. TBinaryProtocol : 二进制格式.
    2. TCompactProtocol : 压缩格式
    3. TJSONProtocol : JSON格式
    4. TSimpleJSONProtocol : 提供JSON只写协议, 生成的文件很容易通过脚本语言解析