Redis —— 主从复制

目录

一、CAP原理

二、增量同步

三、快照同步

四、无盘复制


一、CAP原理

分布式系统理论基石是CAP原理,保证可用性的前提下,才有了一致性。主从复制目的是为了数据的最终一致性,但是无法达到严格一致性,只是尽量做到数据不丢失。主从复制也可以达到读写分离,由replica-read-only配置参数决定。

C:Consistent(一致性):各节点数据相同

A:Avaliability(可用性):节点挂掉,整个服务可用

P:Partition tolerance(分区容忍性):不同分区数据差别不大

网络分区:网络断开导致各节点数据不一致,导致了C与A两难全。

二、增量同步

如上图所示,增量同步的核心是:定长的环形数组buffer,该数组大小由repl-backlog-size配置参数决定。存放修改指令并异步同步到从节点。网络连接不好或repl-backlog-size太小,导致buffer头被覆盖,进而导致增量同步失败,则需进行快照同步(第三节)。

 如下所示,是redis主从复制相关的配置参数:

# 主从复制
################################# REPLICATION #################################

# 从节点配置主节点的IP及端口号
# replicaof <masterip> <masterport>

# 主节点的auth(主节点配置了requirepass)
masterauth abcdef

# 主节点的用户
# masteruser <username>

# 主从复制时,yes:可以回复客户端请求;no:复制进行中
replica-serve-stale-data yes

# 从节点只读模式
replica-read-only yes

# 是否启用无盘复制(默认不):disk or socket
repl-diskless-sync no

# 启用无盘复制的的延迟时间,以便等待更多的从服务器连接上来
repl-diskless-sync-delay 5

# 环形定长数组buffer的大小设置
# repl-backlog-size 1mb

# 其他配置参数
repl-diskless-load disabled
# repl-ping-replica-period 10
# repl-timeout 60
repl-disable-tcp-nodelay no
# repl-backlog-ttl 3600
replica-priority 100
# min-replicas-to-write 3
# min-replicas-max-lag 10
# replica-announce-ip 5.5.5.5
# replica-announce-port 1234

三、快照同步

如图所示,快照同步进行一次bgsave生成快照文件,该文件发送到从节点完成数据复制。这期间产生的修改,使用增量同步。最终达到数据数据一致性。避免快照复制死循环,repl-backlog-size配置尤为重要(见第二节)。

四、无盘复制

无盘复制,复制期间没有磁盘的参与,即:无需bgsave,直接遍历redis内存通过socket发送给从节点。是否启用无盘复制由repl-diskless-sync配置参数决定,默认no不启用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值