zoukankan      html  css  js  c++  java
  • redis缓存架构-03-redis下的replication以及master+slave

    1.master和slave的读写分离(水平扩容支持读高并发)

      

    2.master主从复制流程

      master开始复制给slave前的认证流程

        

        master向slave复制流程

      

      2.1 无磁盘化复制配置

        repl-diskless-sync yes #开启无磁盘化复制

        repl-diskless-sync-delay 5 #等待一定时间,看是否有其他的slave进行连接,然后进行复制

      2.2 断点续传

        master和slave节点会创建一个backlog,用来存储replica offset和master id,如果断网后重新连接,slave会让master从上次的replica offset开始继续复制,但是如果没有找到对应的offset,就会进行一次全量复制。

        slave会每秒上报自己的offset给master,master也会保存每个slave的offset。

      2.3 过期key的处理

        slave不会过期key,只会等待master过期key。

        如果master过期了key,或者通过LRU淘汰了key,那么master会模拟发送一条del命令给slave。

      2.4 建议必须开启master的持久化,不能采用slave的备份数据作为master的数据热备

        1)可能在master宕机时还没有数据,一旦重启,会将所有的slave数据清空

      2.5 master run id

        可以通过 info server,查看master的run id 

        slave会根据run id 定位master,如果run id 发生了变化,就会进行全量复制。

        redis 每次重启都会改变run id ,可以通过redis-cli debug reload命令来限制run id的修改。

      2.6 全量复制

        1)master将生成的rdb发送给slave,如果复制时间超过了60s,那么slave就会认为复制失败。可以通过调节repl-timeout 60这个参数进行调整

        2)client-output-buffer-limit slave 256MB 64MB 60   #在复制过程中,如果内存缓冲区持续60秒超过64MB,或者瞬间超过256MB,那么就停止复制,复制失败。

        

  • 相关阅读:
    Python接入支付宝进行PC端支付
    python3.6安装pycrypto,pycrytodome和crypto
    Redis
    python时区设置——pytz模块
    redis介绍以及安装
    转译符,re模块,random模块
    正则表达式
    走进模块
    面向对象进阶
    pycharm快捷键
  • 原文地址:https://www.cnblogs.com/lifeone/p/9330293.html
Copyright © 2011-2022 走看看