1

简介: 【10月更文挑战第4天】

主从复制:多副本

经过数据持久化以后,当Redis实例发生宕机时,就可以用持久化文件快速恢复Redis中的数据。但是恢复数据也依旧需要时间,在此期间业务依旧会无法提供服务,这时候就需要更好的方案
一个实例宕机,只能用恢复数据来解决,那么我们是否可以部署多个Redis实例,然后让这些实例的数据保持实时同步,这样当一个实例宕机时,在剩下的实例里选择一个继续提供服务就好了。
这也就是主从复制-多副本,其中实时读写的节点是master,另一个实时同步数据的节点是slave。
优点是:

  • 缩短不可用时间:master发生宕机,可以手动把slave提升为master继续提供服务
  • 提升读性能:slave可以承担一部分读请求,提升应用的整体性能
    缺点是:
    当master宕机的时候,需要手动把slave提升为master,这也是花费时间的,而且需要人工介入。
    所以需要把切换的过程变成自动化,这也就是一个故障自动切换机制,也就是常常听到的哨兵机制

    哨兵:故障自动切换

    引入一个观察者,实时监测master的健康状态,这个观察者就叫做哨兵。
    具体来说:
  1. 哨兵每隔一段时间就询问master是否正常
  2. master正常回复表示状态正常,回复超时表示异常
  3. 哨兵发生异常,发起主从切换

这里还会有一个问题是 如果master和哨兵之间的通信有网络异常,可能会产生误判。
解决方案是:部署多个哨兵让他们分布在不同的机器上,一起监测master的过程就变成了这样:

  1. 每个哨兵间隔一段时间就询问master是否正常
  2. 如果有一个哨兵判定master异常,就询问其他哨兵,如果有大于等于x个哨兵都认为master异常,才判定master发生了故障,进行主从切换。

    哨兵判定master异常后,还有一个问题:由哪个哨兵来发起主从切换呢?
    答案是选出一个哨兵领导者,由领导者进行主从切换。通过一定的选举规则和投票来选举哨兵领导者。

    • 每个哨兵都询问其他哨兵,请求对方为自己投票
    • 每个哨兵只投票给第一个请求投票的哨兵,而且只能投票一次
    • 首先拿到超过半数投票的哨兵,当选为领导者,发起主从切换。

这个选举过程就是分布式系统领域中的共识算法,在多个机器部署哨兵,它们需要共同协作完成一项任务,就组成了一个分布式系统。

目录
相关文章
|
12天前
|
存储 Java API
Elasticsearch 7.8.0从入门到精通
这篇文章详细介绍了Elasticsearch 7.8.0的安装、核心概念(如正排索引和倒排索引)、RESTful风格、各种索引和文档操作、条件查询、聚合查询以及在Spring Boot中整合Elasticsearch的步骤和示例。
76 1
Elasticsearch 7.8.0从入门到精通
|
7天前
|
监控 数据可视化 项目管理
CM模式是什么?如何应用?
CM 模式(Construction Management)即建设管理模式,起源于20世纪60年代的美国,通过专业的建设管理团队在项目早期介入,优化设计方案,协调各方资源,有效提升项目质量和进度控制。该模式已广泛应用于各类建筑工程,并不断创新发展,适应数字化、绿色建筑及国际化需求。未来,CM模式将继续推动建筑行业的进步。
|
16天前
|
机器学习/深度学习 人工智能 TensorFlow
利用AI技术实现智能垃圾分类
【8月更文挑战第67天】随着人工智能技术的不断发展,越来越多的应用场景开始涌现。本文将介绍如何利用AI技术实现智能垃圾分类,通过代码示例和实际应用案例,帮助读者了解AI技术在垃圾分类领域的应用价值和潜力。
67 19
|
1月前
|
监控 文件存储 Docker
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
与电脑不同,NAS通常7x24小时运行,便于下载资源,解决BT/PT下载需长时间在线的问题。因此,qBittorrent、Transmission等下载管理工具成为NAS用户的必备应用。通过Docker,用户可在多种NAS设备上快速安装这些工具,并通过局域网IP地址+端口访问。然而,缺乏公网IPv4地址导致远程访问困难,贝锐花生壳提供了解决方案,允许无公网IP情况下通过固定域名远程访问NAS中的下载工具,简化了部署过程,使用户能随时随地控制家中的下载任务。
182 33
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
|
6天前
|
缓存
CORS 报错的常见原因
【10月更文挑战第6天】
|
19天前
|
安全 网络协议 网络安全
网络安全与信息安全:漏洞、加密与意识的三重奏
【9月更文挑战第32天】在数字世界的交响乐中,网络安全是那不可或缺的乐章。本文将带您深入探索网络安全的三大主题:网络漏洞的识别与防范、加密技术的奥秘以及安全意识的重要性。通过深入浅出的方式,我们将一起揭开这些概念的神秘面纱,并学习如何在实际生活中应用它们来保护自己的数字足迹。让我们开始这场既刺激又富有教育意义的旅程,提升个人和组织的网络安全防御能力。
|
16天前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
24天前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
11天前
|
消息中间件 人工智能 Cloud Native
|
6天前
|
C语言
c语言回顾-函数递归(上)
c语言回顾-函数递归(上)
24 2