Memcache的分布式

memcached是不支持分布式的,要实现分布式的memcached是需要在客户端那边实现的。就是我运行多个memcached实例,在客户端那边注册多个memcached实例,key->value对具体保存在哪个memcached实例由客户端的哈希算法决定。

对于固定的memcached实例,任何hash函数都可以比较好的定位到固定的memcached实例,但是现实中,memcached实例有可能由于机器崩溃而减少,或者添加memcached实例。对于简单的余数哈希就不能很好的解决这个问题了。

余数哈希和一致性哈希的比较:

假设我们现在有4个memcached实例

余数哈希
rehash
一致性哈希
consistanhash

最上面一排是得到key的哈希值,下面两排分别是添加设备前key存放在的机器,添加设备后key存放的数据。

如上图的余数哈希,如果我们添加了一个设备,我们以前哈希值为6的数据是存放在第2台机器上的,现在添加了一台机器之后,要想访问此数据,就得到第1台机器上找。第一台机器却没有存放过这个数据。添加1台机器之后,会造成大部分机器的缓存失效,这是我们不希望的。如果机器越多,添加1台实例影响的机器就越多。

那我们看看一致性哈希,还是上面的例子,原来有4个memcached实例(如左图),添加了1个实例后(如右图)。缓存失效的只有红色圆圈圈的那部分hash(data)。这个哈希方法对于越多的机器,添加一台机器之后影响的机器就越少。

memcached客户端采用一致性哈希的算法来选择使用那个memcached服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值