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

Reids集群

目录

一、集群的概念

1.为什么要搭建集群?

2.Redis搭建集群是否需要考虑状态同步的问题?

二、Redis集群的模式

1.redis集群--主从模式

1.1什么是Redis的主从模式?

1.2.主从模式它们之间的数据是怎么实现一个同步的?

1.3.主从服务器是否解决了单点故障的问题?

1.4.redis集群三台,是否实现了扩容?

所以怎么解决单点故障问题呢,也就是说怎么解决主服务器宕机导致写操作执行不了的问题呢?

2.Redis集群--哨兵模式

2.1 Redis-哨兵模式的原理

2.2 哨兵是怎么检测到主服务器宕机了呢?

2.3主服务宕机后哨兵怎么从多个从服务器中选出一个作为主服务器?

2.5哨兵是什么

3.Reids集群--Cluster模式

3.1什么是cluster模式?

3.2那么key应该写到哪个redis服务器中,又怎么确保key的读取也是在这个redis服务器中呢

3.3每个服务器都是中心服务器,那么一旦有一个服务器宕机了,那么这个服务器里面的数据不是就访问不到了?

3.4总结


一、集群的概念

1.为什么要搭建集群?

(1)单台服务器的并发量是有一个上限的,当大量的请求同时发送到服务器,超过了服务器的上限,这个服务器就会宕机,所以通过搭建集群提高并发量

(2)解决单点故障。当一台服务器挂了,那么所有的请求都访问不了,这样可用性就很低,所以通过搭建集群使得服务器挂了还有别的服务器可以接收请求

2.Redis搭建集群是否需要考虑状态同步的问题?

需要。因为Redis是保存了数据的,所以搭建Redis集群的时候就要考虑状态同步、数据同步的问题。不然一个redis里面进行了写操作,另一个Redis进行读操作,那么就会导致数据不一致

二、Redis集群的模式

1.redis集群--主从模式

1.1什么是Redis的主从模式?

也就是Redis搭建集群后,通过划分两个角色,一个主服务器一个从服务器

主服务器负责写操作

从服务器负责读操作

所以实现了读写分离

但是即使redis自身有持久化的机制,但是一旦磁盘发生损坏,数据又会丢失

所以需要多个从服务器进行读操作

1.2.主从模式它们之间的数据是怎么实现一个同步的?

(1)全量同步:在节点初始化的时候进行一个数据的全部同步

流程:1.因为在从服务器配置文件配置了主服务器,所以从服务器启动的时候做完认证就开始同步

2.给从服务器发送一个同步的命令到主服务器

