ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

十分钟了解什么是一致性哈希

2020-11-01 19:32:59  阅读:199  来源: 互联网

标签:取模 hash 十分钟 哈希 一致性 节点 圆环


一致性哈希解决什么问题?
传统哈希算法在桶位数量变更时,需要对所有桶位的数据重新计算哈希,绝大部分数据都要迁移,在分布式环境中,这个扩容和缩容的代价是非常大的,需要有一种算法尽可能减少这个迁移的数据量。

为了解决这个问题,一致性hash它来了

什么是一致性哈希
一致性哈希和传统哈希一样使用取模运算,区别在于传统哈希是对节点数量进行取模,一致性哈希是对232进行取模,将0-232这个范围的值组成了一个虚拟圆环。一共可容纳2^32-1个节点。

将主机名进行一致性哈希函数c-hash()计算,就可以确定主机在圆环上的位置。

一致性哈希对于key的读写寻址有两步
1.将key进行c-hash(key)计算,确定在圆环上的位置。
2.然后顺时针方向找到这个位置后的第一个主机节点,从这个节点进行put或get

缩容/故障,导致节点数减少时,一致性hash是怎么处理的呢?

扩容的时候是如何处理的?

一致性哈希的圆环节点越多,分布越均衡,就越不容易出现负载不均。当节点较少时出现数据不均衡的问题怎么办?

如图

可以将物理节点映射成多个虚拟节点,均匀分布到圆环,指向NodeA开头虚拟节点的数据,最终都会访问物理节点NodeA。

标签:取模,hash,十分钟,哈希,一致性,节点,圆环
来源: https://www.cnblogs.com/powerjiajun/p/13910825.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有