面试宝典系列-Memcache集群的实现和解决单点故障

memcached尽管是“分布式”缓存服务器,但服务器端并无分布式功能。各个memcached不会互相通讯以共享信息。算法

那么,怎样进行分布式呢?这彻底取决于客户端的实现缓存

如上图,有三个memcached节点,在set或者get时使用同一种算法计算key与节点的映射关系,而后将数据写入到该节点(get时从该节点中查询)服务器

比较简单的算法是余数分散法(取模),其缺点是当增长节点或者节点挂了,重组缓存时,全部缓存将失效,代价太大。(采用一致性hash算法,避免此问题)分布式

magent是一个memcached代理软件(memcached agent),又叫memagent。memcached

经过Magent缓存代理,防止单点现象,缓存代理也能够作备份。代理

客户端链接到缓存代理服务器,缓存代理服务器链接缓存服务器。缓存代理服务器能够链接多台Memcached机器,能够将每台Memcached机器进行数据同步。若是其中一台Memcached机器down掉,数据不会丢失而且能够保证数据的完整性。server

它提供的功能及特色有:
一、和每一个memcache server保持多个长链接,效果是减小memcache server保持的链接数量及建立销毁链接的开销。
二、支持memcache的binary协议命令,实现请求的转发。
三、和memcache同样,基于libevent的事件驱动来处理IO。
四、支持ketama 的一致性hash算法。
五、支持memcache backup集群,当memcache集群有机器挂了,memagent会将get请求转向memcache backup集群。(高稳定性)blog

   

相关文章
相关标签/搜索