Thrift的简单使用

系统 1815 0

Thrift的简单使用 - Season In The Code - 博客频道 - CSDN.NET


Thrift的简单使用


分类:
Facebook技术


3658人阅读
评论 (0)
收藏
举报

 

Thrift(  
http://github.com/facebook/thrift

)是一个跨语言服务部署架构,2007年由Facebook开发,之后在2008年加到Apache计划中(  
http://incubator.apache.org/thrift/

)。它是类似于SOAP,CORBA以及Google Protocol Buffers这样的服务架构。Thrift提供了完整client/server RPC的实现,只需要定义好中间定义语言,就可以生成指定语言的代码(包括client和server)。

 

Thrift能生成的语言有: C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml

 

 

使用thrift,以下例子你可以在
 
http://incubator.apache.org/thrift/

中找到。

定义.thrift接口文件。



你需要知道thrift所支持的类型(  
http://wiki.apache.org/thrift/ThriftTypes

)

下面是一个简述:

类型 描述
bool true, false
byte 8位的有符号整数
i16 16位的有符号整数
i32 32位的有符号整数
i64 64位的有符号整数
double 64位的浮点数
string UTF-8编码的字符串
binary 字符数组
struct 结构体
list<type> 有序的元素列表,类似于STL的vector
set<type> 无序的不重复元素集,类似于STL的set
map<type1,type2> key-value型的映射,类似于STL的map
exception 是一个继承于本地语言的exception基类
service 服务。包含多个函数接口(纯虚函数)

 

 

在了解过thrift内置类型之后,我们可以简单地定义一个服务,把用户的信息从前端发送到服务器,然后当需要的时候再从服务器获取某个用户的信息:

        
  1. struct UserProfile {  
  2.    1 : i32 uid,  
  3.    2 : string name,  
  4. }  
  5.   
  6. service UserStorage {  
  7.   void store( 1 : UserProfile user),  
  8.   UserProfile retrieve( 1 : i32 uid)  
  9. }  

把以上代码存到 service.thrift文件中。

 



如果我们需要用python来做输出语言。就在命令行中输入:

        
  1. thrift  –r  –gen  py  service.thrift  

之后,你就会在当前目录下看到一个新建的目录叫”gen-py”,在里面你就可以看到由service.thrift生成的python服务接口代码。

 

UserStorage.py中的Client就是客户端调用的接口,只需要创建一个Client实例就可以调用例子中的store和retrieve的接口。而Iface就是服务端所需要实现的接口,对应例子中的store和retrieve的逻辑处理。

 

ttypes.py是存放枚举类型的结构。

 

UserStorage-remote.py是一个客户端调用服务接口的demo示例,想知道详细的可以去看看。

Thrift的简单使用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论