互联网系统中的利器thrift(一)简介

http://www.code-trick.com/thrift-1/


现如今互联网系统越来越复杂,程序员的分工越来越细,如WEB前端使用PHP,后台某些服务使用Python或者C/C++或者nodejs,再或者是erlang开发提供的服务,那如何让这些服务之间可以非常容易的交互呢,google提供了protobuf,而facebook提供了thrift,关于这两者之间的详细的性能评测,等不及的同学可以google一下,我后面也会给出一个非常详细的评测结果出来的。

Thrift is a software framework for scalable cross-language services development. It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml.

上面是thrift官网给出的thrift的定义,简单的说呢thrift主要就是为了解决跨语言服务交互的问题,包含了一套代码生成框架,目前已经支持很多语言了,在最新的thrift-0.8.0的源码中已经看到比上面的简介还多了c的绑定。thrift同时还带来了多个server模型,让我们尽可能的专注我们服务本身。

thrift 的安装过程这里也不详细讲解了,大家如果在安装时候遇到问题可以跟我们反馈.

下面看一个非常简单的例子,这是一个Echo的服务,服务使用c++开发, 客户端使用php,python与之交互。

首先我们创建一个echo.tft的thrift文件:

service Echo {
	void Ping();
}

说明我们的服务为Echo,我们提供了一个Ping的接口.

现在我们生成文件,我们生成php和py的客户端文件:

thrift –gen cpp –gen py –gen-php echo.tft

下面看下当前目录的结构:

total 8
drwxr-xr-x  5 Zimilo  staff  170  1 15 01:03 .
drwxr-xr-x  3 Zimilo  staff  102  1 14 20:58 ..
-rw-r--r--  1 Zimilo  staff   30  1 14 21:01 echo.tft
drwxr-xr-x  9 Zimilo  staff  306  1 15 00:58 gen-cpp
drwxr-xr-x  4 Zimilo  staff  136  1 14 21:01 gen-py

在gen_cpp下有个Echo_server.skeleton.cpp文件,这个就是thrift为我们生成server的模版文件,我们直接拷贝这个文件拷贝为server.cpp,并填充接口,最终文件是:

下面进行编译:

g++ -o echo_server server.cpp Echo.cpp echo_types.cpp -I /usr/local/myserver/thrift/include/thrift/ -lthrift -L /usr/local/myserver/thrift/lib/

ok,现在就生成可执行文件echo_server了,够简单吧,启动我们的server程序

./echo_server

服务端有了,现在我们该来搞定client端了,首先先来看看php如何和我们的服务交互:

够简单吧。再继续看看Python客户端的例子:

python是不是也很简单?现在我们的服务就可以使用php或者python客户端交互了(当然c client必然也可以哈),甚至你还可以继续编写客户端用erlang,go,nodejs….与该服务交互了,真是非常非常的方便吧:)

这篇文章只是个简介让大家对这么好的一个东西有个初步的认识,后续的几篇文章我会更深入的给大家讲讲thrift,不仅从使用层次,更会从thrift源码,稍后会放出来哦。:)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值