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

本文探讨了Memcached作为分布式缓存服务器的应用场景,并详细介绍了如何利用一致性Hash算法解决节点变动带来的缓存失效问题。此外,还介绍了Magent作为Memcached代理的作用及其特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

那么,怎样进行分布式呢?这完全取决于客户端的实现

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

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

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

通过Magent缓存代理,防止单点现象,缓存代理也可以做备份。

客户端连接到缓存代理服务器,缓存代理服务器连接缓存服务器。缓存代理服务器可以连接多台Memcached机器,可以将每台Memcached机器进行数据同步。如果其中一台Memcached机器down掉,数据不会丢失并且可以保证数据的完整性。

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

   

转载于:https://my.oschina.net/suyain/blog/1865220

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值