【Redis 开发】Redis哨兵

news2024/12/24 21:20:55

哨兵

  • 作用和原理
    • 服务状态监控
    • 选举新的master
  • 搭建哨兵集群
  • RedisTemplate的哨兵模式

作用和原理

Redis提供了哨兵机制来实现主从集群中的自动故障恢复:
在这里插入图片描述
哨兵也是一个集群

  1. 监控:会不断检查master和slave是否按预期工作
  2. 自动故障恢复:如果master故障,Sentinel会将一个slave提升为master,当故障实例恢复也以新的master为主
  3. 通知:哨兵充当Redis客户端的服务发现来源,当集群发生故障转移时,会将新信息推送给Redis客户端

服务状态监控

哨兵基于心跳机制监测服务状态,每个1秒向集群的每个实例发送ping命令:
主观下线:如果某哨兵节点发现某实例未在规定时间内响应,则认为该实例主观下线
客观下线:若超过指定数量的哨兵都认为该实例主观下线,则该实例客观下线,这个值最好超过哨兵实例数量的一半

选举新的master

当master故障,哨兵需要在salve中选择一个作为新的master,依据:

  1. 判断salve节点与master节点断开时间长短,如果超过指定值(down-after-milliseconds*10)则会排除slave节点
  2. 然后判断slave节点的slave-priority值,越小优先级越高,如果是0则永不参与选举
  3. 如果slave-priority一样,则判断slave节点的offset值,越大说明数据较新,优先级越高
  4. 最后判断slave节点的运行id大小,越小优先级越高
  • 选择完成之后如何让从节点变为主节点
  1. 哨兵给备选的slave节点发送slaveof no one命令,让该节点成为master
  2. 哨兵给所有其他的slave节点发送slaveof 192.168.75.135 7002命令,让这些slave成为新master的从节点,开始从新的master上同步数据
  3. 最后,哨兵将故障节点标记为slave,当故障节点恢复后会自动成为新的master的slave节点
    在这里插入图片描述

搭建哨兵集群

这里我们讲述在Linux下搭建三个三个哨兵

  1. /tmp下创建三个目录,mkdir s1 s2 s3
  2. 在s1目录下创建一个sentinel.conf文件,添加内容
port 27001  #配置端口
sentinel announce-ip 192.168.150.101   # 声明自己的ip实例
sentinel monitor mymaster 192.168.150.101 7001 2  # 监控master,时间监控整个集群,2标识之前主观下线的值
sentinel down-after-milliseconds mymaster 5000  #与master连接的超时时间
sentinel failover-timeout mymaster 60000  #与故障恢复的超时时间
dir "/tmp/s1"  #工作目录,实例的存放位置
  1. 将该配置文件拷贝到s2,s3目录中
    echo s2 s3 | xargs -t -n 1 cp s1/sentinel.conf
  2. 修改两个目录下的配置文件将端口分别修改为27002,27003
    sed -i -e 's/27001/27002/g' -e 's/s1/s2/g' s2/sentinel.conf,其他目录相同命令
  3. 启动,打开三个窗口执行redis-sentinel s1/sentinel.conf,剩下两个也同样

RedisTemplate的哨兵模式

在Sentinel集群监管下的Redis主从集群,其节点会因为自动故障转移而发生变化,Redis的客户端必须感知这种变化,及时更新连接信息。Spring的RedisTemplate底层利用lettuce实现了节点的感知和自动切换。

  1. 引入redis的start的依赖
  2. 在配置文件中设置哨兵信息
spring:
  redis:
     sentinel:
        master: hhh #指定master名称
        nodes: #指定哨兵集群信息
        -192.168.75.135:27001
        -192.168.75.135:27002
        -192.168.75.135:27003
  1. 在配置类中配置Redis集群的读写分离
@Bean
public LettceClientConfigurationBuilderCustomizer configurationBuilderCustomizer(){
    return configBuilder->configBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}

