主从、哨兵、集群模式有什么区别 ?

目录

1.Redis 多机部署的方式

2.主从、哨兵、集群模式有什么区别

2.1 主从同步

 2.2 哨兵模式

2.3 集群模式


1.Redis 多机部署的方式

Redis 多机部署主要有 3 种方式:

1. 主从同步:主要存储数据的节点叫做主节点(master),其他通过复制主节点数据的副本节点叫做从节点(slave)。在 Redis 中一个主节点可以拥有多个从节点,一个从节点也可以是其他服务器的主节点。

2. 哨兵模式:哨兵模式 Redis Sentinel 是 Redis 的一种运行模式,它专注于对 Redis 实例(主,从)运行状态的监控,并能够在主节点发生故障时通过一系列的机制选举一个从节点作为新的主节点,以及主从切换,实现故障转移,确保整个 Redis 系统的可用性。

3. 集群模式:集群模式 Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务器上,以此来降低系统对单主节点的依赖,并可以大大提高 Redis 服务的读写性能。

2.主从、哨兵、集群模式有什么区别

2.1 主从同步

        主从同步是多机部署中最简单的方案,也是存在问题最多的一个方案。它的致命缺点就是当主节点挂了之后,它需要人工进行干预,人工进行修复。(如果半夜三点主节点挂了,那就得半夜打电话喊人去修复,例如主服务器 A,从服务器 B,C,如果 A 挂了,需要将 B 设为主服务器,同时让 C 去 B 服务器同步数据)

 2.2 哨兵模式

        哨兵模式就解决了主从同步的人为干预问题,它可以监控 Redis 实例运行状态,当主服务器挂了,它可以自动实现选择新的主节点以及主从切换,实现故障的自动转移和恢复(自动容灾恢复),确保整个 Redis 系统的可用性。

哨兵是如何工作的 ?如何选择新的主节点 ?

1.主节点失效检测:哨兵会周期性地向 Redis 实例发送命令(心跳包)来检测主节点的存活状态,如果主节点在指定时间内没有回复心检测(例如主节点已下线),哨兵将会认为当前主节点失效了。

2.选举新主节点:一旦哨兵检测到主节点失效后,它会进入新主节点的选举过程。哨兵集群中的哨兵会互相通信,通过多数投票方式决定新的主节点(需要多数哨兵投票才能进行选举)。

        选举过程中,如果出现票数相同的两个节点(优先级相同),则选择复制偏移量(从节点复制主节点的进度)较大的从节点作为新主节点,这样可以确保新主节点尽可能包含更多的数据。

2.3 集群模式

        无论是主从还是哨兵,它都只有一个主节点,所以它的性能扩展是有限的, 而集群模式可以实现多主节点的平行扩展,从而增加系统的一个吞吐量。并且集群模式也具备自动容灾,自动选主,主从切换的功能,所以集群模式才是 Redis 多机部署的最终形态。

Redis 集群是如何存储数据的 ?

        Redis 集群将数据分为固定数量的槽(slot),默认是 16384 个槽,每个主节点负责管理一部分槽,并负责处理与这些槽相关的键值对。

存储示例 >>

数据具体分配到哪个槽位,需要使用 CRC16 算法对要存储的 key 进行 hash 得到一个整数值,然后用这个整数值对 16384 进行取模来得到具体的槽位。 公式:slot = CRC16(key) % 16383

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

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

相关文章

探秘工业设计的魅力:引领时尚潮流,打造个性空间

工业风格源自于上世纪初的工人阶级世界,几十年来一直充满诱惑力。它们由金属集合物,焊接、铆钉这些暴露在外的结构组建,融进了更多装饰性的曲线,再与素雅的色彩搭配形成:让我们来看看这种历史悠久的,在室内…

关于Springboot项目打包的配置问题

一、打包方式的不同致使jar包运行性能及docker部署的效率问题 1.1方式一 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source&…

探索AIGC人工智能(Midjourney篇)(二)

文章目录 利用Midjourney进行LOGO设计 用ChatGPT和Midjourney的AI绘画&#xff0c;制作儿童绘本故事 探索Midjourney换脸艺术 添加InsightFaceSwap机器人 Midjourney打造专属动漫头像 ChatGPT Midjourney画一幅水墨画 Midjourney包装设计之美 Midjourney24节气海报插画…

NSSCTF——Web题目1

目录 一、[LitCTF 2023]PHP是世界上最好的语言&#xff01;&#xff01; 二、[LitCTF 2023]Ping 三、[SWPUCTF 2021 新生赛]easyupload1.0 四、[SWPUCTF 2021 新生赛]easyupload2.0 五、[SWPUCTF 2021 新生赛]caidao 一、[LitCTF 2023]PHP是世界上最好的语言&#xff01;&a…

Github的使用指南

首次创建仓库 1.官网创建仓库 打开giuhub官网&#xff0c;右上角点击你的头像&#xff0c;随后点击your repositories 点击New开始创建仓库 如下图为创建仓库的选项解释 出现如下界面就可以进行后续的git指令操作了 2.git上传项目 进入需上传项目的所在目录&#xff0c;打开…

