Centos7.2 thrift-0.9.3 安装使用(cpp服务端,go客户端)

xingxingliangqilai · · 4590 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  • thrift是什么
  • 依赖条件
  • thrift安装
  • thrift使用
  • 总结

thrift是什么

Thrift是一种接口描述语言和二进制通讯协议,[1]它被用来定义和创建跨语言的服务。[2]它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务,可以使用C#、C++(基于POSIX兼容系统)、Cappuccino、Cocoa、Delphi、Erlang、Go、Haskell、Java、Node.js、OCaml、Perl、PHP、Python、Ruby和Smalltalk。[wiki链接](https://zh.wikipedia.org/wiki/Thrift) 

依赖条件

thrift核心代码使用C++写的,用了boost库。 执行以下命令,安装相关依赖: 
 yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel 

thrift安装

1.到http://thrift.apache.org/download 这里下载的是 thrift-0.9.3.tar.gz
2. 在执行下列操作, 可根据需要选择相应的语言支持

#tar -zxvf thrift-0.9.3.tar.gz  #cd thrift-0.9.3 #./configure --with-boost=/usr/local --without-java --without-php #make; make install 
  1. 在终端输入:thrift –version 查看是否安装成功。

thrift使用

  1. 定义一个thrift文件, phone.thrift, 内容如下:
enum PhoneType { HOME, WORK, MOBILE, OTHER } struct Phone { 1: i32 id, 2: string number, 3: PhoneType type }
  1. 使用thrift命令行,生成java, golang 代码
 thrift -r --gen cpp phone.thrift thrift -r --gen go phone.thrift
  1. 在gen-cpp目录执行下列操作
cp PhoneService_server.skeleton.cpp PhoneService_server.cpp
  1. 修改 PhoneService_server.cpp 中的 get 函数
 void get(Phone& _return, const std::string& uid) { // Your implementation goes here _return.id = 1024; _return.number = "13424562789"; _return.type = PhoneType::MOBILE; printf("get\n"); }
  1. 编写makefile文件
BOOST_PATH = /usr/include/boost/ THRIFT_PATH = /usr/local/include/thrift LIB_PATH = /usr/local/lib SRC = phone_types.cpp phone_constants.cpp PhoneService.cpp PhoneService_server.cpp server: ${SRC} g++ -g -o PhoneServer ${SRC} -I${THRIFT_PATH} -I{BOOST_PATH} -lthrift 

运行make, 生成 PhoneServer 的可执行文件, 运行PhoneServer

./PhoneServer
  1. 准备golang的客户端
#cd gen-go #mkdir src #mv phone src/phone #mv src/phone/phone_service-remote src/phone_service-remote

修改 /etc/profile文件, 增加golang项目路径

export GOPATH=/usr/local/gopath:/home/denny/thrift-test/gen-go

使环境变量生效

source /etc/profile

编译 phone_service-remote

go build phone_service-remote

运行 phone_service-remote

./phone_service-remote

输出:

Phone({ID:1024 Number:13424562789 Type:MOBILE}) <nil>

至此thrift的简单应用就完结了

总结

对thrift研究也不是很多, 现在感觉来说thrift适合多语言混合编程,且系统内或系统间的交互依赖于RPC这时候的用处应该是挺大的。


有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:xingxingliangqilai

查看原文:Centos7.2 thrift-0.9.3 安装使用(cpp服务端,go客户端)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4590 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传