PHP中如何实现一致性哈希算法的分布算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1505个文字,预计阅读时间需要7分钟。
目录+传统算法缺陷+算法思想+算法实现+总结+传统算法缺陷+对于服务器分片,我们要考虑的方面有如下三点:数据平均分布,查找定位准确,降低停机影响。+传统算法一般是将数据的键作为分片依据。
目录
- 传统算法缺陷
- 算法思想
- 算法实现
- 总结
传统算法缺陷
对于服务器分布,我们要考虑的东西有如下三点:数据平均分布,查找定位准确,降低宕机影响。
传统算法一般是将数据的键用算法映射出数字,对其用服务器数量取模,并根据结果选择要存储的服务器。其能达到数据平均分布和查找定位准确的要求,并且优点是算法简单,存取时的计算量都比较小(在数据非常大时才会明显)。
但其有一个致命缺点,即一个服务器宕机后的影响很大,我们可以推算一下一台服务器宕机后的影响:
- 原有数据大部分丢失:服务器数量减少一台,取模数减1导致取模值错乱,如果以前有N台服务器,那么宕机后数据只有1/(n*(n-1))的数据能够被准确查找到。
- 负载无法均衡导致集体宕机:如果没有及时处理宕机的服务器,那么他的存储任务将会被顺序积累给它的下一个服务器,那么下一个服务器也会很快被压致宕机,如此一来,服务器组很快会集体宕机。
算法思想
一致性哈希算法是使用一定的哈希算法,将大量的数据平均映射到不同的存储目标上,在保证其查找准确性的同时,还要考虑其中一个存储目标失效时,其他存储目标对其责任存储内容的负载均衡。
本文共计1505个文字,预计阅读时间需要7分钟。
目录+传统算法缺陷+算法思想+算法实现+总结+传统算法缺陷+对于服务器分片,我们要考虑的方面有如下三点:数据平均分布,查找定位准确,降低停机影响。+传统算法一般是将数据的键作为分片依据。
目录
- 传统算法缺陷
- 算法思想
- 算法实现
- 总结
传统算法缺陷
对于服务器分布,我们要考虑的东西有如下三点:数据平均分布,查找定位准确,降低宕机影响。
传统算法一般是将数据的键用算法映射出数字,对其用服务器数量取模,并根据结果选择要存储的服务器。其能达到数据平均分布和查找定位准确的要求,并且优点是算法简单,存取时的计算量都比较小(在数据非常大时才会明显)。
但其有一个致命缺点,即一个服务器宕机后的影响很大,我们可以推算一下一台服务器宕机后的影响:
- 原有数据大部分丢失:服务器数量减少一台,取模数减1导致取模值错乱,如果以前有N台服务器,那么宕机后数据只有1/(n*(n-1))的数据能够被准确查找到。
- 负载无法均衡导致集体宕机:如果没有及时处理宕机的服务器,那么他的存储任务将会被顺序积累给它的下一个服务器,那么下一个服务器也会很快被压致宕机,如此一来,服务器组很快会集体宕机。
算法思想
一致性哈希算法是使用一定的哈希算法,将大量的数据平均映射到不同的存储目标上,在保证其查找准确性的同时,还要考虑其中一个存储目标失效时,其他存储目标对其责任存储内容的负载均衡。

