我可能是国内最早(08年)在实际项目(海内饭否)中部署thrift的人(之一)。 根据我自己的体验给出如下介绍和评价
0 本质上他是一个跨语言序列化和反序列化封装,网络和服务器封装,简单RPC封装,提供的功能和以下关键词近:ACE,XML,joson,json,sokcet库,CORBA,通信协议
1 实用:互联网公司非常适合使用,见过很多公司自定的通讯协议非常不灵活和容易出错。
2 轻便:虽然目前没有正式文档,但是阅读白皮书之后,看看Tutorial和代码很容易上手。并且抽象层次清楚(可分成通信协议,传输方式,server模式,其他util),复用方式灵活(可只使用一部分功能,比如只用它的序列化封装用来存储对象),编译部署方便(lib级别的服用,C++库只使用boost不依赖其他东西)。
3 跨语言特性: 在实际使用中用了PHP,python,C++三种语言,都非常方便
4 漂亮完善:thrift代码不论从模式、风格、设计、语言特性利用都相当漂亮,读起来赏心悦目,很容易理解思路。同时对线程,并发等的一些封装也很好用(你可不用他通信功能)。对协议变更等的考虑也相当完善。
5 性能:由于是内部的服务其实不容易有连接性能,传输性能和协议处理性能在实际使用中都没发现瓶颈,做过简单测试(简单的服务,每秒在内外可以完成10万次请求)。
6 不足:
纯c++/C实现的内部协议对POD对象(扁平的对象)可以不用解析对收到的内存指针强制类型转换,这样能更快一些,同时解析部分可以选择性解析;
听说windows下支持不够良好,我没试验;
python版本的soket封装有默认使用ipv6本机地址,在未装ipv6模块机器上会出错
结论:快去了解试用吧!
在我使用之前看的一些文档:
. thrift 主页  http://incubator.apache.org/thrift/
                   http://developers.facebook.com/thrift/ (被我好啊党墙了看不到)
  . protocol buffers  主页
                  http://code.google.com/apis/protocolbuffers/

  . 无责任比较 thrift 和 Protocol Buffers   http://blog.scaner.i.thu.cn/index.php/2008/07/10/thrift-vs-protobuf/
  . 使用thrift python版本来调用HBase http://yannramin.com/2008/07/19/using-facebook-thrift-with-python-and-hbase/
  . thrift vs protocol buffers:  http://stuartsierra.com/2008/07/10/thrift-vs-protocol-buffers
  . google的二进制编码格式 http://space.itpub.net/?uid-14420698-action-viewspace-itemid-410106

http://incubator.apache.org/thrift/

标签: none

暂无评论

  1. 时尚起义 时尚起义

    python版本的soket封装有默认使用ipv6本机地址

添加新评论