memcache proxy之moxi介绍

红薯 发布于 2010/11/10 17:44
阅读 1K+
收藏 3

本文介绍另一个功能强大的memcache proxy之moxi。话说一个proxy都敢造次自称为先知!由于精力有限,本文只对moxi做些功能性介绍,而不对其实现代码做分析。
0、先上来一张moxi的内部结构图,如果你领会了结构图,下面的文字可以飘过。这个结构图取自moxi-memcached-proxy,算是moxi的文档了。

inside moxi

inside moxi

1、moxi基于最新的memcached代码,我简单的浏览moxi,发现它里面就有memcached的代码文件。所以,它对后面的 memcached支持binaray和text两种协议,对前面的client目前只支持text协议,以后也会支持binaray协议。
2、moxi极力吸取已有工作成果,基于memcached开发,自然也是基于libevent、多线程模型,而一致性hash它使用的libmemcached客户端库。
3、对于并发的gets请求,moxi会做合并来减少和memcache server的交互,这个效果依赖于它对请求的get key做管道处理,所以在事件回调时能检测到需要合并的请求,效果图如下:

moxi get de-duplication

moxi get de-duplication

4、对热点访问的cache(可以人工通过前缀key指定),moxi会在本地缓存,使得moxi相当于memcache server的前端cache,能减少network hops。不过这种热点cache项相对要少很多,而且为保证能正确失效,热点cache需要被复制到moxi集群的每个节点。这个功能在特定场景下还是 很实用的,毕竟加个proxy,cache访问的效率还是会低一些,这对热点cache会有效率上的提升。
5、Fire & forget set功能(该怎么翻译呢?),说的是对于某种类型的key,在set时可以异步提交到memcache server而不需要client等待返回结果,这对于cache项的值字节数较大时(比如session内容)效果不错。
6、超时处理。可以配置请求的超时时间,如果超时就返回失败。如果直接操作memcache server,因为没有超时机制,在一些情况下会hang住很长时间(比如网络问题、memcache server处理大数据量的缓慢等)。
7、故障处理。memcache server不能访问时,Moxi会重试多次,如果失败就返回给client失败。Moxi支持动态的迁移memcache server配置。特别的,moxi可以做到将已有的一台memcache server的数据迁移到新的机器上,当新机器数据准备就绪,moxi就将它替换旧memcache server来提供服务。这个功能对memcache server的自动化运维很有帮助。

加载中
0
keith
keith

这是什么东西?

0
VictorLi
VictorLi

反向代理,类似于Varnish,只是一个代理memcached,一个代理Http server.

0
Xsank
Xsank
好东西,我们是 moxi+couchbase
返回顶部
顶部