memcached/membase 的代理 moxi

openkk 13年前
     <p>moxi 是一个 memcached/membase 的代理,支持多线程、支持文本和二进制协议和 libevent</p>    <p>可动态配置池的参数。moxi会在本地缓存,使得moxi相当于memcache server的前端cache,能减少network hops</p>    <p></p>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Open-source, same BSD license as memcached.</li>     <li style="margin-bottom:0.3em;">Written in C.</li>     <li style="margin-bottom:0.3em;">Based on the latest memcached server code for its high-performance connection and protocol handling.</li>     <li style="margin-bottom:0.3em;">Uses the libmemcached for its rich hashing features (consistent hashing, etc).</li>     <li style="margin-bottom:0.3em;">Uses libevent for both upstream (client) and downstream connection handling.</li>    </ul>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Test suites</li>     <ul style="padding-left:25px;max-width:62em;">      <li style="margin-bottom:0.3em;">moxi aims to pass all the relevant memcached server compatibility tests.</li>      <li style="margin-bottom:0.3em;">moxi has many new test cases to exercise proxy-only features and topologies.</li>     </ul>    </ul>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Protocol support</li>     <ul style="padding-left:25px;max-width:62em;">      <li style="margin-bottom:0.3em;">memcached text protocol, for upstream and downstream communication</li>      <li style="margin-bottom:0.3em;">memcached binary protocol, for downstream communication</li>      <li style="margin-bottom:0.3em;">later:</li>      <ul style="padding-left:25px;max-width:62em;">       <li style="margin-bottom:0.3em;">binary support for upstream communication</li>       <li style="margin-bottom:0.3em;">mixing and matching protocols (eg, some downstream servers are text, some are binary).</li>      </ul>     </ul>    </ul>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Optimizations</li>     <ul style="padding-left:25px;max-width:62em;">      <li style="margin-bottom:0.3em;">Multi-get Escalation and Protocol Pipelining - de-duplicates requests for popular keys, based on ideas from Dustin Sallings' spymemcached Java client library for memcached. See:<span class="Apple-converted-space"> </span><a style="color:#0000cc;" href="/misc/goto?guid=4959498023399542434" rel="nofollow">http://code.google.com/p/spymemcached/wiki/Optimizations</a></li>      <li style="margin-bottom:0.3em;">Minimal locks - our aspiration is to have no new locks as part of the "main loop" of protocol handling.</li>      <li style="margin-bottom:0.3em;">Timeouts - set maximum time for operations. eg, "no downstream memcached operation should take more than X ms."</li>     </ul>    </ul>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Lots of statistics tracked.</li>     <ul style="padding-left:25px;max-width:62em;">      <li style="margin-bottom:0.3em;">Statistics are tracked without extra locks, independently on each thread, optimized for the 99% case of being a good proxy. A once-in-awhile request for proxy statistics does an internal scatter-gather to aggregate statistics.</li>     </ul>    </ul>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Live reconfiguration</li>     <ul style="padding-left:25px;max-width:62em;">      <li style="margin-bottom:0.3em;">Separate management channel (in the works) to allow dynamic server pool reconfigurations.</li>     </ul>    </ul>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Simplified deployment</li>     <ul style="padding-left:25px;max-width:62em;">      <li style="margin-bottom:0.3em;">Assuming you run moxi on your web/app server boxes, your development, staging and production configurations gets easy: always point your memcached clients to "localhost:11211" (or whatever port you run moxi on).</li>     </ul>    </ul>    <ul style="padding-left:25px;max-width:62em;">     <li style="margin-bottom:0.3em;">Features inherited from memcached</li>     <ul style="padding-left:25px;max-width:62em;">      <li style="margin-bottom:0.3em;">moxi still has all the same code of memcached, and passes all the tests that memcached passes, so you can use moxi as a memcached server if you wish.</li>      <li style="margin-bottom:0.3em;">Multi-platform</li>      <li style="margin-bottom:0.3em;">Multi-threaded</li>      <li style="margin-bottom:0.3em;">Daemonizable</li>      <li style="margin-bottom:0.3em;">Run as another user</li>      <li style="margin-bottom:0.3em;">Bindable to IP interface, default is INADDR_ANY</li>      <li style="margin-bottom:0.3em;">PID file</li>      <li style="margin-bottom:0.3em;">etc</li>     </ul>    </ul>    <p></p>    <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1322722551030" target="_blank">http://www.open-open.com/lib/view/home/1322722551030</a></p>