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压缩格式,高效率的密集的二进制编码格式进行数据传输。

  • 相关阅读:
    精简版的MySQL制作步骤
    WCF中常用的binding方式 z
    SQLite的.NET应用自适应32位/64位系统 z
    DEV GridControl 常用属性 z
    SpringBoot项目设置热部署
    SpringBoot整合Quartz定时任务
    单引号、双引号 转义符
    Java几种常见的四舍五入的方法
    Java集合之保持compareTo和equals同步
    你真的了解try{ return }finally{}中的return?(转载)
  • 原文地址:https://www.cnblogs.com/guobm/p/9855810.html
Copyright © 2011-2022 走看看