《redis》7-redis的主从一致性

redis为了保证高可用性,除了使用AOF保证启动之后能恢复数据,还要保证不中断服务,这样的才能实现高可用,最简单的例子就是增加服务器的数量,却别于一般的web服务的增加,redis是数据存储,需要保证数据的正确性和一致性。所以redis设计了多服务的主从模式:

redis主从模式:

  1. 主从模式,一个master,多个follower从master服务器同步数据

《redis》7-redis的主从一致性_第1张图片

  1. 主从从模式,一个master,A,B,C三个follower从master同步数据,E,F,G从A同步数据,即redis服务A既是master的follower,又是E,F,G的master
  2. 读操作:master,abcefg等服务器都能提供服务
  3. 写操作,只能写到master服务,然后通过网络同步数据到其他服务器

创建主从服务:

  1. 启动多台redis服务,A地址,154.22.12.144。B地址154.22.12.146
  2. 选择A_redis服务为主库,B_redis服务器上执行命令:replicaof 154.22.12.144 6379,就在A/B之间建立起了主从关系

同步过程:

  1. 按照上面的方式建立连接,协商同步
  2. 主库生成RDB文件,传输给从库,从库清空自己的数据,用RBD文件恢复数据
  3. 主库在生成RDB之后,会记录所有的写操作到专门的replication buffer,会把这部分记录同步给从库,保证数据一致。因为一个主库对应多个从库,所以在replication buffer上要记录每个子库的同步位置。

同步时网络中断怎么办:

  1. 主库除了replication buffer之外,还有一个repl_backlog_buffer 的环形缓冲区,记录者replication buffer一样的操作记录
  2. 主库保存自己的操作位置,每次写操作都会+1;
  3. 从库保存自己的操作位置,每次同步请求发送给主库
  4. 主库比较两个位置,如果小于主库的位置,继续发送日志
  5. 缺点,如果操作频繁,主库的位置会超越从库的位置,数据丢失,所以这个缓冲区要设置大一点repl_backlog_size是每秒缓冲的4倍大小,所以主库的存储空间不能设置太大,导致RDB空间太大,同步时间够长。从库数量也不要太多,防止数据丢失。

主从从模式:

  1. 为了避免主库一直处于从库的同步请求处理业务之中,减少主库的压力,可以分级链接

《redis》7-redis的主从一致性_第2张图片

把从库3和4的压力转移到从库2上面去。

 

你可能感兴趣的:(redis,redis,主从同步,数据一致)