Memcached & Coherence

    Memcached是用在很多网站的cache软件,包括Live Journal, Slashdot,  Wikipedia;其基本概念是hashtable,在cache中式key和value的对应,存取用get和set,这一点Coherence是一样的,也许是借鉴memcache的。

 

     在多个节点的情况下,memcache并不需要查找key,而是由key的hashcode可以直接得到对象的存取位置,所以应该是实现了某种DHT的算法,这一点Coherence应该也是一样的,这样的好处是明显的,cache并不需要在网络上寻找对象(或者说很容易知道存储的位置),只需要到它知道的节点上去获取对象就可以了;但有一点很大的不同是memcached每个节点是独立的,各个节点间并不通讯,也就是说如果有一个instance crash,memcached需要在客户端去除掉这一节点,但Coherence不同节点组成cluster,数据可以互相备份,如果有节点crash那么利用备份的数据,cluster可以重新分配数据的存储,分配数据的备份。当然这样做的好处和坏处也是显而易见的,好处当然是不一样的可靠性。

 

     据称memcached可以每个节点使用不同大小的内存,那么不同的节点上存储的数据就不同,这点Coherence做不到,Coherence的数据是均匀分布的

 

  文章里说memcached没有锁的机制,这个特点(?)则不存在block的情况,resource里把这个当作优点的说,当然吞吐量是提高了,很多事情都是看你从哪个方面来看。Coherence则实现了分布锁,如果对数据完整性有要求这是必然的。

另外我们可以看到memcached client的作用是存取memcached里的数据,也就是说它没有local cache,每次数据的读取都从网络,这一点和Coherence的Distributed Cache是一样的,但Coherence的top相对灵活还有一种top叫near包含有local cache

 

目前的memcache用c写的,有Java等语言的客户端

Resource里提到LiveJournal用了28个instance,cache了30G的数据,cache的命中率达到92%

据我所知国内也有很多站点使用了memcached包括新浪、豆瓣等

 

当然有很多另外的企业特性的要求不再这里的讨论之列,比如Transaction,distributed computing

 

Reference: http://www.linuxjournal.com/article/7451#comment-11715

你可能感兴趣的:(C++,c,算法,cache,memcached)