redis的集群

高可用方案

1、持久化

2、高可用 主从复制 哨兵模式 集群

主从复制: 主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用

主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

缺陷:故障无法自动恢复,需要人工干预,写操作的负载均衡

主从复制的工作原理
主从复制的工作原理流程图

1、建立连接:slave向主发送一个syn command(同步),请求和主节点建立连接

2、主节点收到请求之后,他不管slave是第一次连接还是重新连接,主节点都会启动一个后台进程,执行BGSAVE,主节点会把所有修改数据记录的命令加载到缓存和数据文件之中

3、数据文件创建完毕之后,master把数据文件传送给slave,slave会把这个数据文件,先保存到硬盘,然后再加载到内存

主从复制实验

架构(redis服务器)

20.0.0.20 主

20.0.0.21 从1

20.0.0.22 从2

关闭防护墙和安全机制
主配置
vim /etc/redis/6379.conf
监听地址为
0.0.0.0
700行
no改为yes
重启服务配置从1
vim /etc/redis/6379.conf
监听地址为
0.0.0.0
278行
replicaof 20.0.0.20 6379
700行
no改为yes
重启服务配置从2
vim /etc/redis/6379.conf
监听地址为
0.0.0.0
278行
replicaof 20.0.0.20 6379
700行
no改为yes
重启服务主节点查看日志
tail -f /var/log/redis_6379.log所有服务器登录redis
在主创建set键值对,并在从上查看是否同步
从只能读 查看主从策略
redis-cli info replication
哨兵模式

先有主从再有哨兵

在主从复制的基础之上,实现主节点故障的自动切换

哨兵模式的原理

哨兵:是一个分布式系统,用于在主从结构之间,对每台redis的服务进行监控

主节点出现故障时,从节点通过投票的方式选择一个新的master

哨兵模式也需要三个节点

哨兵模式的结构

哨兵节点:监控,不存储数据

数据节点:主节点和从节点,都是数据节点

哨兵模式的工作机制流程图

1、主从节点上都有哨兵

2、主节点的哨兵监控从节点1和从节点2

3、从节点1的哨兵监控主节点和从节点2

4、从节点2的哨兵监控主节点和从节点1

哨兵投票机制

每个哨兵节点每隔一秒,通过ping命令方式,检测主从之间的心跳线,主节点在一定时间内没有回复或者回复了错误的信息,这个时候,哨兵就会主观的认为主节点下线了,超过半数的哨兵节点认为主节点下线了,这个时候才会认为主节点是客观下线了

主节点选举过程

哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点转移和故障恢复通知

主节点的选举过程

1、已经下线的从节点,不会被选为主节点

2、选择配置文件当中,从节点优先级最高的replica-priority 100

3、选择一个复制数据最完整的从节点

主节点
cd /opt/redis-5.0.7
vim sentinel.conf
17行
取消注释
关闭保护模式26行
daemonize yes
后台运行36行
logfile "/var/log/sentinel.log"
指定日志文件65行
dir "var/lib/redis/6379"
数据库存放路径84行 
sentinel monitor mymaster 20.0.0.20 6379 2
2表示至少需要2台服务器,认为主已经下线,才会进行主从切换113行
sentinel down-after-milliseconds mymaster 30000
判断时间周期30秒(最小)从节点1
cd /opt/redis-5.0.7
vim sentinel.conf
17行
取消注释
关闭保护模式26行
daemonize yes
后台运行36行
logfile "/var/log/sentinel.log"
指定日志文件65行
dir "var/lib/redis/6379"
数据库存放路径84行 
sentinel monitor mymaster 20.0.0.20 6379 2
2表示至少需要2台服务器,认为主已经下线,才会进行主从切换113行
sentinel down-after-milliseconds mymaster 30000
判断时间周期30秒(最小)从节点2
cd /opt/redis-5.0.7
vim sentinel.conf
17行
取消注释
关闭保护模式26行
daemonize yes
后台运行36行
logfile "/var/log/sentinel.log"
指定日志文件65行
dir "var/lib/redis/6379"
数据库存放路径84行 
sentinel monitor mymaster 20.0.0.20 6379 2
2表示至少需要2台服务器,认为主已经下线,才会进行主从切换113行
sentinel down-after-milliseconds mymaster 30000
判断时间周期30秒(最小)先启动主节点,再启动从节点(在源码包下)
redis-sentinel sentinel.conf &查看整个集群的哨兵模式
redis-cli -p 26379 info Sentinel
模拟故障切换
查看主节点的进程号
ps -elf | grep redis主停服务
查看日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RFID读写器在物联网中的应用与优势

随着物联网技术的不断发展,RFID读写器作为物联网感知层的重要组成部分,在各个领域得到了广泛应用。本文将介绍RFID读写器在物联网中的应用及优势。 一、RFID读写器概述 RFID(Radio Frequency Identification)技术是一种利用无线…

机器学习中的特征选择:方法和 Python 示例

布拉加德什桑达拉拉詹 一、说明 特征选择是机器学习流程中至关重要且经常被低估的步骤。它涉及从数据集中的原始特征集中选择最相关的特征(输入变量或属性)的子集。特征选择的重要性怎么强调都不为过,因为它直接影响机器学习模型的质量、效率…

leetcode 240. 搜索二维矩阵 II

