Thinking in Apache Thrift One

Thinking in Apache Thrift One | 王晨的博客

Thinking in Apache Thrift One

什么是Thrift?

关于背景信息可以Google,我就不赘述了,这里只用一句话介绍它产生的目的:
解决跨语言的远程调用问题

下面是废话:可以忽略

所谓技术牛人往往极端,他发明了一种语言就要用它去做所有事情,可我们知道,任何语言都有局限性,它可能在某些情景中表现很好,但绝非全部。

比如Java,很多公司都是从内到外都用它,甚至是Linux 脚本。基本上如果技术领域出现了什么好东西,立刻就会有Java 版本面世,比如Rails(Grails)、Python(Jython)……我不明白的是,如果你想用Grails去写一个Webapp,为什么不直接用Rails?在我看,其因有二:

  1. 人员问题,Java语言火,追随者多,自然也廉价很多;
  2. 有大量的Java 遗留代码不舍得放弃;

问题1,恐怕只能通过招聘和忽悠兄弟转型了,俺没办法。

问题2……YES! Apache Thrift 就是为了帮我们摆脱这种窘境。

如何使用 Thrift

Apache Thrift 必读文章:http://jnb.ociweb.com/jnb/jnbJun2009.html
,如果你在读完此文后,再看以下的内容会清晰很多。

我们通过下图来聊一下Thrift 的开发方式:

生成代码我们是无需修改的,我们要做的是:

  1. 选择协议实现(Protocol)
  2. 选择传输实现(Transport)
  3. 选择服务器实现(Server)
  4. 编写自己的代码

在真正应用Thrift 时我们应遵循一些原则:

原则一:Thrift 代码中不应包含业务逻辑。 Thrift 应该仅负责把你的本地服务Export 成为一个语言无关的远程服务,它应该尽量薄、尽量简单。Thrift 只负责将请求委托给具体的业务系统处理,并将响应正确返回。

原则二:Thrift 是高层接口。 很多人把RPC 写成了远程DAO,那业务逻辑不是要前端去决策了么?正确的,或者说理想的开发顺序应为:一开始并没有什么Thrift服务,在前端确定了需求时,才会请求创建某种Thrift 服务。

- 相关文章:

  • ⋯⋯⋯⋯

你可能感兴趣的:(apache)