redis-主从数据一致

高可用需要保持数据尽量不丢失,服务尽量少中断,redis使用AOF/RDB来实现数据尽量不丢失

redis如何保证尽量少的服务不中断呢?

redis提供了主从库模式,为了保证数据一致性,主从库使用读写分离,任何节点都可以提供读操作,主库才能

提供写操作,然后主库同步数据到从库

思考一下为什么不所有的库都一起提供读写服务呢?

多库用来提供读写功能 ,就导致多个库数据不一致,需要考虑同步问题

使用主库提供写的功能后解决了多个库数据版本不一致的问题,紧接着需要处理的是数据同步的问题

1. 从库第一次与主库建立连接 主库会生成rdb文件传给从库,同步期间的命令写到缓冲区中,等从库同步完发送缓冲区数据给从库同步

上面是正常情况,如果出现断线了怎么办呢?

在正常的情况下,主库和从库都会各自保存着一份复制偏移量,在正常的情况下主从的复制偏移量是相同的,

在断线期间,主从的复制偏移量会不一致,从库会去重连主库,带着偏移量和runid,runid是主库的id,复制积压缓冲区内保存的是主库的写操作和最新的偏移量,

如果复制积压缓冲区中大于从库复制偏移量的那部分数据还在就部分复制

如果不存在就全量同步

2. 并且从库每1秒发送复制偏移量到主库,不一致就需要同步,如果主库没10秒发送心跳到从库,收不到所有从库的心跳超过10秒 或者 从库数量小于3,主库拒绝服务

新数据是异步写入slave的

原文地址:https://www.cnblogs.com/isnotnull/p/14551065.html