Thinking in Apache Thrift One | 王晨的博客
Thinking in Apache Thrift One
什么是Thrift?
关于背景信息可以Google,我就不赘述了,这里只用一句话介绍它产生的目的:
解决跨语言的远程调用问题下面是废话:可以忽略
所谓技术牛人往往极端,他发明了一种语言就要用它去做所有事情,可我们知道,任何语言都有局限性,它可能在某些情景中表现很好,但绝非全部。
比如Java,很多公司都是从内到外都用它,甚至是Linux 脚本。基本上如果技术领域出现了什么好东西,立刻就会有Java 版本面世,比如Rails(Grails)、Python(Jython)……我不明白的是,如果你想用Grails去写一个Webapp,为什么不直接用Rails?在我看,其因有二:
- 人员问题,Java语言火,追随者多,自然也廉价很多;
- 有大量的Java 遗留代码不舍得放弃;
问题1,恐怕只能通过招聘和忽悠兄弟转型了,俺没办法。
问题2……YES! Apache Thrift 就是为了帮我们摆脱这种窘境。
如何使用 Thrift
Apache Thrift 必读文章:http://jnb.ociweb.com/jnb/jnbJun2009.html
,如果你在读完此文后,再看以下的内容会清晰很多。我们通过下图来聊一下Thrift 的开发方式:
生成代码我们是无需修改的,我们要做的是:
- 选择协议实现(Protocol)
- 选择传输实现(Transport)
- 选择服务器实现(Server)
- 编写自己的代码
在真正应用Thrift 时我们应遵循一些原则:
原则一:Thrift 代码中不应包含业务逻辑。 Thrift 应该仅负责把你的本地服务Export 成为一个语言无关的远程服务,它应该尽量薄、尽量简单。Thrift 只负责将请求委托给具体的业务系统处理,并将响应正确返回。
原则二:Thrift 是高层接口。 很多人把RPC 写成了远程DAO,那业务逻辑不是要前端去决策了么?正确的,或者说理想的开发顺序应为:一开始并没有什么Thrift服务,在前端确定了需求时,才会请求创建某种Thrift 服务。
- 相关文章:
Cancel Reply