#勇哥带你学Java#
hash算法平衡性
平衡性指的是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的缓存。这样平衡性就得到了提高。
hash算法平衡性
平衡性指的是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的缓存。这样平衡性就得到了提高。
《根据发型设计的金希澈的签名_新浪图片》手机新浪网图片频道:以图为媒,速递新闻;在这里,24小时实时更新国内外社会、娱乐、体育、军事、科技等高清大图,以影像传递资讯,以图片记录中国,呈现最真实新闻第一现场。 - photo.sina.cnhttps://photo.sina.cn/album_4_704_328332.htm?vt=4&node_id=35018&ch=4&cid=y%2Fk&cu_pos=0000&cu_domain=ent&cu_type=article&hd=1
《追星成功!金希澈祝绪丹合影_新浪图片》手机新浪网图片频道:以图为媒,速递新闻;在这里,24小时实时更新国内外社会、娱乐、体育、军事、科技等高清大图,以影像传递资讯,以图片记录中国,呈现最真实新闻第一现场。 - photo.sina.cnhttps://photo.sina.cn/album_4_704_328302.htm?vt=4&node_id=35018&ch=4&cid=y%2Fk&cu_pos=0000&cu_domain=ent&cu_type=article&hd=1
✋热门推荐