当前位置: 首页 > news >正文

【Redis】-- 哨兵

文章目录

  • 1. 哨兵
    • 1.1 基本概念
    • 1.2 选举原理

1. 哨兵

1.1 基本概念

Redis机制时通过独立的进程来实现的,和redis-server是不同的进程。

哨兵节点不负责存储数据,只是对其他的redis服务节点起到监控的作用。
在这里插入图片描述
如果是从节点挂了,没有关系~

1.2 选举原理

  1. 主观下线
    哨兵节点通过心跳包,判断Redis服务器是否正在正常工作,如果心跳包没有如期而至,就认为该Redis节点主观下线了。

    此时一个哨兵节点收不到Redis服务器的心跳包,有可能是网络波动的原因,并不能断定这个Redis服务节点挂了。

  2. 客观下线
    多个哨兵进行投票,一个哨兵节点一票,多个Redis都认为这个Redis服务节点挂了(达到了法定票数)就认为这个Redis服务节点挂了。

  3. 然后多个哨兵节点选出一个leader节点。

    leader选举:

    1. 假设现在有三个哨兵1、2、3.。
    2. 假设哨兵1最先发现主节点是客观下线之后,立即给自己投了一票,并且向2、3发送了投票请求。
    3. 哨兵2、3比1慢了半拍,当他们还没有投出自己手中的票时,收到了拉票请求就会立即投出去。
    4. 如果哨兵节点收到了多个拉票请求,就会投给最先到达的。
      看谁反应快,看谁网络时延小。
  4. 由这个leader节点负责选出一个从节点作为新的主节点。

    选举新的master的标准:

    1. 比较优先级:每个Redis数据节点,都会在配置文件中有优先级的设置(slave-priority),优先级高的从节点,就会胜出。
    2. 比较offset:offset数值越大,说明从节点的数据和主节点越接近。
    3. 比较 runid:每个redis节点启动的时候随机生成一串数字(比较大小,大小全凭缘分)。
  5. 新的主节点指定好之后,leader就会控制整个节点,执行slave no one,成为master;再控制其他节点,执行slave of,让这些其他节点,作为新的主节点的从节点。

  6. 哨兵节点会自动的通知客户端程序,告知新的主节点是谁,并且后续客户端再进行写操作,就会针对新的主节点来进行操作。

注意事项:

  1. 哨兵节点不能只有一个,否则哨兵节点挂了会影响系统的可用性。
  2. 哨兵节点最好是奇数个(大部分情况3个就够了),方便选取leader,得票容易超出半数。
  3. 哨兵节点不负责存储数据。
  4. 哨兵+主从复制提高了可用性,不能解决数据极端情况下丢失的问题。

文章转载自:

http://1d0PHNAr.thbnt.cn
http://BAo5KSAZ.thbnt.cn
http://VoRk1uJw.thbnt.cn
http://5U6a0YNj.thbnt.cn
http://EX1PaVbQ.thbnt.cn
http://Ze5clVY7.thbnt.cn
http://nZ8CeB5k.thbnt.cn
http://b5B1NbCs.thbnt.cn
http://b58z97eY.thbnt.cn
http://Xm83risL.thbnt.cn
http://Oagklffe.thbnt.cn
http://d6VlChb3.thbnt.cn
http://8qrV2zP2.thbnt.cn
http://TeGQ1v0r.thbnt.cn
http://c63MYlqo.thbnt.cn
http://dKaYy3dN.thbnt.cn
http://46lS7G2s.thbnt.cn
http://AAU3UMsj.thbnt.cn
http://nInIvUZX.thbnt.cn
http://WtPbF5Br.thbnt.cn
http://PSvIpf1p.thbnt.cn
http://syDfLvLs.thbnt.cn
http://PLHBTy20.thbnt.cn
http://wbj5Z7Me.thbnt.cn
http://UwXbOOE4.thbnt.cn
http://0B6DirZS.thbnt.cn
http://ZXxhCooi.thbnt.cn
http://pU4kMG4m.thbnt.cn
http://74LgO0pL.thbnt.cn
http://DzkcNphT.thbnt.cn
http://www.dtcms.com/a/386918.html

相关文章:

  • C++八大排序
  • 特殊文件,日志
  • Linux命令大全(文件管理)
  • jira工具
  • 易语言制表符替换为空格如何替换?
  • 2020考研数学(二)真题
  • JVM-对象内存布局
  • leetcode 5 最长回文子串
  • [笔记] 系统分析师 第十二章 软件架构设计(分析师主要工作)
  • 健康大数据管理与服务专业发展潜力大吗?
  • 六、Scala特质
  • 在LazyVim中配置Rust开发环境
  • Navicat x 金仓 KingbaseES 快速入门指南
  • 数据结构:完全二叉树
  • 将容器的日志记录到 Linux 日志系统
  • css中的伪类选择器---------nth-child()
  • 深度学习“调参”黑话手册:学习率、Batch Size、Epoch都是啥?
  • Vue: 组件 Props
  • spring通过Spring Integration实现tcp通信
  • 改革企业治理架构,构建国有企业全面预算管理体系
  • 网络概述学习
  • VRRP 实验
  • confulence平台
  • 非许可型区块链
  • 如何使用词嵌入模型
  • 从一个想法到上线:Madechango项目架构设计全解析
  • pytest入门
  • 设计模式第二章(装饰器模式)
  • ​​解决大模型幻觉全攻略:理论、技术与落地实践​
  • qt QCandlestickSeries详解