hash之一致性hash算法

一致性hash算法的主要应用于分布式数据储存的场景下。
下面一步步解析为什么使用一致性hash算法:
以缓存为例
缓存的使用目的:提高数据访问性能,缓解数据库压力。(以空间换取时间)
互联网公司的分布式高并发系统的特点:高并发,海量数据
处理高并发的方法:分布式集群
因为单机缓存不能承受高并发 例如Redis,Memcache的并发量可以达到12W并发 ,但往往数据量会更大
所以需要缓存集群
海量数据对缓存的影响:需要分布式缓存集群,分片存储。
一,为了将数据均衡的分布到缓存上使用hsah算法(hash求余 hash(key)%集群结点数)
在这里插入图片描述
假如有结点的3个,数据量是666,若hash(666) =100,则
100%3=1 放在服务器 1上。
如果增加一台服务器,则 100%4=0,则数据无法在缓存上找到。
3–>4太服务器 则有75%的数据无法命中。(最小公倍数)
若 99–>100 则有99%的数据无法命中。则大量数据无法在缓存上找到,则需要访问数据库,导致数据库雪崩。
由此可见使用hash,解决方法只有:加班,在数据库访问量少的时候来扩容,预热数据。

二,使用一致性hash
实现原理:
在这里插入图片描述
增加结点后:
在这里插入图片描述
如图,对原来的存储 5号的影响为0,而4号的影响最大可达1/3,而且只能影响到2号结点,
对其他结点没有影响。而且根据集群结点算出来的hash值不是均衡分布的,可能会是如下:
在这里插入图片描述
三,采用一致性hash和虚拟结点
对于缓存集群计算出若干的虚拟结点。
在这里插入图片描述
虚拟结点数越多,分布越均匀 。
当增加一个结点时,虚拟结点数越多,对原结点的影响越均衡。
则不命中的数会变为如:3---->4 1/4
因为是均衡分布,所以每个都是缓存上都是1/4,故而1/4将受到影响。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值