半岛体育- 半岛体育官方网站- APP下载一致性哈希算法
2025-07-07半岛,半岛体育,半岛体育app,半岛官网,半岛电竞,半岛真人,半岛棋牌,半岛体育官网注册,半岛体育官方app下载,半岛体育app下载,半岛体育怎么样,半岛体育官网,半岛体育登录入口,半岛体育官方网站一致性哈希算法常用于负载均衡中要求资源被均匀的分布到所有节点上,并且对资源的请求能快速路由到对应的节点上。先从一个分布式缓存开始说起。
如上图展示了一个分布式系统架构,为了应对日益剧增的数据访问我们通常会使用Redis作为缓存,减轻底层数据库的压力。最简单的缓存策略即将热点数据保存到所有的Redis中,每次请求时则随机选择一个Redis节点获取数据,但是这种策略会引发以下问题;
引入Hash算法在系统稳定的情况下解决了刚开始的问题,但是如果Redis集群一旦扩容或缩容,这将直接影响index的计算(N变化了),大量的数据访问会重定向到其他服务器中,造成缓存命中率下降,大大影响性能。
若现在在添加一个节点Node3,采用均分则会涉及三个节点的数据迁移,所以选择两块相邻的且占比较大的区间(数据更多)进行三等分,如此只涉及了两个节点的数据迁移:
首先,我们将复杂问题简单化,将3个节点分割整个环(360)的过程从Hash转换成一个【撒豆子问题】。emmm,这个名字自己取的。如果我们手中只有三个豆子随机的散在一个环上,将其三等分,我们有极大的概率得到一个不均匀的分配方式。
幸运的是,我们除了有三个豆子(红豆、绿豆和黄豆),我们还有三种颜色的珠子各1000颗,我们将这些珠子(虚拟节点)作为一个中间层,各撒1000颗珠子,如此,将环均分的概率大多了。如下图所示为一次虚拟节点的分布,相同颜色的区间表示一个节点。
一致性哈希算法常用于负载均衡中要求资源被均匀的分布到所有节点上,并且对资源的请求能快速路由到对应的节点上。先从一个分布式缓存开始说起。
如上图展示了一个分布式系统架构,为了应对日益剧增的数据访问我们通常会使用Redis作为缓存,减轻底层数据库的压力。最简单的缓存策略即将热点数据保存到所有的Redis中,每次请求时则随机选择一个Redis节点获取数据,但是这种策略会引发以下问题;
引入Hash算法在系统稳定的情况下解决了刚开始的问题,但是如果Redis集群一旦扩容或缩容,这将直接影响index的计算(N变化了),大量的数据访问会重定向到其他服务器中,造成缓存命中率下降,大大影响性能。
若现在在添加一个节点Node3,采用均分则会涉及三个节点的数据迁移,所以选择两块相邻的且占比较大的区间(数据更多)进行三等分,如此只涉及了两个节点的数据迁移:
首先,我们将复杂问题简单化,将3个节点分割整个环(360)的过程从Hash转换成一个【撒豆子问题】。emmm,这个名字自己取的。如果我们手中只有三个豆子随机的散在一个环上,将其三等分,我们有极大的概率得到一个不均匀的分配方式。
幸运的是,我们除了有三个豆子(红豆、绿豆和黄豆),我们还有三种颜色的珠子各1000颗,我们将这些珠子(虚拟节点)作为一个中间层,各撒1000颗珠子,如此,将环均分的概率大多了。如下图所示为一次虚拟节点的分布,相同颜色的区间表示一个节点。