Redis 主从、哨兵和分片集群简单介绍

Redis 主从集群架构

单节点 redis 并发能力有上限,要进一步提高 redis 并发能力,就要搭建主从集群,实现读写分离

主从同步原理 

Replicaition id:每台 master 机器都一个 repl_id,是数据集的表示,若 salve 的 repl_id 与 master 的一样,则表示它们属于同一个集群

offset:偏移量,表示 master 在 repl_backlong 的位置。而同步时 salve 也会保存一个 offset,若 master 的 offset 大于 salve 的 offset,则表示 salve 的数据落后于 master,需要进行更新

主从同步方式

全量同步

Redis 主从、哨兵和分片集群

2023-04-27 09:16·爱做梦的程序员

Redis 主从集群架构

单节点 redis 并发能力有上限,要进一步提高 redis 并发能力,就要搭建主从集群,实现读写分离

主从同步原理

Replicaition id:每台 master 机器都一个 repl_id,是数据集的表示,若 salve 的 repl_id 与 master 的一样,则表示它们属于同一个集群

offset:偏移量,表示 master 在 repl_backlong 的位置。而同步时 salve 也会保存一个 offset,若 master 的 offset 大于 salve 的 offset,则表示 salve 的数据落后于 master,需要进行更新

主从同步方式

全量同步

执行时机

  1. salve 第一次连接 master 时;
  2. slave 断开时间太久,repl_backlog 中的 offset 已经被覆盖

执行过程

  1. salve 向 master 发送 offset、repl_id,master 判断该 repl_id 为空或与自己的不同,则进行全量同步
  2. master 调用 bgsave 命令异步生成 RDB 文件,同时把生成 RDB 文件过程中接收到命令写入 repl_baklog 缓冲区 中,
  3. master 生成完 RDB 文件后,把 RDB 文件和 repl_baklog 缓冲区中的命令一并发送给 salve;
  4. slave 根据命令和 RDB 文件进行数据同步即可;

 

 

增量同步

执行时机

  • salve 断开又恢复,并且能在 repl_backlog 中找到 offset

执行过程

  1. salve 向 master 发送 offset、repl_id,master 判断该 repl_id 与自己的相同,则进行增量同步
  2. master 根据 salve 发送过来的 offset,读取 repl_backlog 位于 offset 后的命令,发送给 salve;
  3. salve 根据接收的命令进行同步即可;

 区别:

全量同步: master 执行 bgsave 命令,生成 RDB 文件发送给 slave,并将后续的命令存储在 repl_backlog 中,持续发送给 slave

增量同步: master 获取 slave 发送的 offset,将 repl_backlog 中 offset 之后的数据发送给 slave 进行同步

 优化:

  1. 使用无磁盘复制,将数据流直接读入网络 IO 中;
  2. 适当控制 Redis 内存的使用量,避免生成的 RDB 文件过大;
  3. 当 slave 宕机时,要尽快进行恢复,避免进行全量复制
  4. 可以使用 主-从-从 的链式模式,减少 master 的压力;

Redis 哨兵 

哨兵作用

服务状态监控:sentinel 不断监控 Redis 集群中 master 和 salve 的状态;

自动故障转移:当 master 宕机后,sentinel 会在所有的 slave 中选举出一个 master,当宕机后的机器恢复后,也以新选择的 master 为主

通知:sentinel 充当 Redis 的客户端服务发现来源,当集群发送故障时,会把最新的消息发送到客户端

服务状态监控 

sentinel 基于心跳的机制来判断 master 或者 slave 是否正常工作,每隔1秒向集群中的每个实例发送 ping 命令

  • 若该实例没有在规定的时间范围内得到 pong 响应,则认为该机器 主观下线
  • 若超过指定数量(quorum)台 sentinel 没有在规定的时间范围内得到该实例 pong 响应,则认为该机器 客观下线,quorum 的值最好超过 sentinel 机器数的一半

自动故障转移 

选举原则

  1. 判断 salve 和 master 断开时间的长短,若超过 10 * down-after-milliseconds ,则该 slave 不会被选举为 master
  2. 判断 salve-priority 的大小,最小则优先级越高,但该值为 0 却不会被选到;
  3. 判断 offset 的大小,offset 值越大表示数据越新;
  4. 判断 salve 的 id 大小,id 越小,节点的优先级越高;

