Redis-主从同步

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zanpengfei/article/details/85343011

1、CAP原理:分布式系统理论基石

      1C - Consistent ,一致性,A - Availability ,可用性,P - Partition   tolerance ,分区容忍性

2、网络分区:网络断开的场景

3、特点:网络分区发生时,一致性和可用性俩难全

4、最终一致性:Redis主从数据是异步7同步的。所以分布式的Redis不满足一致性的要求,但是Redis的主节点修改数据后,立即返回,即使主从网络断开,主节点依旧能正常对外提供服务,所有Redis满足可用性;如果网络断开,主从节点的数据将出现大量不一致,一旦网络恢复,从节点会采用多种策略同步主节点的数据,继续尽量保持与主节点一致。最终也就保证了最终一致性

5、增量同步:Redis开始同步的是指令流,主节点会将哪些对自己状态有修改的指令,保存到本地Buffer中,然后异步同步到从节点,从节点一边执行同步指令,一边反馈同步同步的偏移量,本地Buffer的大小是有限的,如果从节点由于网络断开或者其他的原因,短时间无法与主节点同步,Redis主节点中哪些没有同步的指令在buffer中可能被后续的指令覆盖掉了,这时候就要执行更复杂的同步机制-快照同步

6、快照同步:他首先在主库上进行一次bgsave,将当前内存数据全部快照到磁盘文件中,然后再将快照文件的内容全部传送到从节点,从节点接受完毕后,立刻执行一次全量加载,加载之前,清空当前内存数据,加载完成后,继续进行增量同步

     由于在快照同步的过程中,主节点复制的buffer还在不停的向前移动,如果快照时间太长或者是buffer太小,会导致当前的buffer数据又被后续的数据覆盖掉,这样会导致无法进行增量同步,然后再发起一次快照同步,所以要配置一个合适的复制buffer大戏哦参数

7、无盘复制:Redis在2.8.18版本开始支持,指主服务器直接通过套接字将快照内容发送到从节点,主节点一边遍历内存,一边将序列化的内容发送到从节点,从节点将收到的内容持久化到磁盘文件中,再进行一次加载,省略了主节点持久化内存的过程,提高了同步效率

8、wait指令:在Redis3.0版本以后,可以让异步复制变为同步复制,确保系统的强一致性(不严格),指令 wait N t   ,N的含义是从库的数量N,t以毫秒为单位,表示等待wait命令之前所有的写操作同步到N个从节点最多等待的时间,如果t为0,表示无限等待,直到同步完成,但是如果同步过程中,发生分区,则wait指令会永远阻塞,Redis服务器将丧失可用性。

9、主从主要是为了保障Redis的高可用性,同时也能兼顾提升性能

猜你喜欢

转载自blog.csdn.net/zanpengfei/article/details/85343011