zoukankan      html  css  js  c++  java
  • JAVA基础之——Thrift原理及应用

    1 是什么

      是为了解决facebook系统中各系统间大数据量的传输通信,以及系统之间语言环境不同需要跨平台的问题。

      是一种实现RPC的软件框架,自定义IDL(Interface description language)接口描述语言

    2 为什么用

      当跨语言调用时,使用http是个比较好的访问协议,但是如果消费端不能使用http,而是以操作本地的api的方式来使用服务,那我们需要使用thrift,客户端和服务端之间传输协议分为文本和二进制,一般使用二进制类型传输。

    3 框架流程

    3.1 编写idl文件,demo.thrift

    3.2 客户端 编写cs文件,封装对象

      数据发送 编码和封装 字节流转换 底层发送

    3.3 服务端 编写java文件出,解析对象

      底层接收 字节流转换 解码和解析 分发请求 处理请求

    4 thrift涉及技术点

    4.1 基本数据类型

    namespace java com.xxxx
    
    struct ParameterSetting
    {
      1: bool isShadow;
      2: i32 probability; //int
      3: double range; //64位浮点数
      4: string name;
      5: list<string> addressInfo;
      6: i64 scale; //long
      7: i16 height; //short
      8: byte sdFlag; //byte,8位有符号整数
      9: map<string,string> propaMap;
      10:set<Integer> errorSet;
      11: optional string id; //当该字段没有值的时候,不会被序列化输出
      12: AcuUnit acuUnit;
    }
    
    enum AcuUnit
    {
      succ=0,
      fail=1,
    }
    
    const string COMMON_URL=“xxxx”

    4.2 数据传输协议

    4.2.1 TSimpleJSONProtocol

      Thrift对象转换成json TSimpleJSONProtocol提供json只写协议

      TBase接口反序列化和序列化时使用。Thrift序列化时根据idl中结构体定义的每个属性的序号顺序写入inputStream中,所以序号不能重复。

    TBase obj

     TSerializer s=new TSerializer(new TSimpleJSONProtocol.Factory());

    s.toString(obj);

      TCompactProtocol压缩格式,高效率的密集的二进制编码格式进行数据传输。

  • 相关阅读:
    LPT算法--时间调度问题
    Java语法学习1
    用JS动态显示文本
    用JS动态创建一个有序表(根据输入添加子列表项)
    邻接表链式结构的实现和顺序结构的实现
    HDU 1242 特殊化带结构体BFS
    POJ 1562深搜判断连体油田个数
    Uva 8道比较水的数论 (练练英语阅读理解)
    HDU 2024 C语言合法标识符(笑)
    再做POJ2406 KMPnext数组的运用
  • 原文地址:https://www.cnblogs.com/guobm/p/9855810.html
Copyright © 2011-2022 走看看