选举过程

  1. 向某个选举为 master 的 salve 机器发送 salve of one
  2. 向所有的机器发送 salve of 新 master
  3. 最后更改宕机的 master 配置,添加 slave of 新master

 

 Redis 分片集群

主从和哨兵解决了高并发高可用的问题,但是有两个问题没有解决:

  1. 海量数据存储;
  2. 高并发写入;

分片集群的特征

  1. 拥有多个 master,每个 master 可以存储不同的信息;
  2. 每个 master 拥有多个 salve
  3. master 之间通过心跳来监控健康状态;
  4. 客户端可以访问任意节点,但最后都会被路由到正确的节点;

散列插槽

Redis 分片集群把每个 master 映射到不同的散列插槽中

会根据 key 的有效部分来计算插槽的位置,所以 key 不是跟节点绑定,而是跟插槽绑定

  1. 将 16384 个插槽分配到不同的实例上;
  2. 根据 key 的有效部分取 hash 值,对 16384 取余即可;
  3. 余数作为插槽,寻找查找对应的实例即可;
  4. 若有效部分的余数相同,则可以实现把同类的信息放到同一个 master 节点上;

 

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

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

相关文章

关于OSPF的五种报文类型介绍、OSPF八种状态机变化与报文交互介绍。

4.2.2 路由 OSPF(OSPF的5种报文、8种状态机、邻居与邻接的形成) 目录 OSPF的5种报文Hello报文报文字段简介 DD/DBD报文DD报文字段简介(首个DD报文)DD报文字段简介(非首个DD报文——携带简要路由信息)LSR报文…

FineBI实战项目一(7):每天每小时上架商品个数

1 明确数据分析目标 对所有商品的商家时间进行统计,统计每个小时上架商品的个数 2 创建用于保存数据分析结果的表 create table app_hour_goods(id int primary key auto_increment,daystr varchar(20),hourstr varchar(20),cnt int ); 3 编写SQL语句进行数据分析…

WPS或word中英文字母自动调整大小写,取消自动首字母大写,全部英文单词首字母大小写变换方法

提示:写英文论文时,如何实现英文字母大小写的自动切换,不用再傻傻的一个字母一个字母的编辑了,一篇文章搞定WPS与Word中字母大小写切换 文章目录 一、WPS英文单词大小写自动修改与首字母大写调整英文字母全部由大写变成小写 或 小…

论文阅读 Attention is all u need - transformer

文章目录 1 摘要1.1 核心 2 模型架构2.1 概览2.2 理解encoder-decoder架构2.2.1 对比seq2seq,RNN2.2.2 我的理解 3. Sublayer3.1 多头注意力 multi-head self-attention3.1.1 缩放点乘注意力 Scaled Dot-Product Attention3.1.2 QKV3.1.3 multi-head3.1.4 masked 3.…

蓝牙模块在智能城市中的关键角色

随着城市的不断发展,智能城市的概念正日益深入人心。在构建智能城市的过程中,蓝牙模块作为一种无线通信技术,发挥着重要的角色,连接和协调各种智能设备,提升城市的效率、可持续性和便利性。本文将深入探讨蓝牙模块在智…

React 入门 - 05(响应式与事件绑定)

本章内容 目录 一、响应式设计思想二、React 中的事件绑定 继上一节我们简单实现一个 TodoList来更加了解编写组件的一些细节。本节继续这个案例功能的完成。 一、响应式设计思想 1、在原生的 JS中,如果要实现点击”提交“按钮就将输入框的内容添加至页面列表中&…

对话惠买集团董事长兼CEO杜瑞勇:直播电商粗放时代结束,如何用AI+XR打造精细化的智慧直播生态?

“ 未来将是专业选手精细化运营的智慧直播时代。“ 整理 | 梦婕 编辑 | 渔舟 出品|极新&北京电子商务协会 直播电商在经过爆发式增长后,从业者不断涌入,竞争日趋激烈,行业发展必然将会进入到一个缓慢增长阶段。直播…

时间序列数据库选型: influxdb; netdiscover列出docker实例们的ip

influxdb influxdb: 有收费版本、有开源版本 influxdb 安装、启动(docker) docker run -itd --name influxdb-dev -p 8086:8086 influxdb #influxdb的web客户端(端口8003)被去掉了 #8006是web-service端口#docker exec -it influxdb-dev bashinfluxdb 自带web界面 从后面的…

