互联网系统中的利器thrift(一)简介
来源:互联网 发布:周杰伦忘词 知乎 编辑:程序博客网 时间:2024/05/18 02:36
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 8drwxr-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.tftdrwxr-xr-x 9 Zimilo staff 306 1 15 00:58 gen-cppdrwxr-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源码,稍后会放出来哦。:)
- 互联网系统中的利器thrift(一)简介
- Thrift--Thrift简介
- Thrift简介
- Thrift 简介
- Thrift简介
- Thrift 简介
- thrift简介
- thrift简介
- Thrift简介
- Thrift简介
- Thrift简介
- Thrift简介
- ORM利器:NHibernate(一)简介
- thrift学习笔记(一) thrift简介及第一个helloword程序
- thrift学习笔记(一) thrift简介及第一个helloword程序
- MVC中的扩展点(一)路由系统简介
- 嵌入式系统简介一
- 推荐系统简介(一)
- 百度最新面试题集锦
- 初级 MyEclipse 打Jar包
- 并发与竞态
- EJB获取JNDI
- pvcreate提示:Device /dev/sdc3 not found (or ignored by filtering)
- 互联网系统中的利器thrift(一)简介
- NDK Makefile文件中LOCAL_LDLIBS和LOCAL_CFLAGS介绍
- SQLServer 2008 R2附加数据库
- 远程用户登录的问题
- C++虚函数和多态性的关系【virtual】之二
- SQL DML 和 DDL
- ASP.NET页面间数据传递的方法
- Runtime Error(ACCESS_VIOLATION)
- Install FFmpeg and x264 on Ubuntu Lucid Lynx 10.04 LTS