美文网首页redis
分布式一致性hash算法在缓存中的应用

分布式一致性hash算法在缓存中的应用

作者: 小蜗牛Aaron | 来源:发表于2020-03-03 07:49 被阅读0次

    hash+取模

    分布式缓存集群

    示例: 3个节点的集群,数据 World:888
    假设: hash(World) = 200
    则数据放到服务器2上 200%3 = 2
    场景:高并发场景,集群临时扩容,加一台机器!服务器3
    Redis 数据
    hash(World) = 200;200%4 = 0 再次读取,key对应的节点发生了变化
    直接导致数据缓存命不中!
    增加一个节点后,有多大比例的数据缓存命不中?

    一致性hash算法

    • hash值一个非负整数,把非负整数的值范围做成一个圆环;

    • 对集群的节点的某个属性求hash值(如节点名称),根据hash值把节点放到环上;

    • 对数据的key求hash,一样的把数据也放到环上,按顺时针方向,找离它最近的节点,就存储到这个节点

    • 增加一个节点影响几何?
      影响部分数据,(0~1)/3,取个中值 1/6 。

    新增的节点一定能缓解服务器压力吗

    不能

    集群的节点一定会均衡分布在环上吗?

    不能 hash有倾斜

    解决方案

    提前分配虚拟节点


    虚拟节点越多,分布越均衡。 虚拟节点越多,新增节点对原有节点影响越均衡

    redis的slots

    高性能体系之二级缓存

    二级缓存 J2cache

    1、客户端向服务器发送请求
    2、服务端先从缓存获取
    3、 本地缓存未命中 从分布式缓存获取
    4、 分布式缓存未命中 从数据库获取

    解决的问题
    1、使用应用缓存 服务器启动 缓存雪崩 导致大量请求传给数据库
    2、使用本地缓存带来的问题多节点无法共享数据
    3、使用分布式缓存带来的问题是带宽跑满 redis压力不高

    高并发系统架构方案

    数据库缓存

    show status like '%Qcache%’;
    缓存命中率


    show variables like 'query_cache';
    数据库查询缓存

    应用级缓存
    代理服务器缓存

    相关文章

      网友评论

        本文标题:分布式一致性hash算法在缓存中的应用

        本文链接:https://www.haomeiwen.com/subject/xhqflhtx.html