thrift
<p>thrift</p><p>Thrift作为Facebook开源的RPC框架, 通过<strong>IDL中间语言</strong>, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码,主要特点:</p>
<h3 id="开发速度快:">开发速度快:</h3>
<p>通过编写RPC接口IDL文件,利用编译生成器自动生成Server端骨架(Skeletons)和客户端Stubs,省去开发者自定义和维护接口编解码、消息传输、服务器多线程模型等基础工作;Server端开发者只需按照服务骨架,写好自己的业务处理程序(Handlers)即可,Client端程序只需创建IDL中定义的服务对象,然后就像调用本地对象的方法一样调用远端服务。</p>
<h3 id="接口维护简单高效:">接口维护简单高效:</h3>
<p>通过维护Thrift格式的IDL(Interface Description Language)文件(注意写好注释),即可作为给Clients使用的接口文档使用,也自动生成接口代码,始终保持代码和文档的一致性。且Thrift协议可灵活支持接口的可扩展性。</p>
<h3 id="学习成本低:">学习成本低:</h3>
<p>因为其来自Google Protocol Buffers开发团队,所以其<strong>IDL文件风格类似Google Protocol Buffers</strong>,且更加易读易懂;特别是RPC服务接口的风格就像写一个一般的面向对象的Class一样简单。</p>
<p>初学者只需参照http://thrift.apache.org/几个小时即可理解和使用Thrift。</p>
<h3 id="多语言跨语言支持:">多语言/跨语言支持:</h3>
<p>Thrift支持C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi等多种语言,即可生成上述语言的服务器端和客户端程序。</p>
<p>对于我们经常使用的Java、PHP、Python、C++支持良好,虽然对iOS环境的Objective-C(Cocoa)支持稍逊,但也完全满足我们的使用要求。</p>
<h3 id="已验证成熟稳定:">已验证成熟稳定:</h3>
<p>Thrift在很多开源项目中已经被验证是稳定和高效的,例如Cassandra、Evernode等;在Facebook、Baidu等后台产品中也有使用。</p>
<p><strong>Thrift和Google Protobuf相比</strong>, 都提供了可扩展序列化机制, 不但兼容性好而且压缩率高. 两者在这块各有长短, 性能上PB稍有优势。</p>
<h3 id="thrift-支持的数据类型">Thrift 支持的数据类型</h3>
<ul>
<li>基本类型:</li>
<li>
<ul>
<li>bool:布尔值,true 或 false,对应 Java 的 boolean</li>
<li>byte:8 位有符号整数,对应 Java 的 byte</li>
<li>i16:16 位有符号整数,对应 Java 的 short</li>
<li>i32:32 位有符号整数,对应 Java 的 int</li>
<li>i64:64 位有符号整数,对应 Java 的 long</li>
<li>double:64 位浮点数,对应 Java 的 double</li>
<li>string:utf-8编码的字符串,对应 Java 的 String</li>
<li>注意,thrift不支持无符号整型,因为很多目标语言不存在无符号整型(如java)。</li>
</ul>
</li>
<li>结构体类型:</li>
<li>
<ul>
<li>struct:定义公共的对象,类似于 C 语言中的结构体定义,在 Java 中是一个 JavaBean</li>
</ul>
</li>
<li>容器类型:</li>
<li>
<ul>
<li>list:对应 Java 的 ArrayList</li>
<li>set:对应 Java 的 HashSet</li>
<li>map:对应 Java 的 HashMap</li>
</ul>
</li>
<li>异常类型:</li>
<li>
<ul>
<li>exception:对应 Java 的 Exception</li>
</ul>
</li>
<li>服务类型:</li>
<li>
<ul>
<li>service:对应服务的类</li>
</ul>
</li>
</ul>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
<p>本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/15102240.html</p><br><br>
来源:https://www.cnblogs.com/hnxxcxg/p/15102240.html
頁:
[1]