搜易贷RPC框架thrift-简介篇

Posted 狐狸金服研发中心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜易贷RPC框架thrift-简介篇相关的知识,希望对你有一定的参考价值。


周公曾经约(曰)过,世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离;世界上最痴心的等待,是我当case,你是switch,或许永远都选不上自己;世界上最真情的相依,是你在try我在catch,到完成时,期待我们的finally;世界上最苦逼的调用,是你用你的苹果,而我用着我的安卓,无论你发神马请求,我都不悲不喜,寂静代理。

话说,为什么用代理呢?这个是有历史原因的,但目前看来,是为了分工协作,提高工作效率,节省资源成本。如果你的网站全部使用一种技术完成,那时间成本和资源成本将烧的你连互联网三个字都不认识。在日新月异的电子技术浪潮下,使用各种各样的不同的技术去处理问题,表面上是增加了复杂性,但实际上却是因为不同的技术有不同的优势和历史,而使得原来巨复杂的问题利用相对应的工具就可以很轻松愉快的解决了,这跟外科医生的做手术时你看到的满架子手术器材是一样一样的。那另外一个问题又来了,所谓龙生九子,各有不同,每有不同,必改需求。做为一个后端技术开发者而言,遇到最能让人产生梦靥的画面之一,需求又变了,你该怎么办?而当我们在处理完成各种业务需求的时候,又会发现,同样一个需求,安卓,苹果,wap,pc都需要不同的接口实现去处理,这时候你该怎么选择呢?如果你一根筋似的对每个接口对着不同的端去实现一遍,那我恐怕你早就吐血而亡了。因为还有很多在操作过程中遇到的不同的问题等着你去填坑呢。涛哥讲过一个笑话说,有人到西天问佛,佛说我也没辙。那我们搜易贷的技术达人们遇到这些问题的时候,是怎么解决的呢?答案就是我今天要讲的主角thrift.

我们先来看thrift在度娘的相关定义和功能:

Thrift是一个跨语言的服务部署框架,最初由facebook开发用做系统内各语言之间的RPC(Remote Procedure Call Protocol,远程过程调用协议通信),2007年由facebook贡献到apache基金,08年5月进入apache孵化器。Thrift通过一个中间语言IDL(interface description language, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码,并由生成的代码负责RPC协议层和传输层的实现。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, php, Ruby, Erlang, Perl, Haskell, C#, Cocoa, javascript, Node.js, Smalltalk, and OCaml,Delphi 这些编程语言间无缝结合的、高效的服务。

thrift允许定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。

如果是不太了解相关概念的人,看着这些东西可能会有点蒙圈,什么erlang,cocoa的概念看不大懂啊。那我用简单的话来说一下。

Thrift就是一个能够让你在使用计算机能听懂的语言进行沟通时候,见人说人话,见鬼说鬼话的高效的无视地球距离限制的翻译工具。当你使用你自己喜欢的语言去开发出一个功能的时候,你就可以用thrift来生成你自己的服务端,让其他想使用你服务的语言去使用对应语言的thrift客户端就够了。无论对方比天空还远,还是你是云他是鱼的差别,只要对方使用常用的编程语言,只要你的服务器和对方能够保持通信,那任何你提供的服务,对方都可以调用的到。而且因为默认基于静态的二进制数据协议,它避免了动态类型的检查和转换,因而程序效率比json要高。比起使用json和庞大的xml等其它数据协议,更适合于目前的互联网网络环境。当然如果你非要想用非2进制的数据协议,thrift也同样支持。(如果对thrift实现原理感兴趣的同学可以访问此篇文章)。使用thrift 目前支持的计算机语言有C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml,Delphi等。

好嘞,讲到这里,想必大家也都了解了什么是thrift了。限于在微信篇幅限制,咱们动手实践篇的文章将于下期与大家见面。如果您有什么建议或者新的认识,请联系我们 。


以上是关于搜易贷RPC框架thrift-简介篇的主要内容,如果未能解决你的问题,请参考以下文章

RPC简介与Thrift框架

RPC框架之Thrift分析(转)

Java分布式RPC通信框架Apache Thrift 使用总结

rpc服务框架thrift介绍

非死不可的RPC框架:thrift

RPC框架之Thrift