thrift是一个数据传输框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。看文章的时候发现国内有不少人鼓吹使用thrift。

我的经验是完全没有必要使用它,thrift过度设计,和ACE是一路货色。thrift有如下缺点

  • 安装复杂 需要一堆依赖包,在没有外网ip的服务器上,非常揪心
  • 使用麻烦 需要先写一个DSL描述文件,然后用代码生成器生成各种语言代码
  • 浪费时间 thrift各种格式字段定义/代码生成器使用方法,起码需要4个小时来读文档, 但是涉及到数据传输编程的使用场景其实很少,可能几个月之后才会用第二次,这个时候你早就忘得干干净净,于是又要花4个小时时间重新学习一遍

数据接口设计,最好的做法直接用http 普通字符串(fields用自定义分隔符隔开),或者用json(不建议使用xml),好处很多:

  1. 天然的跨语言跨平台
  2. 调试简单,可以直接用浏览器
  3. 学习成本=0

技术选型,首先考虑的是 降低编程难度和缩短工期

我以前重构一个网站的用户中心 基于(nginx+php+mysql),在http/普通字符串 的基础上构建了一个简单的rpc协议,花了4天时间写代码,运行起来非常流畅,2台server 每天1亿次request 毫无压力

本文地址: http://lutaf.com/154.htm 鲁塔弗原创文章,欢迎转载,请附带原文链接