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

  • 相关阅读:
    获取窗口句柄的几个办法
    我做的第一个网站
    学生信息管理系统
    程序题
    java冒泡排序
    模拟售票窗口,用4个线程模拟4个窗口在售票,共有8张票,用线程同步来实现
    设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1,写出程序。
    windows server 2012将计算机、回收站、文档等图标添加到桌面
    Javascript金额转化
    eclipse 每次切换工作空间都要重新配置
  • 原文地址:https://www.cnblogs.com/guobm/p/9855810.html
Copyright © 2011-2022 走看看