Thrift

Thrift是一个轻量级、跨语言的RPC框架,主要用于各个服务之间的RPC通信。最初由Facebook于2007年开发,2008年进入Apache开源项目。通过自身的IDL(Interface Definition Language)接口定义中间语言,借助代码生成引擎生成各种主流语言的RPC服务端/客户端模版代码。

特性

开发速度快、接口维护简单、学习成本低、跨语言支持、广泛使用

附录

IDL语法

最新的语法需要参考官方文档

基本类型

类型 描述 Java Go
i8 有符号的8位整数 byte int8
i16 有符号的16位整数 float int16
i32 有符号的32位整数 int int32
i64 有符号的64位整数 long int64
double 64位浮点数 double float64
bool 布尔值 boolean bool
string 文本字符串(UTF-8编码格式) java.lang.String string

特殊类型

binary:未编码的字节序列,是string的一种特殊形式。Java中对应的是java.nio.ByteBuffer,Go中是[]byte。

集合

类型 描述 Java Go
list<T> 有序列表,允许重复 java.util.List []T
set<T> 无序列表,不允许重复 java.util.Set []T
map<K, V> key-value结构,key不允许重复 java.util.Map map[K] V

常量及类型别名

// 常量定义
const i32 MALT_COUNT = 1
const map<i32, string> GENDER_MAP = {1: "male", 2: "female"}

// 别名定义
typedef map<i32, string> gmp

struct 类型

struct <结构体名称> {
   <序号>:[字段性质] <字段类型> <字段名称> [= <默认值>] [;|,]
}

例如:

struct User{
  1: required string name; // 必须填写
  2: optional i32 age = 0; // 默认值为0
  3: bool gender; // 默认字段类型为 optional
}

IDL文件编译

# 生成java
thrift -gen java user.thrift 

# 指定输出目录
thrift -gen java -o target user.thrift

参考文献:
Apache Thrift官网
一个半小时学会Thrift视频教程

posted @ 2024-10-22 10:33  千千菌  阅读(13)  评论(0编辑  收藏  举报