<?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>kafka0102的边城客栈 &#187; moxi</title>
	<atom:link href="http://www.kafka0102.com/tag/moxi/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kafka0102.com</link>
	<description>要有最朴素的生活与最遥远的梦想，即使明日天寒地冻、路远马亡。</description>
	<lastBuildDate>Sat, 18 Jun 2011 04:20:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>memcache proxy之moxi介绍</title>
		<link>http://www.kafka0102.com/2010/01/21.html</link>
		<comments>http://www.kafka0102.com/2010/01/21.html#comments</comments>
		<pubDate>Sat, 23 Jan 2010 13:39:36 +0000</pubDate>
		<dc:creator>kafka0102</dc:creator>
				<category><![CDATA[cache]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[memcache proxy]]></category>
		<category><![CDATA[moxi]]></category>

		<guid isPermaLink="false">http://www.kafka0102.com/?p=21</guid>
		<description><![CDATA[续接上文 memcache-proxy之memagent介绍分析，本文介绍另一个功能强大的memcache proxy之moxi（http://labs.northscale.com/moxi/）。话说一个proxy都敢造次自称为先知！由于精力有限，本文只对moxi做些功能性介绍，而不对其实现代码做分析。]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: medium;"> 续接上文 <a href="http://www.kafka0102.com/2010/01/memcache-proxy之memagent介绍分析/" target="blank">memcache-proxy之memagent介绍分析</a>，本文介绍另一个功能强大的memcache proxy之<a href="http://labs.northscale.com/moxi/" target="blank">moxi</a>。话说一个proxy都敢造次自称为先知！由于精力有限，本文只对moxi做些功能性介绍，而不对其实现代码做分析。<br />
0、先上来一张moxi的内部结构图，如果你领会了结构图，下面的文字可以飘过。这个结构图取自<a href="http://www.slideshare.net/northscale/moxi-memcached-proxy" target="blank">moxi-memcached-proxy</a>，算是moxi的文档了。</span></p>
<p><span style="font-size: medium;"> </span></p>
<div id="attachment_23" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.kafka0102.com/wp-content/uploads/2010/01/3a47ffee-8a3e-4e47-acea-478c91cdd511.jpg"><img class="size-medium wp-image-23 " title="inside moxi" src="http://www.kafka0102.com/wp-content/uploads/2010/01/3a47ffee-8a3e-4e47-acea-478c91cdd511-300x214.jpg" alt="inside moxi " width="300" height="214" /></a><p class="wp-caption-text">inside moxi</p></div>
<p><span style="font-size: medium;"> 1、moxi基于最新的memcached代码，我简单的浏览moxi，发现它里面就有memcached的代码文件。所以，它对后面的memcached支持binaray和text两种协议，对前面的client目前只支持text协议，以后也会支持binaray协议。<br />
2、moxi极力吸取已有工作成果，基于memcached开发，自然也是基于libevent、多线程模型，而一致性hash它使用的libmemcached客户端库。<br />
3、对于并发的gets请求，moxi会做合并来减少和memcache server的交互，这个效果依赖于它对请求的get key做管道处理，所以在事件回调时能检测到需要合并的请求，效果图如下：</span></p>
<p><span style="font-size: medium;"> </span></p>
<div id="attachment_24" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.kafka0102.com/wp-content/uploads/2010/01/5cc59479-35a9-4e3c-b3ce-ea16661d9ac7.jpg"><img class="size-medium wp-image-24" title="moxi get de-duplication" src="http://www.kafka0102.com/wp-content/uploads/2010/01/5cc59479-35a9-4e3c-b3ce-ea16661d9ac7-300x247.jpg" alt="moxi get de-duplication" width="300" height="247" /></a><p class="wp-caption-text">moxi get de-duplication</p></div>
<p><span style="font-size: medium;"> 4、对热点访问的cache（可以人工通过前缀key指定），moxi会在本地缓存，使得moxi相当于memcache server的前端cache，能减少network hops。不过这种热点cache项相对要少很多，而且为保证能正确失效，热点cache需要被复制到moxi集群的每个节点。这个功能在特定场景下还是很实用的，毕竟加个proxy，cache访问的效率还是会低一些，这对热点cache会有效率上的提升。<br />
5、Fire &amp; forget set功能（该怎么翻译呢？），说的是对于某种类型的key，在set时可以异步提交到memcache server而不需要client等待返回结果，这对于cache项的值字节数较大时（比如session内容）效果不错。<br />
6、超时处理。可以配置请求的超时时间，如果超时就返回失败。如果直接操作memcache server，因为没有超时机制，在一些情况下会hang住很长时间（比如网络问题、memcache server处理大数据量的缓慢等）。<br />
7、故障处理。memcache server不能访问时，Moxi会重试多次，如果失败就返回给client失败。Moxi支持动态的迁移memcache server配置。特别的，moxi可以做到将已有的一台memcache server的数据迁移到新的机器上，当新机器数据准备就绪，moxi就将它替换旧memcache server来提供服务。这个功能对memcache server的自动化运维很有帮助。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kafka0102.com/2010/01/21.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

