文件名称:一致性哈希
文件大小:3KB
文件格式:PHP
更新时间:2021-11-13 08:12:46
一致性哈希
/** * 分布式缓存部署方案 * 当有1台cache服务器不能满足我们的需求,我们需要布置多台来做分布式服务器,但是 * 有个问题,怎么确定一个数据应该保存到哪台服务器上呢? * 有两种方案,第一种普通hash分布,第二种一致性哈希分布 * * 普通hash分布 * 首先将key处理为一个32位字符串,取前8位,在经过hash计算处理成整数并返回,然后映射到其中一台服务器 * $servers[$this->myHash($key) % 2] 这样得到其中一台服务器的配置,利用这个配置完成分布式部署 * 在服务器数量不发生变化的情况下,普通hash分布可以很好的运作,当服务器的数量发生变化,问题就来了 * 试想,增加一台服务器,同一个key经过hash之后,与服务器取模的结果和没增加之前的结果肯定不一样,这就导致了,之前保存的数据丢失 * * 一致性哈希算法 * 优点:在分布式的cache缓存中,其中一台宕机,迁移key效率最高 * 将服务器列表进行排序,根据$this->myHash($key) 匹配相邻服务器 */