复制架构,Redis Sentinel分析

news2024/11/29 0:45:21

存储高可用,一般采用复制架构,复制架构,需要关注故障架构和状态决策2个要点

复制架构通用关注点

数据复制

复制格式

格式优点缺点举例
命令数据量小可能存在数据不一致Mysql 的statement同步方式,按commit顺序同步,可能存在数据不一致
Redis 的 AOF,每个操作室幂等的。
MongoDB的oplog ,oplog中每个操作室幂等的
数据保证数据一致性数据量大Mysql的row模式
文件保证生成文件时数据一致性数据量大Redis的RDB
复制的时候,数据可能有变化

复制方式

同步方式特点适用场景
同步最强一致性主备,主从架构
故障容忍度低
写入性能低
异步会出现,数据不一致数据存储集群
故障容忍度高
写入性能高
半同步同步,异步的折中方案数据存储集群
多数同步数据一致性强例如要求,分布式一致性
故障容忍度高例如:OceanBase
写入性能低,实现复制
最强高可用

状态决策

决策方式特点适用场景
依靠决策者(利用zookeepr等)决策简单大多数业务
数据一致性中等
决策者本身高可用复杂
协商式一般采用双通道,心跳机制内部系统,网络设备
数据一致性弱
标准算法式决策过程复杂,一般采用标准算法 Raft,ZAB,Paxos等余额,库存,或金融场景
数据一致性最强
可用性最高,一般使用quorum 防止脑裂

Redis Sentinel 分析

下图,是Redis,Sentinel 的架构图图:

Sentinel 是决策者, master 是主库,follow 是从库,下面按照数据复制,状态决策2个角度进行分析

数据复制

复制格式

AOF 命令

redis是先写内存,后写AOF日志,不阻塞写操作

同步到磁盘的策略

  • Always同步写盘, 性能差, 可靠性高,数据基本不丢失。
  • Everysec每秒写盘,性能适中,宕机损失1秒数据
  • no操作系统控制写盘,性能高,宕机损失数据多

AOF 重写 针对AOF文件大,redis优化方式

  • 后台fork子进程 bgrewriteaof 来完成,不会阻塞主线程
  • 使用AOF缓冲,AOF 重写缓冲,保证在重写过程中,新写入的数据不会丢失
  • 内存页表越大,fork阻塞时间越久

复制方式

  • 异步
  • wait命令 实现半同步,
注:
   Redis的WAIT命令,可确保指定数量的Redis副本已确认

   在故障切换期间,已确认的写入可能会丢失,取决于Redis持久性的配置

状态决策,决策者:sentinel

Sentinel 作用

监控

  • 周期性的给所有主从库发送PING命令,检查它们是否仍然在线运行
  • 主观下线,一个哨兵判断主库下线
  • 客观下线,大于等于quorum(降低集群网络压力大,主库压力大造成的误判的概率),都判断主库已经主观下线了,主库才被标记客观下线,开启主从切换

选主(筛选+3轮打分)

筛选

down-after-milliseconds * 10 以内的作为候选主库

down-after-milliseconds 主从库断连的最大连接超时时间。超过10倍,认为该候选库网络不好,剔除

打分

  • 从库优先级,slave-priority配置
  • 从库复制进度,slave_repl_offset越接近master_repl_offset得分越高

master_repl_offset,master写入的点位

slave_repl_offset 从库复制的点位

  • 从库的ID号,号小的得分高

通知

让从库执行replicaof,与新主库同步

通知client 连接新的主库

Sentinel Leader 选举流程

Raft 协议的实现,大致流程如下:

  1. 哨兵给其他哨兵发送命令,表明希望由自己成为leader,并让所有其他哨兵进行投票
  2. 每个哨兵选自己,并且根据先到先得的规则,接受/拒绝其他哨兵成为leader的请求
  3. 作为Leader的2个条件 拿到半数以上的赞成票 ,拿到的票数还要大于等于quorum
注意:每个哨兵的quorum 和 down-after-milliseconds 必须一样

 

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

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

相关文章

文件系统考古:1974-Unix V7 File System

有时,进步难以察觉,特别是当你正身处其中时。而对比新旧资料之间的差异,寻找那些推动变革的信息源,我们就可以清晰地看到进步的发生。在Linux(以及大部分Unix系统)中,都可以印证这一点。 Unix …

淘宝层级改版,五力模型上线!

最近临近618,淘系又各种功能改版,现在店铺层级也开始陆续改版了。从原来的只需要提升销售金额,到现在的五力模型。我们先说一下原来的店铺层级考核,跟现在的区别主要是哪? 1.原来店铺层级的考核升级特别简单&#xff0…

推荐一款神级编程工具[Cursor]自带gpt而且免费!

今天推荐一款非常好用开发工具,一个智能编程助手。 官网:https://www.cursor.so/ 适用平台:Mac、Windows、Linux。 助手的样子 可以做哪些事情? 编程语言:我可以回答关于各种编程语言(如Python、Java、Ja…

测试老鸟总结,从功能到自动化测试详细整理,测试之路广阔无垠...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

黑客零基础入门教程,从入门到精通学习路线规划,看完这篇就够了

很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。 想要成为黑客,却苦于没有方向,…

戏曲APP软件开发需具备哪些功能呢?

