Thrift——初学
2024-08-24 07:34:07
是什么?
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文件放在该目录下
最新文章
- HTML与CSS基础知识补遗(一)
- UCloud可用区的设计理念及功能图文详解
- Java 时间、日期类
- Python Web.py
- Linux下查看进程和线程
- 基于MySQL协议的数据库中间层项目Atlas - 360团队
- PHP中利用PCLZIP压缩解压文件
- C++ 虚函数表解析(转载)
- Ural 1519. Formula 1 优美的插头DP
- SimpleXML 使用详细例子
- linux下使用autoconf制作Makefile
- [转]【Java】内部类(Inner Class)如何创建(new)
- Ubuntu 安装mono
- 深入浅出 JVM ClassLoader
- BTrace使用小结
- MongoDb GridFS的使用
- poj3168 Barn Expansion【计算几何 平面扫描】
- 原来zabbix监控进程与端口是如此的简单!
- 集合之List总结
- Ubuntu 搭建ELK