zoukankan      html  css  js  c++  java
  • 09.redis集群

    实现可靠缓存服务即热点数据保存。redis持久化,集群,哨兵,主从,缓存击穿,热点key。

    redis有哪几种集群

    1、主从模式
    2、哨兵模式
    3、codis

    redis主动同步机制

    RDB
    1、全量同步:从服务器把有的数据全部丢弃,让主服务把所有数据全部发给他
    AOF
    1、增量同步:主服务器只发送从服务器缺少的数据
    redis主从同步应该采用哪种方式
    1、主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。
    2、当然,如果有需要,slave 在任何时候都可以发起全量同步。
    3、redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

    redis主从

    1、写主库、读从库,减轻服务器读压力
    2、缺点:但是redis主从不能自动切换master,所以master如果挂掉了,整个集群都不可以写入啦

     哨兵模式如何解决主从问题

    1、当用Redis做主从方案时,假如master宕机,Redis本身无法自动进行主备切换
    2、而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

    sentinel原理

    1、sentinel负责持续监控主节点的健康,当主节挂掉时,自动选择一个最优的从节点切换成主节点
    2、从节点来连接集群时会首先连接sentinel,通过sentinel来查询主节点的地址
    3、当主节点发生故障时,sentinel会将最新的主节点地址告诉客户端,可以实现无需重启自动切换redis

     sentinel缺点

    1、redis的slave和master数据时完全一样的,但是有个问题,redis数据时存储在内存中
    2、内存空间有限,所以哨兵模式不能处理大的数据量

    codis

    为什么会出现codis

    1、在大数据高并发场景下,单个redis实例往往会无法应对
    2、首先redis内存不易过大,内存太大会导致rdb文件过大,导致主从同步时间过长
    3、其次在CPU利用率中上,单个redis实例只能利用单核,数据量太大,压力就会特别

    codis部署方案

    1、单个codis代理支撑的QPS比较有限,通过启动多个codis代理可以显著增加整体QPS
    2、多codis还能起到容灾功能,挂掉一个codis代理还有很多codis代理可以继续服务

     codis分片的原理

    1、codis负责将特定key转发到特定redis实例,codis默认将所有key划分为1024个槽位
    2、首先会对客户端传来的key进行crc32计算hash值,然后将hash后的整数值对1024进行取模,这个余数就是对应的key槽
    3、每个槽位都会唯一映射到后面的多个redis实例之一,codis会在内存中维护槽位和redis实例的映射关系
    4、这样有了上面key对应的槽位,那么它应该转发到那个redis实例就很明确了
    5、槽位数量默认是1024,如果集群中节点较多,建议将这个数值大一些,比如2048,4096

  • 相关阅读:
    Web.xml配置----字符过滤器
    软工第一次作业——自我介绍
    软工第一次作业
    软工实践个人总结
    福州大学结对编程作业(2)
    福州大学结对编程作业(1)
    福州大学软件工程第一次编程作业
    福州大学软件工程第一次个人作业
    软件工程个人总结
    2020软件工程第二次结对作业
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14581565.html
Copyright © 2011-2022 走看看