LeetCode-227-基本计算器Ⅱ

题目描述&#xff1a; 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意&#xff1a;不允许使用任何将字符串作为数学表达式计…

项目进度管理(4-1)关键链法

1 关键链法产生的背景 关键链法&#xff08;Critical Chain Method&#xff0c;CCM&#xff09;起源于20世纪80年代&#xff0c;是由Eliyahu M. Goldratt在他的著作《关键链》&#xff08;"Critical Chain"&#xff09;中首次提出和阐述的。Eliyahu M. Goldratt是以…

python爬虫实战零基础(3)——某云音乐

爬取某些云网页音乐&#xff0c;无需app 分析网页第二种方式批量爬取 声明&#xff1a;仅供参考学习&#xff0c;参考&#xff0c;若有不足&#xff0c;欢迎指正 你是不是遇到过这种情况&#xff0c;在pc端上音乐无法下载&#xff0c;必须下载客户端才能下载&#xff1f; 那么&…

c语言每日一练(11)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…

面试之快速学习计算机网络-http

1. HTTP常见状态码 2. 3开头重定向&#xff0c;4开头客户端错误&#xff0c;5开头服务端错误 2. HTTP 报文 1. start-line&#xff1a;请求行&#xff0c;可以为以下两者之一&#xff1a; 请求行&#xff1a; GET /hello-world2.html HTTP/1.1状态行&#xff1a;HTTP/1.1 200…

数据库——Redis 单线程模型详解

文章目录 Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 &#xff08;Netty 的线程模型也基于 Reactor 模式&#xff0c;Reactor 模式不愧是高性能 IO 的基石&#xff09;&#xff0c;这套事件处理模型对应的是 Redis 中的文件事件处理器&#xff08;file …

大模型是什么?泰迪大模型能够解决企业哪些痛点?

什么是大模型&#xff1f; 大模型是指模型具有庞大的参数规模和复杂程度的机器学习模型。在深度学习领域&#xff0c;大模型通常是指具有数百万到数十亿参数的神经网络模型。这些模型需要大量的计算资源和存储空间来训练和存储&#xff0c;并且往往需要进行分布式计算和特殊…

一百六十五、Kettle——用海豚调度器调度Linux资源库中的kettle任务脚本(亲测、附流程截图)

一、目的 在Linux上脚本运行kettle的转换任务、无论是Linux本地还是Linux资源库都成功后&#xff0c;接下来就是用海豚调度Linux上kettle任务 尤其是团队开发中&#xff0c;基本都要使用共享资源库&#xff0c;所以我直接使用海豚调度Linux资源库的kettle任务脚本 二、前提条…

<C++> 内存管理

1.C/C内存分布 让我们先来看看下面这段代码 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] {1, 2, 3, 4};char char2[] "abcd";char *pChar3 "abcd";int *ptr1 (int *) mal…

【Java 高阶】一文精通 Spring MVC - 转发重定向(四)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

芯讯通SIMCOM A7680C (4G Cat.1)AT指令测试 TCP通信过程

A7680C TCP通信 1、文档准备 去SIMCOM官网找到A7680C的AT指令集 AT指令官网 进入官网有这么多AT指令文件&#xff0c;只需要找到你需要用到的&#xff0c;这里我们用到了HTTP和TCP的&#xff0c;所以下载这两个即可。 2、串口助手 任意准备一个串口助手即可 这里我使用的是XC…

浅析Python爬虫ip程序延迟和吞吐量影响因素

作为一名资深的爬虫程序员&#xff0c;今天我们很有必要来聊聊Python爬虫ip程序的延迟和吞吐量&#xff0c;这是影响我们爬取效率的重要因素。这里我们会提供一些实用的解决方案&#xff0c;让你的爬虫程序飞起来&#xff01; 网络延迟 首先&#xff0c;让我们来看看网络延迟对…

软件测试知识点总结(一)

文章目录 前言一. 什么是软件测试二. 软件测试和软件调试的区别三. 软件测试和研发的区别四. 优秀的测试人员所应该具备的素质总结 前言 在现实生活中的很多场景下&#xff0c;我们都会进行测试。 比如买件衣服&#xff0c;我们需要看衣服是不是穿着好看&#xff0c;衣服材质如…

sql server删除历史数据

1 函数 datediff函数: DATEDIFF ( datepart , startdate , enddate )datepart的取值可以是year,quarter,Month,dayofyear,Day,Week,Hour,minute,second,millisecond startdate 是从 enddate 减去。如果 startdate 比 enddate 晚&#xff0c;返回负值。 2 例子 删除2023年以…

核污水会造成什么影响

目录 1.什么是核污水 2.什么是氚元素 3.氚元素的半衰期 4.核污水对人类健康的影响 5.我们应该采取什么措施保护自己 1.什么是核污水 核污水是指核设施&#xff08;如核电站、核燃料回收厂等&#xff09;产生的含有放射性物质的废水。核污水中可能含有放射性同位素、放射性…