3.主服务器收到命令,先做持久化,然后开始数据同步(主服务器做持久化的时候,如果又有命令过来,那么这个命令会放到暂缓区

4.主服务器把持久化文件发送给从服务器

5.从服务器接收到持久化文件,先丢弃自己的数据,然后加载这个持久化文件在自己的内存中

6.主服务器继续发送暂缓区的命令给从服务器

7.从服务器接收主服务器的命令,加载到内存中

(2)增量同步:在节点初始化完成之后进行一个数据变动的同步

1.主服务器接收到了新的写命令后,它先在自己的内存中写入

2.然后广播给所有的从服务器

3.从服务器接收到广播过来的命令后,写入自己的内存中

所以这个主从服务器之间的数据同步就类似于Git.

第一次是直接克隆下来所有数据(全量同步

后面是拉取更新的数据        (增量同步

1.3.主从服务器是否解决了单点故障的问题?

没有。

因为主服务器只有一台,也就是写操作只有一台,所以一旦主服务器宕机,那么写操作又执行不了

1.4.redis集群三台,是否实现了扩容?

没有。虽然搭建了三台redis,但是三台保存的是同样的数据,只是做一个数据的备份,防止硬盘损坏,容量并没有增加

所以怎么解决单点故障问题呢,也就是说怎么解决主服务器宕机导致写操作执行不了的问题呢?

通过Redis集群--哨兵模式

2.Redis集群--哨兵模式

2.1 Redis-哨兵模式的原理

还是一样数量的主从服务器,只不过多了哨兵用来检测主服务器的状态,当哨兵检测到主服务器宕机后,它会在从服务器中选出一个作为主服务器进行写操作,这样就解决了单点故障问题。

2.2 哨兵是怎么检测到主服务器宕机了呢?

通过心跳机制,哨兵会给主服务器发送一个ping请求过去,如果主服务器是正常状态,那么就会回复哨兵一个pang响应,如果在一定的时间内从服务器没有回复哨兵,那么哨兵就认为主服务器宕机了

2.3主服务宕机后哨兵怎么从多个从服务器中选出一个作为主服务器?

1.看从服务器的偏移量,偏移量越大代表数据越新,越接近主服务器

2.偏移量一样,看优先级(开发人员可配置)

3.优先级一样,看redis运行时id

2.4多个哨兵的情况下,怎么在从服务器中选举出主服务器

1.首先在多个哨兵中选出哨兵Leader(通过哨兵的投票,哨兵的数量一般是奇数,方便少数服从多数)

2.这个Leader对从服务器进行选举

2.5哨兵是什么

哨兵其实也是redis服务器,只不过不能做读写操作

2.6当从服务器被选举成为主服务器后,之前宕机的主服务器恢复了,会怎样?

当从服务器被选举成为主服务器后,如果之前宕机的主服务器恢复后,那么之前的服务器会变为从服务器

3.Reids集群--Cluster模式

3.1什么是cluster模式?

cluster模式是无中心点的,也就是说redis集群中的每个redis服务器都具备读写的功能

这样就可以通过集群提高并发量

3.2那么key应该写到哪个redis服务器中,又怎么确保key的读取也是在这个redis服务器中呢

redis-cluster默认有一个16384的Hash槽,这个hash槽是用来存储我们redis的数据的

cluster模式集群创建的时候会平均的把16384个hash槽分配给各个节点(也就是redis服务器),当我们在进行数据的存储的时候,根据CRC16(key)&16384计算出这个key应该存储在哪个hash槽中,从而落在hash槽对应的节点上面

这样就实现了读写数据在同一个redis服务器

3.3每个服务器都是中心服务器,那么一旦有一个服务器宕机了,那么这个服务器里面的数据不是就访问不到了?

所以可以给每个中心服务器再挂两个从服务器,并且加哨兵,一旦中心服务器宕机,从服务器顶上

3.4总结

所以cluster模式集合了主从模式以及哨兵模式就解决了并发量、单点故障、数据备份的问题

因为我们redis搭建集群后需要解决

数据读写一致(同一个key读写再同一个redis服务器中)的问题(cluster根据算法解决了)

还有单点故障问题(哨兵解决了)

单点故障后从服务器顶上去,需要具备主服务器的数据(主从模式解决了)

相关文章:

Reids集群

目录 一、集群的概念 1.为什么要搭建集群? 2.Redis搭建集群是否需要考虑状态同步的问题? 二、Redis集群的模式 1.redis集群--主从模式 1.1什么是Redis的主从模式? 1.2.主从模式它们之间的数据是怎么实现一个同步的? 1.3.主…...

自定义指令基础

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives) 选项式API_自定义指令 <template><h3>自定义指令</h3><p v-author>文本信息</p> </template> <script> e…...

​软考-高级-系统架构设计师教程(清华第2版)【第5章 软件工程基础知识(190~233)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第5章 软件工程基础知识&#xff08;190~233&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图...

Oneid方案

一、前文 用户画像的前提是标识出用户&#xff0c;存在以下场景&#xff1a;不同业务系统对同一个人的标识&#xff0c;匿名用户行为的行为归因&#xff1b;本文提供多种解决方案&#xff0c;提供大家思考。 二、方案矩阵 三、其他 相关连接&#xff1a; 如何通过图算法能力获…...

【超好用的工具库】hutool-all工具库的基本使用

简介&#xff08;可不看&#xff09;&#xff1a; hutool-all是一个Java工具库&#xff0c;提供了许多实用的工具类和方法&#xff0c;用于简化Java开发过程中的常见任务。它包含了各种模块&#xff0c;涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…...

趣学python编程 (一、计算机基础知识科普)

未来是高度科技化和智能化的时代。过去不识字的叫“文盲”&#xff0c;如今不懂点计算机知识&#xff0c;则可能是新时代的“文盲”。不论从事什么行业&#xff0c;了解下计算机和编程都是有益的。Python 连续多年占据最受欢迎的编程语言榜首&#xff0c;未来Python有机会成为像…...

亚马逊云科技云存储服务指南

文章作者&#xff1a;Libai 高效的云存储服务对于现代软件开发中的数据管理至关重要。亚马逊云科技云存储服务提供了强大的工具&#xff0c;可以简化工作流程并增强数据管理能力。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏…...

随机链表的复制

文章目录 &#x1f349;前言&#x1f349;题目&#x1f349;分析&#x1f349;思路一&#xff1a;暴力解法&#x1f349;思路二&#xff1a;很绝的办法 &#x1f349;前言 果然&#xff0c;力扣的简单题不一定简单&#xff0c;但是中等和较难的题一定很麻烦。 这道题相当综合&…...

树莓派4b编译FFmpeg支持硬件编解码

ffmpeg h264_omx解码器充分发挥树莓派gpu性能 准备 树莓派4b ,64位系统 修改树莓派的启动设置文件(/boot/config.txt)进行如下的调整: gpu_mem=256 framebuffer_depth=16安装依赖 常规依赖: sudo apt update sudo apt upgrade sudo apt -y install autoconf automake …...

开启CentOS/Debian自带的TCP BBR加速

BBR 是什么我就不多做介绍了。如果系统自带内核高于4.9 则默认已包含 BBR。 操作方法&#xff1a; 1、使用 root 权限运行下面代码 uname -r //内核版本高于 4.9 就行。2、开启BBR echo "net.core.default_qdiscfq" >> /etc/sysctl.conf echo "net.ip…...

视频推拉流EasyDSS直播点播平台获取指定时间快照的实现方法

视频推拉流直播点播系统EasyDSS平台&#xff0c;可提供流畅的视频直播、点播、视频推拉流、转码、管理、分发、录像、检索、时移回看等功能&#xff0c;可兼容多操作系统&#xff0c;在直播点播领域具有广泛的场景应用。为了便于用户集成、调用与二次开发。 今天我们来介绍下在…...

CSS---关于font文本属性设置样式总结

目录 1、color属性 2、font-size属性 3、font-weight属性 4、font-family属性 5、text-align属性 6、line-height属性 7、text-indent属性 8、letter-spacing属性 9、word-spacing属性 10、word-break属性 11、white-space属性 12、text-transform 12、writing-mo…...

7、使用真机调试鸿蒙项目

此处以华为手机为例&#xff0c;版本为鸿蒙4.0. 一、打开手机调试功能 1、打开开发者模式 打开“设置”—“关于手机”&#xff0c;连续点击“软件版本”可打开开发者模式 2、开启USB调试功能 打开“设置”—“系统更新”—“开发者选项”&#xff0c;下拉找到“USB调试”…...

GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)

GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型&#xff1f; 文章目录 GPT实战系列-如何使用P-Tuning本地化训练ChatGLM2等LLM模型&#xff1f;P-Tuning微调训练概述1、预训练模型或者是torch模型2、训练器的超参数3、数据预处理工具4、加载数据5、分词处理6、数据预…...

【Python】爬虫代理IP的使用+建立代理IP池

目录 前言 一、代理IP 1. 代理IP的获取 2. 代理IP的验证 3. 代理IP的使用 二、建立代理IP池 1. 代理IP池的建立 2. 动态维护代理IP池 三、完整代码 总结 前言 在进行网络爬虫开发时&#xff0c;我们很容易遭遇反爬虫机制的阻碍。为了规避反爬虫机制&#xff0c;我们…...

JS-项目实战-新增水果库存功能实现

1、fruit.js function $(name) {if (name) {//假设name是 #fruit_tblif (name.startsWith("#")) {name name.substring(1); //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name); //返回的是NodeList类型}} }//当…...

mysql 常见操作指令

use k_order – 查看版本 select version(); – 查看所有数据库 show databases; – 查看所有执行引擎 show engines; – 查看当前数据库 select database(); – 查看所有table show tables; – 查看默认存储引擎 SHOW VARIABLES LIKE ‘default_storage_engine’; – 系…...

Vue3 生命周期

如下是Vue3的生命周期函数图&#xff1a; 一、Vue2生命周期和Vue3声明周期的区别 1. Vue2 中&#xff0c;只要创建Vue实例对象而不需要挂载就可以实现beforeCreate 和 created 生命周期函数。 Vue3中必须要将Vue实例对象挂载完成&#xff0c;所有的准备工作做完&#xff0c;…...

rocketmq 安装dashboard1.0.0 mq消息控制台安装 rocketmq控制台安装 rocketmq-dashboard-1.0.0编译安装

1. 官网&#xff1a; 下载 | RocketMQ 2. dashboard安装包位置&#xff1a; 在连接最下面&#xff0c;点击download.zip即可 3. 需要安装maven, 编译命令&#xff1a; mvn clean install -U -Dmaven.test.skiptrue4. 启动jar: java -jar rocketmq-dashboard-1.0.0.jar &…...

常见的数据结构有哪些?

数据结构分为逻辑结构和物理结构。 逻辑结构&#xff1a;指数据元素之间逻辑关系的数据结构&#xff0c;这里的逻辑关系是指数据元素之间的前后间关系&#xff0c;与数据在计算机中的存储位置无关。物理结构&#xff1a;指数据的逻辑结构在计算机存储空间中的存放形式称为数据…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...