分布式存储方案
我们都知道,当数据量大了的时候,我们都会选择使用多台服务器共存数据,通过 取模方式进行随机分配服务器存储.
例如: 将用户的1亿订单数据分配到3台服务器上,进行分表存储....可以查看文章:http://www.php20.cn/article/sw/hash/253
通过hash算法,将数据尽可能的平均分配到每一台服务器上,
分布式一致性哈希
在上面的存储方案中,我们可以实现对服务器数量进行取模随机分配...但是,当我们需要扩容服务器,或者进行服务器减配时,就会发现所有的键都需要重新取模分配,那么有什么方法可以尽可能的降低影响吗?...哈希环
我们首先定义一个0~2^32的数组,同时将数组抽象成一个圆形,0和2^32首尾相连
?
将服务器节点,通过取模的方式定位到哈希环中:
?...增加服务器节点
当需要增加服务器节点时.首先先服务器通过取模,定位到哈希环的点中.
?
当定位成功后,意味着 服务器1 的数据需要额外分配,而服务器0,服务器2的数据完全没有变化.