是什么?

  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文件放在该目录下

最新文章

  1. HTML与CSS基础知识补遗(一)
  2. UCloud可用区的设计理念及功能图文详解
  3. Java 时间、日期类
  4. Python Web.py
  5. Linux下查看进程和线程
  6. 基于MySQL协议的数据库中间层项目Atlas - 360团队
  7. PHP中利用PCLZIP压缩解压文件
  8. C++ 虚函数表解析(转载)
  9. Ural 1519. Formula 1 优美的插头DP
  10. SimpleXML 使用详细例子
  11. linux下使用autoconf制作Makefile
  12. [转]【Java】内部类(Inner Class)如何创建(new)
  13. Ubuntu 安装mono
  14. 深入浅出 JVM ClassLoader
  15. BTrace使用小结
  16. MongoDb GridFS的使用
  17. poj3168 Barn Expansion【计算几何 平面扫描】
  18. 原来zabbix监控进程与端口是如此的简单!
  19. 集合之List总结
  20. Ubuntu 搭建ELK

热门文章

  1. C#中String跟string的“区别”
  2. 创建CancellationTokenSource对象用于取消Task
  3. servlet学习笔记三
  4. 1.BOM学习
  5. Hadoop完全分布式集群配置
  6. CentOS启动和停止服务详解
  7. Linux命令-dd
  8. android eclipse——error: device not found解决办法
  9. Java WEB安全问题及解决方案
  10. Support Library(4)ecliplse导入支援包的方法