STL ④ —— 哈希-5. 分布式一致性hash

时间:2024-03-30 22:42:54
  • 背景:
    • 分布式一致性 hash 算法将哈希空间组织成一个虚拟的圆环,圆环的大小是 2^32;
    • hash(key) % bit_size = index
    • hash(ip) % 2^32,最终会得到一个 [0, 2^32 - 1] 之间的一个无符号整型,这个整数代表服务器的编号;多个服务器都通过这种方式在 hash 环上映射一个点来标识该服务器的位置;当用户操作某个 key,通过同样的算法生成一个值,沿环顺时针定位某个服务器,那么该 key 就在该服务器中。
      在这里插入图片描述
  • 解决了什么问题?
    • 解决了分布式缓存扩容的问题
  • 如何解决?
    • 当服务器节点增加时,用户所存的服务器节点就会改变,这样就会导致全局缓冲失效
    • 通过固定算法,即取余的值固定,为2^32,这样增加服务器节点时,全局缓存失效变成局部缓存失效,也就是增加节点的周围的用户缓存失效了
    • 再通过数据迁移的方法,将失效用户的缓存迁移到正确的服务器节点,就可以避免局部缓存失效
    • 通过加入虚拟节点,可以保证数据均衡
      在这里插入图片描述