Redis——Raft算法

Raft使用较为广泛的强一致性、去中心化、高可用的分布式协议,即使在网络、节点故障等情况下,多个节点依然能达到一致性。
其中redis、etcd等都用到了这种算法

在Redis集群中,采取的主从复制结构,当主节点宕机后,哨兵会将其中的一个从节点升级为主节点,而其中选举的过程就是Raft算法。

原理:

  • leader:领导者,其负责和客户端通信,接收来自客户端的命令并将其转发给follower
  • follower:跟随者,其一丝不苟的执行来自leader的命令
  • candidate:候选者,当follower长时间没收到 leader的消息就会向成为候选者,抢夺成为leader的资格。

下面我讲一下以一个例子来讲解一下整个的过程:

假设我们有三个哨兵(sentenal1,sentenal2,sentenal3),一个主节点(redis-master),两个从节点(redis-slave1,redis-slave2)

当主节点出现故障,就会触发重新⼀系列过程.在这里插入图片描述

主观下线:当主节点宕机后,此时主节点和3个哨兵之间的心跳没有了。
这是哨兵认为,主节点出现了严重事故,因此三个哨兵均会把主节点判定为主观下线
客观下线:哨兵sentenal1,sentenal2,sentenal3均会对主节点故障进行投票,当故障票数 > 陪定的法定票数的时候,就将它认为是客观下线

假设一共有3个哨兵节点,S1,S2,S3

  • 每个哨兵节点都会给其他哨兵节点发起一个投票请求
  • 此时收到请求的节点会选择是否投还是不投(每个哨兵节点都只有一票)
  • 一轮投票结束后,发现得票数数超过节点的一半的时候,自动升级为leader
  • leader会负责挑选一个从节点升级为新的主节点,当其他的sentenal发现新的主节点出现的时候,就说明选举结束了

那么挑选的规则是什么呢?

  • 比较优先级:优先级高的上位,优先级是slave-priority或者replica-priority
  • 比较replication offset,这个反映了从节点有多少数据和主节点一样,replication offset高的上位
  • 比较run id,谁的id小,谁上位

哨兵节点不能只有一个吗?

当然不能,我们要知道在redis一般是以集群的方式来部署的,那么就有可能哨兵节点挂了,那么就会影响系统的可用性(这是不能忽视的)

哨兵节点设置为奇数还是偶数

哨兵节点设置为奇数,方便选举leader,得票数容易超过总节点的一半

投票时,如果超过了超时时间导致选取不出leader怎么办?

raft算法其实都有考量,所有节点都会被分配不同的超时时间,因为如果都分配相同的超时时间,导致所有节点同时过期,导致无法选举出leader的情况

如果哨兵节点是偶数,出现了平票怎么办

此时,所有节点都会变为follower状态,重新设置随机的超时时间,重新进行选举

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络系统管理】2023年全国职业院校技能大赛:组策略--10套题组合--3

11、阻止Microsoft账户登录 (1)计算机配置\策略\Windows设置\安全设置\本地策略\安全选项 12、允许更改系统时间 (1)计算机配置\策略\Windows设置\安全设置\本地策略\用户权限分配 13、可以登录本机的用户 (1)计算机配置\策略\Windows设置\安全设置\本地策略\用户权限…

Glide源码学习

前言 开始 基本使用非常简单,链式调用把context对象传入,设置要加载的URL,设置要填充的ImageView控件,方法很简洁,每次都是传入的最核心的参数,底层加载的缓存逻辑,加载的引擎,加载…

基于RFSOC实现LFMCW雷达测距测速

雷达原理可以参考以下文章 https://zhuanlan.zhihu.com/p/508764579 一般情况下,雷达发射信号的模型可采用线性调频连续波(LFMCW) ,发射波形的信号形式为调频连续锯齿波。线性调频的含义即调制信号频率随时间线性变化&#xff0c…

VELO SkyOW+坐垫,一起Cityride温暖你的上海之旅

随着冬季的到来,上海的街头巷尾弥漫着一种独特的浪漫气息,当金黄的落叶从空中飘落,铺满路边,只是路过就仿佛骑进了一幅世界名画。无论是沿着外滩漫游,还是穿行在浦东的高楼间,骑行的方式总能让你充分体验到…

基于lora的llama2二次预训练

基于lora的llama2二次预训练 一、为什么需要对llama2做基于lora的二次预训练? 加入中文训练语料进行llama2的二次预训练,这样模型就可以增加支持中文输出的能力。 二、基于lora的llama2二次预训练的目标是什么? 在保持预训练模型权重不变的情况下&a…

探索 Python 任务自动化的新境界:Invoke 库揭秘

