\t\tmemcached分布式算法

memcached是缓存,所以数据不会永久保存在服务器上,而是保存在服务器内存。它不会释放已经分配的内存,当记录超时后客户端即无法命中该记录,其存储空间即可被重复使用,优先使用过期的记录空间,当空间不足时Least Recently Used(LRU),即“最近很少使用”机制来分配空间。memcached内部不会监视记录是否过期,而是在Get时查看时间戳,这种技术叫“Lazy expiration”,因此它不会在过期监视上花费CPU时间。memcached分布式算法由客户端程序实现,这种分布式是memcached的最大特点。

起初算法:根据余数计算分散
机制:键值HashCode / 服务器节点数目 =(求余) 服务器位置。当选择的服务器无法连接时,则将连接次数添加到键值后,再计算哈希值并再次尝试(Rehash)连接选择的服务器。

这种方法很好,但是当增删服务器时,缓存的命中率的确很失败,大概降低到23%。web应用中,增删缓存服务器瞬间,缓存效率会急剧下降,负载会突然集中到数据库服务器。于是,新的事物诞生了。

优化后的算法:Consistent Hashing
首先求出memcached服务器节点的哈希值,并将其配置到0~2的32次方的环上,然后用同样的方法求出数据键值的哈希值并映射到环上,然后从数据被映射到环的位置开始顺时针查找服务器位置,将数据保存在第一个找到的服务器上。如果没有找到则保持在第一个服务器上。
		memcached分布式算法 - yandavid - 我的博客

在这种算法下,增加服务器只会影响该节点位置逆时针方向的第一台服务器上的键。为了解决服务器节点位置的映射不均问题,并进一步减小增减服务器带来的缓存重分布,引入了“虚拟机点”的思想,即,每个物理节点上分配几百个点。
由服务器台数n,和增加的服务器台数m,计算增加服务器后的命中率计算公式:(1-n/(n+m)) * 100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值