Thrift 基础(C++ rpc )

 

一、thrift简介

thrift是Facebook开源的一套rpc框架,目前被许多公司使用
我理解的特点

  1. 使用IDL语言生成多语言的实现代码,程序员只需要实现自己的业务逻辑
  2. 支持序列化和反序列化操作,底层封装协议,传输模块
  3. 以同步rpc调用为主,使用libevent evhttp支持http形式的异步调用
  4. rpc服务端线程安全,客户端大多数非线程安全
  5. 相比protocol buffer效率差些,protocol buffer不支持rpc,需要自己实现rpc扩展,目前有grpc可以使用

由于thrift支持序列化和反序列化,并且支持rpc调用,其代码风格较好并且使用方便,对效率要求不算太高的业务,以及需要rpc的场景,可以选择thrift作为基础库

层次图:

二、编译(thrift for c++ && centos7)

1、官网获取源码包 thrift-0.11.0.tar.gz 解压

tar zxvf thrift-0.11.0.tar.gz

2、安装依赖

yum -y install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel openssl-devel

3、编译boost
使用boost_1_63_0.tar.gz

./bootstrap.sh ./b2

4、编译thrift
源码根目录运行

./configure && make sudo make install

5、验证安装

thrift -version 显示 Thrift version 0.11.0

三、编写使用IDL编写.thrift文件

这里给出一个thrift的IDL基本语法列表,详细用法可以去官网查找

namespace cpp thrift.Test //typedef 用法 typedef i32 MyInt32; typedef string MyString; typedef i32 UserId; //struct 结构定义 struct TypedefTestStruct {     1: MyInt32 field_MyInt32;     2: MyString field_MyString;     3: i32 field_Int32;     4: string filed_string; } //enum 枚举定义 enum Numberz {     ONE = 1,     TWO,     THREE,     FIVE = 5,     SIX,     EIGHT = 8 } //const 用法 const Numberz myNumberz = Numberz.ONE; struct Bonk {     1: string message,     2: i32 type } //类型嵌套 struct Xtruct {     1: string string_thing,     2: i8 byte_thing,     3: i32 i32_thing,     4: i64 i64_thing } struct Xtruct2 {     1: i8 byte_thing,     2: Xtruct struct_thing,     3: i32 i32_thing } //支持map list set类型分别对应C++中的 map = stl::map list = stl::vector set = stl::set typedef map<string, Bonk> MapType struct Insanity {     1: map<Numberz, UserId> userMap;     2: list<Xtruct> xtructs; } struct CrazyNesting {     1: string string_field,     2: optional set<Insanity> set_field;     3: required list<map<set<i32>, map<i32,set<list<map<Insanity,string>>>>>> list_field,     4: binary binary_field } //union用法 union SomeUnion {     1: map<NumberZ, UserId> map_thing,     2: string string_thing,     3: i32 i32_thing,     
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信