阿里技术面试题—一致性hash算法

一致性哈希算法应用领域

分布式数据存储

均衡的分配存储数据

        缓存
        Hadoop(大数据)
        搜索引擎(尤其是分布式,例如ES)
        数据库(分布式数据库-分库分表)
版本1.png
版本2.png

用户量继续增大

引出新的问题:高并发,海量数据

rides (7-8W/s并发读-3W/s并发写)、memcache 10W/s并发量
比如并发量20W左右
高并发必定集群,一台服务器撑不住并发量的时候,需要增设新的服务器,组成集群,并通过负载均衡协调组件协调

方法一: hash求余、缓存集群节点数
弊端: 如果随着业务增长,增加了新的服务器,提升集群的并发处理能力,但通过求余算法,会导致数据找不到,由此,如果问题出现在缓存服务器上,大量数据无法在缓存中找到,就会到DB中访问,大量数据同时访问DB导致缓存雪崩

d.png

hashMap中也是hash求余
基数发生变化的算法都不靠谱
集群就是随便加随便减,但这种求余等类似算法会导致工作增加等等系列问题,被坑死的感觉


方法二 : 一致性hash算法


一致性哈希算法思想.png

风险均摊,同时避免缓存雪崩,同时引入虚拟节点连接物理机器分配数据存储地址,保障新增服务器后数据处理压力均摊。

你可能感兴趣的:(阿里技术面试题—一致性hash算法)