Thrift协议与传输选择

举报
Lansonli 发表于 2021/09/29 01:39:54 2021/09/29
【摘要】 1 协议 Thrift 可以让用户选择客户端与服务端之间传输通信的消息协议类别,如我们前面所讲总体划分为文本 (text) 和二进制 (binary) ,为节约带宽,提高传输效率,一般情况下使用二进制类型的为多数,有时还会使用基于文本类型的协议,这需要根据项目 / 产品中的实际需求。常用协议有以下几种: thrift.protoc...

1 协议

Thrift 可以让用户选择客户端与服务端之间传输通信的消息协议类别,如我们前面所讲总体划分为文本 (text) 和二进制 (binary) ,为节约带宽,提高传输效率,一般情况下使用二进制类型的为多数,有时还会使用基于文本类型的协议,这需要根据项目 / 产品中的实际需求。常用协议有以下几种:

  • thrift.protocol.TBinaryProtocol

    二进制编码格式进行数据传输

    客户端构建方式:

    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    
       

    服务端构建方式:

    pfactory = TBinaryProtocol.TBinaryProtocolFactory()
    
       
  • thrift.protocol.TCompactProtocol

    高效率的、密集的二进制编码格式进行数据传输,推荐使用

    客户端构建方式:

    protocol = TCompactProtocol.TCompactProtocol(transport)
    
       

    服务端构建方式:

    pfactory = TCompactProtocol.TCompactProtocolFactory()
    
       
  • thrift.protocol.TJSONProtocol

    使用 JSON 的数据编码协议进行数据传输

    客户端构建方式:

    protocol = TJSONProtocol.TJSONProtocol(transport)
    
       

    服务端构建方式:

    pfactory = TJSONProtocol.TJSONProtocolFactory()
    
       

2 传输

常用的传输层有以下几种:

  • thrift.transport.TSocket

    使用阻塞式 I/O 进行传输,是最常见的模式

    客户端构建方式:

    transport = TSocket.TSocket('127.0.0.1', 8888)
    
       

    服务端构建方式:

    transport = TSocket.TServerSocket('127.0.0.1', 8888)
    
       
  • thrift.transport.TTransport.TBufferedTransport

    原始的socket方式效率不高,Thrift提供了封装的加了缓存的传输控制,推荐方式

    客户端构建方式:

    
            transport = TSocket.TSocket('127.0.0.1', 8888)
            transport = TTransport.TBufferedTransport(transport)
        
       

    服务端构建方式:

    
            transport = TSocket.TServerSocket('127.0.0.1', 8888)
            tfactory = TTransport.TBufferedTransportFactory()
        
       

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/105304646

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。