<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>后端技术@tjumicy &#187; 架构</title>
	<atom:link href="http://micy.cn/blog/post/category/architecture/feed" rel="self" type="application/rss+xml" />
	<link>http://micy.cn/blog</link>
	<description>for Web Developer</description>
	<lastBuildDate>Mon, 08 Feb 2010 10:34:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Thrift &#8211; 开源多语言RPC框架</title>
		<link>http://micy.cn/blog/post/35</link>
		<comments>http://micy.cn/blog/post/35#comments</comments>
		<pubDate>Sun, 27 Sep 2009 10:16:36 +0000</pubDate>
		<dc:creator>Qin Yafei</dc:creator>
				<category><![CDATA[架构]]></category>

		<guid isPermaLink="false">http://micy.cn/blog/?p=35</guid>
		<description><![CDATA[RPC (wiki) 在大规模的互联网应用后端技术中非常常见，我们熟悉的搜索引擎、门户、网游服务器等，后端实现中都有涉及。主要原理是基于内网 socket 解决多机多模块之间的数据通讯问题。或者可以简单理解为，将单机的进程间通讯 (IPC) (wiki)，扩展到多机通讯，解决可扩展性问题。 Thrift 是由 Facebook 开源的一个 RPC 框架，现在已经挂在 apache.org 下了。主要的几个好处： 支持非常多语言，包括在 WEB 开发中很常用的 PHP，以及最重要的 C++/Python/Java 等 WEB后端常用语言，当然，还包括很 cool 的 Ruby、Erlang。 完整的 RPC 框架实现，用脚本生成通讯相关的框架代码，开发者只需要集中精力处理好业务逻辑。比如搭建一个 Hello World Service 只需要几分钟。 拥有被 Facebook、Last.fm 等不少大规模互联网应用验证过的性能和可用性。 在 PRC 通讯方面，其实已经成熟多年。比如百度内部是自己定制的二进制协议，比如C++下使用较多的 ACE 框架。而 Thrift 在最近两年脱颖而出，也的确和其跨语言、方便的代码生成框架、以及适于目前高速发展的互联网应用而出名。另外许多人拿 Thrift 和 google 推动的 Protocol Buffer 比较，有不少文章可以参考。 国内从目前的状况看，Thrift 相关的讨论和应用还不太多，这也是我想写出来推荐的原因。 一方面国内的寡头大型互联网企业多数使用自己的协议，没有动力开源，也没有引入的需求。一方面小型互联网公司虽然不少，但规模较大的还很少，大部分公司的业务量，还不太需要 RPC 这类多模块多机的架构去支撑。 另一方面，Thrift [...]]]></description>
			<content:encoded><![CDATA[<p>RPC <a href="http://en.wikipedia.org/wiki/Remote_procedure_call" target="_blank">(wiki)</a> 在大规模的互联网应用后端技术中非常常见，我们熟悉的搜索引擎、门户、网游服务器等，后端实现中都有涉及。主要原理是基于内网 socket 解决多机多模块之间的数据通讯问题。或者可以简单理解为，将单机的进程间通讯 (<abbr title="Inter Process Communication">IPC</abbr>) <a href="http://en.wikipedia.org/wiki/Inter-process_communication" target="_blank">(wiki)</a>，扩展到多机通讯，解决可扩展性问题。</p>
<p><a href="http://incubator.apache.org/thrift/" target="_blank">Thrift</a> 是由 Facebook 开源的一个 <abbr title="Remote Procedure Call">RPC</abbr> 框架，现在已经挂在 apache.org 下了。主要的几个好处：</p>
<ol>
<li> 支持非常多语言，包括在 WEB 开发中很常用的 PHP，以及最重要的 C++/Python/Java 等 WEB后端常用语言，当然，还包括很 cool 的 Ruby、Erlang。</li>
<li> 完整的 RPC 框架实现，用脚本生成通讯相关的框架代码，开发者只需要集中精力处理好业务逻辑。比如搭建一个 Hello World Service 只需要几分钟。</li>
<li> 拥有被 Facebook、Last.fm 等不少大规模互联网应用验证过的性能和可用性。</li>
</ol>
<p>在 PRC 通讯方面，其实已经成熟多年。比如百度内部是自己定制的二进制协议，比如C++下使用较多的 ACE 框架。而 Thrift 在最近两年脱颖而出，也的确和其跨语言、方便的代码生成框架、以及适于目前高速发展的互联网应用而出名。另外许多人拿 Thrift 和 google 推动的 Protocol Buffer 比较，<a href="http://www.google.com/search?q=thrift+protocol+buffer+comparison" target="_blank">有不少文章可以参考</a>。</p>
<p>国内从目前的状况看，Thrift 相关的讨论和应用还不太多，这也是我想写出来推荐的原因。</p>
<p>一方面国内的寡头大型互联网企业多数使用自己的协议，没有动力开源，也没有引入的需求。一方面小型互联网公司虽然不少，但规模较大的还很少，大部分公司的业务量，还不太需要 RPC 这类多模块多机的架构去支撑。</p>
<p>另一方面，Thrift 的确系出名门，它的代码实现的很优秀，逻辑层次清楚，易于定制扩展。框架代码生成方便，节省很多通讯方面的开发和调试时间。</p>
<p>最近和几位同事一起，做了对 Thrift 协议传输方面的性能测试和调优，结果还是不错的，用起来也很方便。后面有机会可以把测试过程，以及遇到的一些问题拿出来分享。</p>
]]></content:encoded>
			<wfw:commentRss>http://micy.cn/blog/post/35/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