戏曲是我国的国粹,传统戏曲文化源远流长,博大精深,数千年以来一直都是深受大众喜欢的文化生活的重要环节。随着时代的推进,娱乐形式更加多样化,传统的剧场演出形式的戏曲传播方式已经跟不上时代发展以及人们的需求了。…

python+Django+vue高校体育足球篮球联赛网站系统

系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统,管理员可以对个人中心、用户管理、赛事信息管理、球队信息管理、球员信息管理、比赛分值板管理、系统管理等进行添加、查询、修改、删除,以保障足球联赛管理系统的正常运行。…

es elasticsearch 十 中文分词器ik分词器 Mysql 热更新词库

目录 中文分词器ik分词器 介绍 安装 使用分词器 Ik分词器配置文件 Mysql 热更新词库 中文分词器ik分词器 介绍 中文分词器按照中文进行分词,中文应用最广泛的是ik分词器 安装 官网下载对应版本zip 下载 放到 plugins 目录 新建 ik文件夹 考入解析zip 重…

es Elasticsearch 十一 Java api实现 索引管理

目录 Java api实现 索引管理 Pom 测试联通 增加索引 打印结果 异步执行 删除索引 查看索引是否存在 关闭索引 开启索引 Java api实现 索引管理 Pom <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-re…

C嘎嘎~~[谈谈C++的一些优化]

C的一些优化 匿名对象引用引用作形参引用作返回值 编译器优化构造 拷贝构造 ⇒ 构造拷贝构造 拷贝构造 ⇒ 一个拷贝构造 匿名对象 通过以前C语言的学习, 我们知道了有一种 具有临时性的, 没有名字的变量 — — 匿名变量. 那么我们的对象应该也有这个特性 — — 匿名对象 匿名…

如何在 Linux 中创建非登录用户?

在 Linux 系统中&#xff0c;用户账户的管理是一个重要的任务。除了常规的登录用户&#xff0c;有时候我们需要创建一些非登录用户&#xff0c;这些用户通常用于运行服务、执行特定任务或限制访问权限。 本文将详细介绍如何在 Linux 中创建非登录用户&#xff0c;并提供一些相关…

linuxOPS基础_linux系统注意事项

Linux严格区分大小写 Linux 和Windows不同&#xff0c;Linux严格区分大小写的&#xff0c;包括文件名和目录名、命令、命令选项、配置文件设置选项等。 例如&#xff0c;Win7 系统桌面上有文件夹叫做Test&#xff0c;当我们在桌面上再新建一个名为 test 的文件夹时&#xff0c…

Java之旅(四)

Java变量 变量是存储数据值的容器&#xff0c;用于在内存中保存数据。成员变量 作用范围是整个类 类的成员变量的作用范围同类的实例化对象的作用范围相同。当类被实例化的时候&#xff0c;成员变量就会在内存中分配空间&#xff0c;并初始化 实例变量&#xff08;不以 static…

如何在华为OD机试中获得满分?Java实现【基站维修工程师】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述4. Java算法源码5. 测试6.解题思路1. 题目描述 小陈是一名

Canvas实现连线动态效果

前言 这段时间一直在研究 Canvas 的动画&#xff0c;本文将带大家基于 Canvas 封装的 ZRender 库&#xff0c;了解ZRender 库中提供的 animate 绘制动画的方法&#xff0c;并且使用 animate 方法实现一个带有箭头流动效果的连线。 效果 ZRender 在介绍 ZRender 的动画之前&a…

java+iClientOpenlayers实现污水排放扩散模拟(湖库污染排放扩散模拟)

软件实现效果 一、应用背景 湖库污染是一个日益严峻的环境问题。随着城市化和工业化的加速发展&#xff0c;越来越多的有害物质被排放入湖库中&#xff0c;导致湖库污染加剧并扩散到周围地区。本文将探讨湖库污染扩散的原因、影响和解决方法。 首先&#xff0c;湖库污染扩散的…

Android之 软件架构发展和封装

一 简介 1.1 软件架构发展趋势是解耦&#xff0c;即分离数据层和视图层&#xff0c;使得数据层专注于业务的数据和逻辑处理。从而提高代码的可读可编辑效率&#xff0c;提高团队协作能力&#xff0c;项目的生产能力&#xff0c;降低后期维护成本。 1.2 Android架构发展MVC -…

Rocksdb相关学习

1 Basic Operations 先介绍一些 RocksDB 的基本操作和基本架构。 1.1 LSM 与 WriteBatch 参考文档5提到RocksDB 是一个快速存储系统&#xff0c;它会充分挖掘 Flash or RAM 硬件的读写特性&#xff0c;支持单个 KV 的读写以及批量读写。RocksDB 自身采用的一些数据结构如 LSM/…

STLINK V2 无法用STM32CubeProgrammer下载程序

这个问题真的挺狗的&#xff0c;先说结论&#xff0c;因为你买的STLINK V2是国产的&#xff0c;而且用的也是国产的芯片&#xff0c;不是ST的STM32F103C8T6&#xff0c;所以STM32CubeProgrammer识别不到芯片的串号&#xff0c;都是奸商为了省钱导致的。 我是去年买的一个STLINK…

数据库作业

数据库teaching中的表结构和表记录。    &#xff08;1&#xff09;学生信息表student    #student表结构      create table if not exists student (      studentno char(11) not null comment学号,      sname char(8) not null comment姓名,   …