RPC协议学习手记:thrift
Posted 歪鼻子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RPC协议学习手记:thrift相关的知识,希望对你有一定的参考价值。
1.Hello World
安装相关依赖包
sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel openssl-devel -y
下载Thrift的软件包,并解压缩:
http://archive.apache.org/dist/thrift/
找一个自己喜欢的版本就行了
配置、编译、安装Thrift,如下所示:
sudo ./configure
sudo make
sudo make install
校验安装
thrift -version
尝试一下hello world
namespace py example
struct Data{
1:string text
}
service format_data{
Data do_format(1:Data data),
}
生成一下
thrift -out .. --gen go example.thrift
生成的语法是
thrift -out <catalog> --gen <language> <Thrift filename>
2.基础语法的了解
需要注意的:
-
函数的参数要用数字依序标好,序号从1开始,形式为:“序号:参数名”;
-
每个函数的最后要加上“,”,最后一个函数不加;
-
-
可以使用/……/添加注释
常用数据类型
-
i16, 16位整形类型,例如:i16 aI16Val;
-
i32,32位整形类型,对应C/C++/java中的int类型;例如: I32 aIntVal
-
i64,64位整形,对应C/C++/java中的long类型;例如:I64 aLongVal
-
byte,8位的字符类型,对应C/C++中的char,java中的byte类型;例如:byte aByteVal
-
bool, 布尔类型,对应C/C++中的bool,java中的boolean类型;例如:bool aBoolVal
-
double,双精度浮点类型,对应C/C++/java中的double类型;例如:double aDoubleVal
-
void,空类型,对应C/C++/java中的void类型;该类型主要用作函数的返回值,例如:void testVoid()
-
string, 字符串类型,注意是全部小写形式;例如:string aString
-
map,map类型,例如,定义一个map对象:map<i32, i32> newmap
-
set,集合类型,例如,定义set
对象:set aSet -
list,链表类型,例如,定义一个list
对象:list aList -
enum, 枚举类型
enum Numberz
{
ONE = 1,
TWO,
THREE,
FIVE = 5,
SIX,
EIGHT = 8
} -
struct,自定义结构体类型
struct TestV1 {
1: i64 id,
3: string username,
12: i16 age
}
3.thrift开发流程
-
设计所需要的服务
-
根据设计的服务,编写thrift文件
-
根据编写的thrift文件使用thrift提供的代码生成工具生成服务端与客户端的代码
-
实现服务端业务逻辑的编写,同时实现客户端调用代码的编写
-
运行服务端与客户端
4.thrift调用流程图
以上是关于RPC协议学习手记:thrift的主要内容,如果未能解决你的问题,请参考以下文章