这里的ReadFrom是配置Redis的读取操作,是一个枚举:

标识意义
MASTER从主节点读取
MASTER_PREFERRED优先从master节点读取,master不可用才读取replica
REPLICA从slave(replica)节点读取
REPLICA_PREFERRED优先从slave节点读取,所有的节点都不可用才读取master

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

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

相关文章

开发工具-pycharm的代码自动部署服务器以及服务端python配置、项目开发环境一键启动服务

文章目录 一、pycharm的ssh配置1.本地生成ssh密钥2.密钥配置到远端服务器(1-1) 有权限ssh访问到服务器(1-2) 无权限ssh访问到服务器(1-3) 没有办法通过以上形式上传到服务器(2) 配置到authorized_keys自动访问 3.pycharm中配置ssh(1) 选择File中的settings(1) 选择Tools中的SSH…

Github创建远程仓库(项目)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

StarBright染料--星光高亮抗体 助力多色方案

星光染料是一种独特的荧光纳米粒子,将它与 Bio-Rad 高度验证的抗体结合,专为流式细胞术开发,为您提供卓越染色效果。星光染料使稀有群体和低密度抗原易于分辨,同时保持适用于任何多色实验的灵活性。 本篇将帮助你了解高亮星光染料…

springboot权限验证学习-下

上篇讲了rbac对于菜单的权限,下面准备完成按钮权限以及行数据和列数据权限 权限控制(按钮权限) 权限控制 操作权限就是将操作视为资源,比如删除操作,有些人可以有些人不行。于后端来说,操作就是一个接口。于前端来说&#xff0…

vue2使用change事件监听不了回车事件的问题

在 vue2 项目中使用 el-input 的 change 监听&#xff0c;数据不发生变化时&#xff0c;回车事件和失去焦点不生效 输入框会一直显示 只有数据发生变化时才生效 <el-input v-model"editedText" change"endEditing" ref"input"></el-inp…

校园广播系统:智能化管理提升校园安全与效率

在现代教育环境中&#xff0c;校园广播系统不再仅仅是一个播放音乐和通知的工具&#xff0c;它已经成为学校基础设施中不可或缺的一部分。根据《义务教育阶段学校信息化设备配备标准》的第8条&#xff0c;校园广播系统在学校范围内的日常运用极为广泛&#xff0c;涵盖了升旗仪式…

基于 SpringCloud 的在线交易平台乐优商城的设计与实现(四)

第 4 章 数据库设计 4.1 数据库设计原则 4.2.数据库概念结构设计 4.3 数据库表设计 4.4.本章小结 前面内容请移步 基于 SpringCloud 的在线交易平台乐优商城的设计与实现&#xff08;三&#xff09; 相关免费源码资源 乐优商城 第 4 章 数据库设计 4.1 数据库设计原…

怎样把音频压缩?3种简单的音频压缩方法分享

怎样把音频压缩&#xff1f;在数字化时代&#xff0c;音频文件占据了大量的存储空间&#xff0c;因此音频压缩成为了许多人的需求。通过音频压缩&#xff0c;我们不仅可以减小文件大小&#xff0c;方便存储和传输&#xff0c;还可以节省设备空间&#xff0c;提升处理效率。因此…

人工智能|推荐系统——推荐大模型最新进展

近年来,大语言模型的兴起为推荐系统的发展带来了新的机遇。这些模型以其强大的自然语言处理能力和丰富的知识表示,为理解和生成复杂的用户-物品交互提供了新的视角。本篇文章介绍了当前利用大型语言模型进行推荐系统研究的几个关键方向,包括嵌入空间的解释性、个性化推荐的知…

电脑黑屏问题的4种解决方法,两分钟轻松掌握

电脑黑屏是一种让人不安的问题&#xff0c;这个问题可能是由多种原因引起的。在这个数字化的时代&#xff0c;电脑已经成为我们工作和娱乐中不可或缺的一部分。当电脑突然陷入黑屏状态&#xff0c;用户通常会感到困扰和焦虑。本文将介绍一些常见的电脑黑屏问题解决方法&#xf…

