专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 问答 技术问答 Hash算法平衡性

Hash算法平衡性

朕射你无罪已回答

技术,Java 是我的必备。

平衡性指的是hash的结果尽可能分布到所有的缓存中去,这样可以使得所有的缓存空间都可以得到利用。但是hash算法不保证绝对的平衡性,为了解决这个问题一致性hash引入了“虚拟节点”的概念。虚拟节点”(virtual node)是实际节点在hash空间的复制品(replica),一实际个节点对应了若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在hash空间中以hash值排列。“虚拟节点”的hash计算可以采用对应节点的IP地址加数字后缀的方式。

例如假设cache A的IP地址为202.168.14.241。引入“虚拟节点”前,计算cache A的hash值:Hash(“202.168.14.241”);引入“虚拟节点”后,计算“虚拟节”点cache A1和cache A2的hash值:

Hash(“202.168.14.241#1”);//cache A1

Hash(“202.168.14.241#2”);//cache A2

这样只要是命中cacheA1和cacheA2节点,就相当于命中了cacheA的缓存。这样平衡性就得到了提高。

浏览1,087技术问答
2021-06-28 09:45:06

聚焦热点问题
时时免费答疑

累计0人询问

极速问
  >>其他人还看过
更多问答

Java实验班

0学费 专业学前测评

Java就业班

围绕企业 直达就业

Java夜校班

业余时间学 超高性价比

Java架构师班

升职加薪 快速变现

返回顶部