Angular - 笔记

文章目录 语法属性绑定引用模板变量组件绑定父组件传子组件 input子组件传父组件 outputEventEmitter ViewChildViewChildren获取子组件对象列表 管道常用模块 参考文档 语法 属性绑定 Angular 的双向绑定语法是方括号和圆括号的组合 [()]。[] 进行属性绑定,() 进行…

phpcms v9后台添加草稿箱功能

一、后台添加文章模板phpcms/modules/content/templates/content_add.tpl.php中94行增加”保存草稿“按钮&#xff1a; <div class"button"><input value"<?php echo L(save_draft);?>" type"submit" name"dosubmit_draf…

PostGIS教程学习十九:基于索引的聚簇

PostGIS教程学习十九&#xff1a;基于索引的聚簇 数据库只能以从磁盘获取信息的速度检索信息。小型数据库将完全位于于RAM缓存&#xff08;内存&#xff09;&#xff0c;并摆脱物理磁盘访问速度慢的限制。但是对于大型数据库&#xff0c;对物理磁盘的访问将限制数据库的信息检…

DataFrame详解

清洗相关的API 清洗相关的API: 1.去重API: dropDupilcates 2.删除缺失值API: dropna 3.替换缺失值API: fillna 去重API: dropDupilcates dropDuplicates(subset):删除重复数据 1.用来删除重复数据,如果没有指定参数subset,比对行中所有字段内容,如果全部相同,则认为是重复数据,…

学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研

之前博客介绍了NeRF-SLAM&#xff0c;其中对于3D Gaussian Splatting没有太深入介绍。本博文对3D Gaussian Splatting相关的一些工作做调研。 学习笔记之——NeRF SLAM&#xff08;基于神经辐射场的SLAM&#xff09;-CSDN博客文章浏览阅读967次&#xff0c;点赞22次&#xff0…

Java中的输入输出处理(一)

文件 文件&#xff1a;文件是放在一起的数据的集合。比如1.TXT。 存储地方&#xff1a;文件一般存储在硬盘&#xff0c;CD里比如D盘 如何访问文件属性&#xff1a;我们可以通过java.io.File类对其处理 File类 常用方法&#xff1a; 方法名称说明boolean exists()判断文件或目…

LiveGBS流媒体平台GB/T28181常见问题-国标编号是什么设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道

LiveGBS国标GB28181中国标编号是什么设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道 1、什么是国标编号&#xff1f;2、国标设备ID和通道ID3、ID 统一编码规则4、搭建GB28181视频直播平台 1、什么是国标编号&#xff1f; 国标GB28181对接过程中&#xff0c;可能有的小…

安科瑞对电子半导体行业电能质量监测与治理系统解决方案——安科瑞赵嘉敏

摘要&#xff1a;在国家鼓励半导体材料国产化的政策导向下&#xff0c;本土半导体材料厂商不断提升半导体产品技术水平和研发能力&#xff0c;逐渐打破了国外半导体厂商的垄断格局半导体材料国产化进程&#xff0c;促进中国半导体行业的发展。半导体产品的制造使用到的设备如单…

c++|关键字extern

一个C语言项目往往由多个文件组合而成。而对于多个文件来说&#xff0c;它们可能会共用到一些相同的变量。而有些情况下&#xff0c;这些相同的变量并没有出现在本文件内&#xff0c;有可能在其他文件内。而一个文件可能只会搜寻该文件内部是否有该变量。 所以&#xff0c;需要…

ROS学习笔记(9)进一步深入了解ROS第三步

0.前提 1. (C)Why did you include the header file of the message file instead of the message file itself?&#xff08;为包含消息的头文件而不是消息本身&#xff1f;&#xff09; 回答&#xff1a;msg文件是描述ROS消息字段的文本文件&#xff0c;用于生成不同语言消息…

NX二次开发 Block UI 指定方位控件的应用

一、概述 NX二次开发中一般都是多个控件的组合&#xff0c;这里我首先对指定方位控件进行说明并结合选择对象控件&#xff0c;具体如下图所示。 二、实现功能获取方位其在选择面上原点的目标 2.1 在initialize_cb()函数中进行初始化&#xff0c;实现对象选择过滤面 //过滤平…

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测&#xff08;完整源码和…