1 普通哈希算法负载均衡
尽管根据哈希算法的均匀性,当数据量足够大时,每台服务器的数据负载是几乎均匀的。
但当某台节点出现故障或扩充节点时,就需要对每台服务器的数据重新分配,数据迁徙的开销大。
2 一致性哈希算法负载均衡
- 对每台服务器按性能分配一定数量的虚拟节点
- 每个虚拟节点通过哈希函数,可离散的分部在 “环”上
- 当需要插入数据时,就将其分配到,该数据的哈希值在环上顺、逆时针最近的一个虚拟节点上
- 当减少或增加服务器时,仅需对部分虚拟节点上的数据进行迁徙,从而减少了开销
另:环的实现
算出每台虚拟节点的哈希值,并进行排序,存入数组中。当需要新插入数据到某台节点时,将数据的哈希值,在数组中进行二分查找,找出距离最近且大于其哈希值的虚拟节点(即顺时针方向最近),再将该数据分配到虚拟节点对应的物理服务器节点即可。