文章目录 探索 Python 任务自动化的新境界:Invoke 库揭秘背景:为何选择 Invoke?什么是 Invoke?如何安装 Invoke?5个简单的库函数使用方法1. 定义任务2. 带参数的任务3. 运行 Shell 命令4. 任务参数化5. 列出任务 场景应…

利用Prompt工程为LLM提升推理能力

利用Prompt工程为LLM提升推理能力 基于策略的推理详解ReAct: 推理与行动思维链:逐步解决问题反思:深入分析和自我审查与代理架构的集成实际应用代码附录 众所周知,一个精心设计的Prompt能够显著增强大型语言模型(LLMs)…

C#开发合集

用C#轻松搞定m3u8视频下载与合并 嘿,程序员们!今天咱们来聊聊如何用C#写个小程序,轻松下载和合并m3u8视频文件。没错,就是那种分段的流媒体视频。准备好了吗?让我们开始吧! 准备工作 在动手之前&#xf…

java框架Netty网络编程——问鼎篇

Netty进阶 粘包现象 案例 服务端代码 public static void main(String[] args) {NioEventLoopGroup bossGroupnew NioEventLoopGroup(1);NioEventLoopGroup workerGroupnew NioEventLoopGroup(2);try {ServerBootstrap serverBootstrap new ServerBootstrap();serverBootstr…

堤防安全监测系统方案

一、背景情况 堤防是开发利用水资源和防治水灾害的重要工程措施之一,对防洪、供水、生态、发电、航运等至关重要。我国现有堤防9.8万多座,其中大中型堤防4700多座、小型堤防9.4万座,80%以上修建于上世纪50至70年代。由于堤防管护力量薄弱&am…

模型减肥秘籍:模型压缩技术 知识蒸馏

教程链接:模型减肥秘籍:模型压缩技术-课程详情 | Datawhale 知识蒸馏:让AI模型更轻更快 在人工智能快速发展的今天,我们经常需要在资源受限的设备(如手机、IoT设备)上运行AI模型。但这些设备的计算能力和…

golang实现TCP服务器与客户端的断线自动重连功能

1.服务端 2.客户端 生成服务端口程序: 生成客户端程序: 测试断线重连: 初始连接成功

React表单联动

Ant Design 1、dependencies Form.Item 可以通过 dependencies 属性,设置关联字段。当关联字段的值发生变化时,会触发校验与更新。 一种常见的场景:注册用户表单的“密码”与“确认密码”字段。“确认密码”校验依赖于“密码”字段&#x…

springboot实战(16)(Validation参数校验冲突问题、分组校验、默认分组)

目录 一、注解NotNull与NotEmpty区别。 二、Validation提供的分组校验。(参数校验冲突问题) (1)基本介绍。 (2)实际案例。 (3)大模型提问提供的方法。 1、定义分组接口。 2、在字段上…

学Linux的第九天--磁盘管理

目录 一、磁盘简介 (一)、认知磁盘 (1)结构 (2)物理设备的命名规则 (二)、磁盘分区方式 MBR分区 MBR分区类型 扩展 GPT格式 lsblk命令 使用fdisk管理分区 使用gdisk管理分…

【ubuntu+win】Win10+Ubuntu22.04双系统给ubuntu系统中的某个分区进行扩容(从400G->800G)数据无损坏

给ubuntu已分区的部分进行扩容 1. 准备扩容的空间2.进入ubuntu系统进行卸载分区3.安装图形界面的安装包4.进行对分区扩容5. 重新挂载 我的情况是这式的(可以不看,直接看后面的): 刚开始买下电脑的时候,只装了一个 1T 的…

流式上传与分片上传的原理与实现

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…

Ettus USRP X410

总线连接器: 以太网 RF频率范围: 1 MHz 至 7.2 GHz GPSDO: 是 输出通道数量: 4 RF收发仪瞬时带宽: 400 MHz 输入通道数量: 4 FPGA: Zynq US RFSoC (ZU28DR) 1 MHz to 7.2 GHz,400 MHz带宽,GPS驯服OCXO,USRP软件无线电设备 Ettus USRP X410集…

oracle 19c RAC到单机ogg部署安装

源端(RAC)目标端(FS)IP192.168.40.30/31192.168.40.50数据库版本Oracle 19.3.0Oracle 19.3.0主机名hfdb30/hfdb31hfogg操作系统REHL7.6REHL7.6数据库实例hfdb1/hfdb2hfogg同步用户hfdb1hfdb1同步表testtestOGG版本19.1.0.0.419.1.…

现代密码学

概论 计算机安全的最核心三个关键目标(指标)/为:保密性 Confidentiality、完整性 Integrity、可用性 Availability ,三者称为 CIA三元组 数据保密性:确保隐私或是秘密信息不向非授权者泄漏,也不被非授权者使…