zoukankan      html  css  js  c++  java
  • Thrift——初学

    是什么?

      Thrift是一个跨语言的服务部署框架最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代码负责RPC协议层和传输层的实现。

      究其原理,先不做研究。

    类型系统

    Thrift类型系统包括:

    • 预定义基本类型;
    • 常量;
    • 用户自定义结构体;
    • 容器类型;
    • 异常;
    • 服务定义;

    1.预定义基本类型

    • bool:布尔类型(true or value),占一个字节
    • byte:有符号字节
    • i16:   16位有符号整型
    • i32:   32位有符号整型
    • i64:   64位有符号整型
    • double:64位浮点数
    • string:未知编码或者二进制的字符串
    • * 注意:thrift不支持无符号整型

    2.常量

    其中a处,分号是可选的,可有可无;支持十六进制赋值

    3.自定义结构体

    * 注意:结构体中的变量可以声明为required(必须的)/optional(可选的),如:

    其中c处,代表Tweet这个结构体中,可以包含另一个结构体Location

    4.容器类型

    • Thrift容器与类型密切相关,它与当前流行编程语言提供的容器类型相对应,采用java泛型风格表示的。Thrift提供了3种容器类型:
    • list<A>:一系列A类型的元素组成的有序表,元素可以重复
    • set<A>:一系列A类型的元素组成的无需表,每个元素唯一
    • map<A,B>:key/value键值对,key的类型是A且唯一,value类型是B

    5.异常

    6.服务定义

    * 注意两个红框的地方

    其它

    1.文件包含

      Thrift允许thrift文件包含,用户需要使用thrift文件名作为前缀访问被包含的对象,如:

    其中a处thrift文件名要用双引号,并以.thrift结尾,末尾没有逗号或分号

    2.注释格式

    使用

    通过.thrift文件生成Java代码

      thrift -gen java thriftFileName.thrift

    通过上面的命令将在与thrift文件同级的目录中生成namespace声明的目录结构,并将thriftFileName.java文件放在该目录下

     

  • 相关阅读:
    ts笔记-辨析联合类型
    ts笔记-类型兼容性
    ts笔记-never和void
    ts笔记-泛型
    ts笔记-类型断言
    ts笔记
    ts笔记
    ts类型-枚举
    ts笔记-类型声明
    ts笔记-类型系统
  • 原文地址:https://www.cnblogs.com/zhengbin/p/5731174.html
Copyright © 2011-2022 走看看