memcached缓存服务器一致性hash算法分析
2015-05-20 09:20
155 查看
当Memcached服务器数量固定时,普通Hash分布可以很好的运作。但是当服务器数量发生改变时,问题就出来了。因为同一个KEY经Hash算法处理后,与服务器数量取模,会导致结果与服务器数量未变化时不同,这就导致之前保存的数据丢失。采取一致性Hash分布可以有效的解决这个问题,把丢失的数据减到最小(注意这里并没有说完全不丢失)。
一致性Hash分布算法分4个步骤:
步骤1:将一个32位整数[0 ~ (2^32-1)]想象成一个环,0 作为开头,(2^32-1) 作为结尾,当然这只是想象。
步骤2:通过Hash函数把KEY处理成整数。这样就可以在环上找到一个位置与之对应。
步骤3:把Memcached服务器群映射到环上,使用Hash函数处理服务器对应的IP地址即可。
步骤4:把数据映射到Memcached服务器上。查找一个KEY对应的Memcached服务器位置的方法如下:从当前KEY的位置,沿着圆环顺时针方向出发,查找位置离得最近的一台Memcached服务器,并将KEY对应的数据保存在此服务器上。
一致性Hash分布算法分4个步骤:
步骤1:将一个32位整数[0 ~ (2^32-1)]想象成一个环,0 作为开头,(2^32-1) 作为结尾,当然这只是想象。
步骤2:通过Hash函数把KEY处理成整数。这样就可以在环上找到一个位置与之对应。
步骤3:把Memcached服务器群映射到环上,使用Hash函数处理服务器对应的IP地址即可。
步骤4:把数据映射到Memcached服务器上。查找一个KEY对应的Memcached服务器位置的方法如下:从当前KEY的位置,沿着圆环顺时针方向出发,查找位置离得最近的一台Memcached服务器,并将KEY对应的数据保存在此服务器上。
相关文章推荐
- OpenStack_Swift源代码分析——Ring基本原理及一致性Hash算法
- libmemcached一致性hash算法详解(1)----php-memcached客户端一致性哈希与crc算法共用产生的bug分析
- OpenStack_Swift源码分析——Ring基本原理及一致性Hash算法
- 源码分析Memcached-Java-Client一致性hash算法
- python学习(swift 一致性hash算法分析)
- libmemcached一致性hash算法详解(1)----php-memcached客户端一致性哈希与crc算法共用产生的bug分析
- 一致性hash算法 - consistent hashing
- memcache的一致性hash算法
- C64x+DSP CACHE 一致性问题分析
- 对一致性Hash算法,Java代码实现的深入研究
- 一致性hash算法与java实现
- 数据库并发一致性案例分析
- Hash算法冲突解决方法分析
- 数据库并发一致性案例分析
- 一致性hash算法
- 一致性Hash算法
- memcache的一致性hash算法使用
- Hash算法冲突解决方法分析
- 一致性Hash算法背景(转)
- 对一致性Hash算法,Java代码实现的深入研究