0%

一致性Hash算法

前言

  一致性哈希算法在1997年由麻省理工学院提出,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP(公用地址冗余协议)十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT(分布式哈希)可以在P2P环境中真正得到应用。
  在Memcached中的分布式缓存中、Redis的cluster模式也用到了该算法。

具体实现

我们通过一张图片来具体的阐述一致性hash算法。

原理:一致性Hash算法是使用了一种一致性Hash环数据结构来实现key到缓存服务器的hash映射。一致性Hash环将环分为0~2^32-1,查找key值的时候,计算key的hash值,然后在hash环上顺时针查找距离这个key最近的缓存服务器结点,完成key到缓存服务器的映射查找。

一致性Hash算法的优点和缺点

优点——容错性和可扩展性

如果结点B不幸挂了,只影响hash值在结点A和结点B之间的key的存储。增加一个结点也只影响一部分数据的重新映射。

缺点——数据不均匀

如果结点过少,不能保证结点均匀分布在一致性Hash环上,这个时候需要增加一些虚拟结点,让数据在缓存服务器的分布更加的均匀。

原创技术分享,您的支持将鼓励我继续创作。