微服务之并行与分布式计算

一、概述 1.1集中式系统vs分布式系统 集中式系统 集中式系统完全依赖于一台大型的中心计算机的处理能力&#xff0c;这台中心计算机称为主机&#xff08;Host 或 mainframe &#xff09;&#xff0c;与中心计算机相连的终端设备具有各不相同非常低的计算能力。实际上大多数终…

注意力机制、self attention、target attention、双层attention

关于注意力机制要解决2个问题&#xff0c;一是怎么做在哪个层面上做&#xff0c;二是注意力系数如何得到&#xff0c;由谁产出。注意力机制应用广泛的本质原因是求和的普遍存在&#xff0c;只要是有求和的地方加权和就有用武之地。DIN/DIEN把注意力机制用在用户行为序列建模是为…

校园综合服务平台

码功能强大&#xff0c;ui 精美&#xff0c; 功能包含但不限于校园跑腿&#xff0c;外卖&#xff0c;组局&#xff0c;圈子&#xff0c;商城&#xff0c;抽奖&#xff0c;投票&#xff0c;团购&#xff0c;二手市场&#xff0c;签到&#xff0c;积分商城&#xff0c;一元购等&a…

Linux驱动开发:深入理解I2C时序

目录标题 I2C简介I2C时序关键点Linux内核中的I2C时序处理I2C适配器I2C算法I2C核心 代码示例&#xff1a;I2C设备访问调试I2C时序问题 在Linux驱动开发中&#xff0c;理解和正确处理I2C时序对于确保I2C设备正常工作至关重要。本文将详细介绍I2C通信协议的时序特征&#xff0c;并…

企业的核心竞争力,是有效制作电子说明书

在这个信息化的时代&#xff0c;各种产品和服务层出不穷&#xff0c;数不胜数。要想在众多竞争对手中脱颖而出&#xff0c;除了产品质量之外&#xff0c;还有很多因素。比如营销手段、价格优势或者是品牌效应。但今天我要说的&#xff0c;是一个可能容易被人忽视的一个关键点—…

[嵌入式系统-53]:嵌入式系统集成开发环境大全

目录 一、嵌入式系统集成开发环境分类 二、由MCU芯片厂家提供的集成开发工具 三、由嵌入式操作提供的集成开发工具 四、由第三方工具厂家提供的集成开发工具 一、嵌入式系统集成开发环境分类 嵌入式系统集成开发工具和集成开发环境可以按照不同的分类方式进行划分&#xff…

SecretFlow学习指南(2)学习路径

目录 一、模块架构 二、模块详解 三、算法协议 四、学习路线 一、模块架构 良好的分层设计可以提高开发效率和可维护性&#xff0c;满足不同用户的需求。隐语从上到下一共分为六层。 ●产品层&#xff1a;通过白屏化产品提供隐语整体隐私计算能力的输出&#xff0c;让用户简…

Vue2和Vue3的生命周期对比

beforeCreate 、created 两个钩子被setup()钩子来替代。 所有生命周期前面加了on

LeetCode 2385.感染二叉树需要的总时间:两次搜索(深搜 + 广搜)

【LetMeFly】2385.感染二叉树需要的总时间&#xff1a;两次搜索&#xff08;深搜 广搜&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/amount-of-time-for-binary-tree-to-be-infected/ 给你一棵二叉树的根节点 root &#xff0c;二叉树中节点的值 互不…

vite创建vue项目启动时域名为127.0.0.1修改为localhost不生效——问题解决

今天偶然间想起来年前整的一套vue3的框架&#xff0c;索性跑了一下&#xff0c;结果发现运行后地址为127.0.0.1而非localhost&#xff0c;所以想把域名改一下 找到vite.config.js文件中的export default defineConfig&#xff0c;在server中写入host:localhost 然后通过npm ru…