分布式中hash取模算法中的问题
来源:互联网 发布:我的淘宝等级怎么看 编辑:程序博客网 时间:2024/04/29 16:26
分布式中hash取模算法中的问题
常用的算法是对hash结果取余数 (hash() mod N
):对机器编号从0到N-1,按照自定义的hash()算法,对每个请求的hash()值按N取模,得到余数i,然后将请求分发到编号为i的机器。
但这样的算法方法存在致命问题,如果某一台机器宕机,那么应该落在该机器的请求就无法得到正确的处理,这时需要将当掉的服务器从算法从去除,此时候会有(N-1)/N的服务器的缓存数据需要重新进行计算;”
为何是 (N-1)/N 呢?解释如下:
比如有 3 台机器,hash值 1-6 在这3台上的分布就是:
host 1: 1 4
host 2: 2 5
host 3: 3 6
如果挂掉一台,只剩两台,模数取 2 ,那么分布情况就变成:
host 1: 1 3 5
host 2: 2 4 6
可以看到,还在数据位置不变的只有2个: 1,2,位置发生改变的有4个,占共6个数据的比率是 4/6 = 2/3这样的话,受影响的数据太多了,势必太多的数据需要重新从 DB 加载到 cache 中,严重影响性能
【consistent hashing 的办法】
上面提到的 hash 取模,模数取的比较小,一般是负载的数量,而 consistent hashing 的本质是将模数取的比较大,为 2的32次方减1,即一个最大的 32 位整数。然后,就可以从容的安排数据导向了,那个图还是挺直观的。
0 0
- 分布式中hash取模算法中的问题
- 分布式中hash取模算法中的问题
- 分布式中hash取模算法
- 5. 分布式缓存中的一致性Hash 算法
- 负载均衡指Hash取模算法
- Hash一致性算法在分布式中的应用实践
- 一致性hash算法及其在分布式系统中的应用
- 分布式系统中的算法设计(一) -- 一致性 Hash
- 一致性Hash算法在Redis分布式中的使用
- 一致性Hash算法在Redis分布式中的使用
- 一致性hash算法原理及其在分布式中的应用
- 一致性Hash算法(分布式算法)
- 分布式之取模算法的缺陷
- memcache的分布式hash算法
- hash算法和分布式服务器
- 分布式一致性Hash算法实现
- Hash取模
- 分布式算法之取模算法的缺陷
- 转载 Souces for android api 24 platform not found
- C. XOR Equation
- ios数据存储之--模型对象归档(NSKeyedArchiver、NSKeyedUnarchiver)
- mybatis中的多个参数的问题
- 小议Linux系统下的文件系统
- 分布式中hash取模算法中的问题
- Handler常见用法小结
- sqlserver触发器的使用
- FastDFS简介
- JavaScript强化教程 —— Cocos2d-JS极速调试技巧
- 戏说文件系统之ext2【上】
- pragma warning
- yii2 读写分离配置
- WIN7系统JavaEE(java+tomcat7+Eclipse)环境配置