2023.11.22 本题最先想到的是暴力法和二分法,暴力法就不写了,写一下二分法的解法,java代码如下: class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int[] row : matrix){int left 0;int right r…

网站首页布局设计模板推荐给你这个8款!

想要设计一个有品质的网站首页,一款好的网站首页布局设计模板是不可或缺的。然而,网站首页布局设计模板市场上的品质千差万别,要花费大量时间和精力寻找合适的模板。于是,本篇文章将介绍免费获取网站首页布局设计模板的步骤&#…

Moonbeam Network已上线原生USDC稳定币

原生USDC已经通过XCM从波卡来到了Moonbeam,该如何利用?此次集成通过把热门的Circle稳定币带来波卡生态,连接了区块链世界与传统金融。现在,用户和开发者可以在Moonbeam网络中踏寻USDC的强大之处。 Moonbeam生态中的Moonwell、FiD…

【容器化】Kubernetes(k8s)

文章目录 概述Docker 的管理痛点什么是 K8s云架构 & 云原生 架构核心组件K8s 的服务注册与发现组件调用流程部署单机版部署主从版本Operator来源拓展阅读 概述 Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。 这时候就…

消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作。 1. 命令行操作 1.1 基础服务的命令操作 rabbitmqctl sto…

验收材料-软件质量保证措施

一、 质量保障措施 二、 项目质量管理保障措施 (一) 资深的质量经理与质保组 (二) 全程参与的质量经理 (三) 合理的质量控制流程 1. 质量管理规范: 2. 加强协调管理&…

Uniapp从零开始,手把手教学(附精选源码32套,涵盖商城团购等)

一、介绍 如果是刚入门小程序的,又或者刚听到这个名词的人,可能跟我之前一样,带着诸多的疑惑。比如: 什么是uniapp?它和原生微信小程序有什么异同之处? 为什么推荐uniapp开发? 这里一句话两…

我的创作纪念日2048天

机缘 在这特殊的日子里,我要庆祝我的 CSDN 创作纪念日——已经坚持了整整2048天! 在这2048天里,我经历了很多成长和收获。作为一名技术写手,我投入了大量的时间和精力来分享我的知识和经验。我曾经写过关于数据库、数据同步、数…

让SOME/IP运转起来——SOME/IP系统设计(下)之数据库开发

上一篇我们介绍了SOME/IP矩阵的设计流程,这一篇重点介绍如何把SOME/IP矩阵顺利的交给下游软件团队进行开发。 车载以太网通信矩阵开发完成后,下一步应该做什么? 当我们完成SOME/IP矩阵开发,下一步需要把开发完成的矩阵换成固定格…

一个测试驱动的Spring Boot应用程序开发

文章目录 系统任务用户故事搭建开发环境Web应用的框架Spring Boot 自动配置三层架构领域建模域定义与领域驱动设计领域类 业务逻辑功能随机的Challenge验证 表示层RESTSpring Boot和REST API设计API第一个控制器序列化的工作方式使用Spring Boot测试控制器 小结 这里采用面向需…

大模型创业“风投”正劲,AGI Foundathon 大模型创业松活动精彩看点

这是一场万众瞩目的大模型领域盛会。当来自世界各地的顶尖大模型开发者、创业者、投资人汇聚一堂,他们对大模型应用层的思考碰撞出了哪些火花?应运而生了哪些令人眼前一亮的AI-Native产品? 让我们一起来回顾吧~

c# 文件读取和写入

文件写入 using System.Collections.Generic; namespace demo1;/// <summary> /// System.IO下的所有的Stream类是所有数据流的基类 /// 流是用于传输数据的对象&#xff0c;流就是用来传输数据的 /// 数据传输的两种方式&#xff1a;1、数据从外部源传输到程序中&#…

云HIS系统源码,医院管理系信息统源码,融合B/S版四级电子病历系统

医院管理信息系统是以推进公共卫生、医疗、医保、药品、财务监管信息化建设为着力点&#xff0c;整合资源&#xff0c;加强信息标准化和公共服务信息平台建设&#xff0c;逐步实现统一高效、互联互通的管理系统。 SaaS模式Java版云HIS系统&#xff0c;在公立二甲医院应用三年…

深入了解ECharts

文章目录 导言一、什么是ECharts&#xff1f;二、基本概念1.ECharts实例2.数据系列&#xff08;Series&#xff09;3.坐标轴&#xff08;Axis&#xff09; 三、基本图表类型1.折线图2.柱状图3.饼图 高级功能1.题定制2.事件交互3.地图可视化 总结我是将军&#xff0c;我一直都在…

DeepWalk: Online Learning of Social Representations(2014 ACM SIGKDD)

DeepWalk: Online Learning of Social Representations----《DeepWalk&#xff1a;用于图节点嵌入的在线机器学习算法》 DeepWalk 是将 word2vector 用到 GNN 上 DeepWalk&#xff1a; 将 Graph 的每个节点编码为一个 D 维向量&#xff08;无监督学习&#xff09;&#xff0c;E…

垃圾收集器的种类及概述

1.JVM参数 1.1标准参数所有jdk版本通用参数 -version -help -server -cp 1.2-X参数 非标准参数&#xff0c;也就是在JDK各个版本中可能会变动 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式&#xff0c;JVM自己来决定 1.3 -XX参数 使用得最多…

海辰储能与FlexGen签署储能系统合作协议,加快拓展北美市场

海辰储能宣布与美国储能技术提供商和系统集成商FlexGen达成合作协议。根据协议&#xff0c;海辰储能将为FlexGen供应10GWh的先进储能产品&#xff1b;同时&#xff0c;其将支持FlexGen能源管理系统(EMS)用于总容量为15GWh的项目。 作为协议的一部分&#xff0c;FlexGen还将成为…

SpringBoot Admin

前言 Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源项目&#xff0c;它提供了一个简洁的 Web 界面来监控 Spring Boot 应用程序的状态和各种运行时指标。Spring Boot Admin 可以帮助开发者快速了解应用程序的状态&#xff0c;并快速定位错误或性能问题。下面…