对一致性hash的一些理解

传统hash方法有个令人诟病的缺点,就是在容量不够需要扩容的时候,所有原先存储的值都需要重新进行hash映射。 而一致性hash的目标就是为了解决这个缺点而相出的hash算法,尽可能地让重新hash的原值数变少。 附带一个中文wiki 一致hash只是一种想法,真的算法实现各有名称。 根据我对网上所说的最简单的一致hash方法的理解。这里我也简单说一下。 假设我的hash容量有 cap ,而我们实际的hash范围会比这个更大,为的是将一块区域的数值划分给槽,(所谓槽,是我的个人习惯。因为hash在我看来像是被分配到一个槽或者桶里,这里简称被hash之后的所有数值为槽)。 而每当增加一个槽(扩容),最简单的方法就是将相邻的槽里的一部分 分给新的槽。而每当减少一个槽(缩容),最简单的方法就是将它存储的数字转交给相邻的槽。 无论是扩容还是缩容,这个最简单的操作都能够使得重新hash的数量尽可能少。 然而,这个最简单的方法当然是不靠谱的,因为它首先在负载上是根本谈不上均衡的。 一个可行的解决办法是。 将原先的cap个大区域,分成cap个 若干小区域的集合。 怎么说…