Android 系统(273)---分布式Redis主备复制
分布式Redis主备复制
- 主备复制流程
- 断点续传
当数据落在不同节点上时,如何保证数据节点之间的一致性是非常关键的。Redis采用主备复制的方式保证一致性,所有节点中,只有一个节点为主节点(master),它对外提供写服务,然后异步的将数据复制到其他节点上。
主备复制流程
Redis包含master
和slave
2种节点:master 对外提供写服务;slave 节点作为master的数据备份,不可以提供写服务。主备复制由master 主动触发,流程如下所示:
- 首先slave向master发起
SYNC
命令。这一步在slave启动后触发,master 被动的将新slave节点加入主备复制集群。 - master收到
SYNC
后,开启BGSAVE
操作。BGSAVE 是Redis的一种全量持久化机制(RDB)。 BGSAVE
完成后,master将快照信息发送给slave。- 发送期间,master收到来自Client的新写入命令,除了正常响应外,在存入一份到backlog队列。
- 快照信息发送完成后,master继续发送backlog队列中的信息。
- backlog发送完成之后,后续的操作同时发给slave,保持实时的异步复制。
对于上面的slave节点,处理逻辑如下:
- 发送完
SYNC
后,继续对外提供服务; - 开始接受master的快照信息,此时会清空slave现有数据,并将master快照写入;
- 接收backlog 并执行(回放),期间对外提供读服务;
- 继续接受master的命令副本,并继续回放,从而保持和master的数据一致性。
如果有多个slave 同时发送SYNC
命令,只要第2个slave的SYNC
命令发生在master 完成BGSAVE
之前,第2个slave 将和第1个收到相同的快照和backlog;否则第2个slave的SYNC将触发master的第2次BGSAVE
。
断点续传
当每次slave 通过SYNC
和master同步数据时,master都会dump 全量数据并发送。当一个已经和master 完成了同步,并且并保持了长时间的slave,当网络断开很短时间再重新连上时,master不得不重新做一次全量的dump传送。这种无疑会增加大量的无效开销,最好的方式是只同步网络断开期间的增量数据。
Redis的 PSYNC
(Partial Sync)可以用于代替SYNC
,做到master-slave基于断点续传的主备同步协议。master-slave 2端通过维护一个offset记录当前已经同步的命令,slave断开期间,master的增量命令会保存在缓存中。当slave重连后,告知master断开时的offset,master会将后续的数据继续同步,从而完成了断点续传。
Android 系统(273)---分布式Redis主备复制相关推荐
- MySQL主备复制原理、实现及异常处理
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- MySQL建立双向主备复制server配置方法
1.环境描写叙述 serverA(主) 192.85.1.175 serverB(从) 192.85.1.176 Mysql版本号:5.1.61 系统版本号:System OS:ubuntu 10.1 ...
- mysql+mycat搭建稳定高可用集群,负载均衡,主备复制,读写分离
数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境. 主要思路 简单说,实现mysql主备复制-->利用mycat实现负载均衡. 比较了 ...
- Linux下Redis-3.0.7版本的安装以及Redis主备的部署(二)
在上一篇文章中,我们介绍了redis的安装以及开机自启动的设置和测试等工作,在接下来将要介绍redis主备的部署,同时将对上面有些遗漏的问题进行补充说明. (1)redis在直接make完就可以使用的 ...
- Redis主备+哨兵
虽然Redis有持久化功能保障Redis服务器宕机也能恢复并且只有少量数据损失,但由于所有数据都在一台服务器上,如果服务器出现硬盘故障,那就算有备份也不能避免数据丢失的问题.而且在实际生产环境中,我们 ...
- redis主备同步(使用)
2019独角兽企业重金招聘Python工程师标准>>> 本文演示了一个最简单的主备同步的例子, 在一台服务器上,启动两个redis服务,一个master,一个slave. 一.配置文 ...
- 分布式Redis深度历险-复制
Redis深度历险分为两个部分,单机Redis和分布式Redis. 更多文章见个人博客:github.com/farmerjohng- 本文为分布式Redis深度历险系列的第一篇,主要内容为Redis ...
- Linux下Redis-3.0.7版本的安装以及Redis主备的部署(一)
一.基本工具 (1) 虚拟机两台(做好快照) CentOS 6.6 192.168.1.146 CentOS 6.7 192.168.1.147 (2) 软件包 redis ...
- ODPS主备集群双向数据复制导致主备中心网络打爆问题
简介:ODPS主备集群双向数据复制导致主备中心网络打爆问题 1. 故障问题描述 客户现场发生了ODPS主备机房相互数据全量复制导致的主备中心网络被打爆的问题,严重影响了日常运行的ODPS任务.在ODP ...
最新文章
- GridView自定义分页导航
- RDKit | 基于RDKit和化学信息学探索化学空间
- 英语影视台词---八、the shawshank redemption
- .net微信公众号开发——基础接口
- pip 换清华源 更新所有库 windows
- Android 学习之路
- 单例模式的懒汉模式和饿汉模式
- android抠图软件,手机抠图软件
- 串联型直流稳压电源制作(800个电子设计案例)
- 服务器linux杀网页木马,一次Linux服务器木马查杀经历
- 服务器被ddos攻击,防止DDOS攻击?
- pytest tox.ini使用
- 上亿用户,如何高效统计独立用户访问量?
- 卡尔曼(Kalman)滤波 C++
- 二元选择模型:Probit还是Logit?
- codeforces C. Ehab and Path-etic MEXs
- uni-app - 拨打电话功能(在不同平台下,点击按钮触发一键拨号功能)
- 大数据分析师的卓越之道
- 如何用Python检查回文对联(字符串)
- 给在北漂准备租房的菜鸟一点建议
热门文章
- php5.4 升级,centos上PHP5.3升级到PHP5.4及更高版本方法
- JavaScript重难点解析2(立即执行函数IIFE,this关键字)
- php易错,PHP学习1:几种常见数据类型及其易错点
- 【重难点】【Redis 03】缓存雪崩、缓存穿透、缓存击穿、Redis 的内存过期策略、并发读写和双写
- 《深入理解 Spring Cloud 与微服务构建》第一章 微服务简介
- 【小项目】Axios 实现前后端交互
- SqlServer显示“正在还原...”
- Inside ARC — to see the code inserted by the compiler
- ruby-gems 常用命令笔记
- Powershell调用静态方法