• Redis:Redis主从复制原理


    Redis主从复制原理

    总共分为如下几个部分来说

    1.如何配置主从复制

    2.原理

    一、如何配置主从复制

    首先得到主Redis的地址,端口号。

    在从节点的配置文件中添加slaveof 配置  例如 slaveof 192.168.1.105 6379

    格式为slaveof 地址 端口号

    同时需要在主节点中将bind 127.0.0.1配置注释掉

    二、原理

      1)数据一致性的问题

        因为是分布式,所以必然存在数据一致性的问题,那么redis的数据一致性是如何做的呢

                   首先,redis有三种复制方式

                   1.全量复制

         2.增量复制

         3.无磁盘复制

                   

                   首先,全量复制(当新增从节点的时候使用)

                    

                    从节点发送Sync命令(同步命令),主节点接受到该命令后,会执行bgsave(创建子进程来写快照),然后将快照文件传给从节点,从节点再读取快照即可。

                    注意:即使主节点禁用了RDB,也无法组织此过程生成快照文件,而且由于网络或者其他原因,同步数据可能会存在延迟

                    增量复制

         

                    增量复制实现的主要方式就是主节点将命令直接传给从节点。如果从节点宕机了,会创建一个叫backlog的文件,里面会保存上一次读取数据的偏移量(offset),可以从该位置继续同步主节点的数据。

                   

         无磁盘复制

         在上面的方式中,由于需要fork子进程生成rdb快照,所以避免不了有一些性能的损耗。在redis 2.8版本时候,出现了无磁盘复制的方式

                   可以在配置中打开此配置

        

                  这个方式也是创建快照,但是区别在于是直接传输快照的数据,也就是不将快照写入磁盘中再传输,而是直接将快照数据传输给从节点。

      2)选主

           当主节点出现问题之后,就需要重新选主,redis是通过哨兵(sentinel)机制来完成的

      哨兵具有两个功能,1.检测master和slave是否正常  2.当master出现问题时,重新选举master

           那么如此就会引出一个问题,如果哨兵也挂了怎么办.

      所以,哨兵也支持集群,而且多个哨兵之间相互可以监控,以数据的一致性来完成感知。

      例如,主节点挂了,两个哨兵都感知到了,那么这两个哨兵都是正常的。

      哨兵中也有队长,通过raft一致性算法(协议)来选举,然后通过队长来决定哪个redis从节点作为主节点

      

  • 相关阅读:
    记录下首次开通流量主,开心开心
    微信小程序之本地缓存
    在使用ef的情况下,有Migrations文件,想要直接生成数据库
    CSS 设置圆角div和阴影效果
    小程序UI库(UI组件)
    没有找到可以构建的 NPM 包---小程序开发
    php 接口参数对象转数组方法
    tp5框架获取随机n条
    php图片上传base64接口上传
    php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
  • 原文地址:https://www.cnblogs.com/Miracle-boy/p/11704191.html
Copyright © 2020-2023  润新知