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

目录

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&…

13,【设计模式】代理

代理 代理支持任意参数的简单代理实现 代理 代理的本质是函数指针 代理分为单播&#xff0c;多播&#xff0c;动态多播&#xff08;ue4中提出的&#xff09; 单播&#xff1a;在网络通信中&#xff0c;单播是一种一对一的通信方式 多播&#xff1a;在网络通信中&#xff0c;…

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

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

GetX -从Get.Dialog返回值

GetMaterialApp 在main.dart中&#xff0c;确保MyApp返回的是GetMaterialApp而不是MaterialApp class MyApp extends StatelessWidget { // This widget is the root of your application. override Widget build(BuildContext context) { return GetMaterialApp( // <-- …

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;打开…

Android 之自定义绘制一

绘制的基本要素 onDraw(Canvas) 绘制方法 Canvas 绘制工具 Paint 调整风格 粗细等 坐标系: x y ,3D 会有z轴,x 左到右,y 上至下,与数学中y颠倒 尺寸单位: 布局中 dp ,sp ,代码中 px;dp 为了适配不同的尺寸 绘制的关键: draw(Canvas )......(关键类:Paint) Paint.ANTI_A…

ArrayList和Vector及LinkedList的区别

1.ArrayList和Vector的区别 第一句话&#xff1a;ArrayList和Vector底层都是数组实现的&#xff0c;初始容量都为10&#xff1b;在ArrayList的底层&#xff0c;是通过定义一个DEFAULT_CAPACITY的常量来指定的&#xff0c;而Vector的底层&#xff0c;是直接在空参构造中&#x…

LeetCode-227-基本计算器Ⅱ

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

C语言易错知识点总结3

指针概念 第 1 题&#xff08;单选题&#xff09; 题目名称&#xff1a; 以下系统中&#xff0c;int类型占几个字节&#xff0c;指针占几个字节&#xff0c;操作系统可以使用的最大内存空间是多大&#xff1a;( ) 题目内容&#xff1a; A .32位下&#xff1a;4,4,2^32 64位下&a…

项目进度管理(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#+GDAL影像处理笔记08:生成DEM的图阔范围线

目录 1 实现思路 2 源码及解析 1 实现思路 首先获取DEM数据的转换参数信息,这个信息记录了DEM的放射变换参数,包括左上角X,X方向分辨率、0、左上角Y、0、Y方向的分辨率【负值】等信息。接着是根据转换参数,计算DEM分幅数据的四至范围坐标;主要用到上一步得到的转换参数信…

《基于 Vue 组件库 的 Webpack5 配置》1.模式 Mode 和 vue-loader

一定要配置 模式 Mode&#xff0c;这里有个小知识点&#xff0c;环境变量 process.env.NODE_ENV module.exports {mode: production,// process.env.NODE_ENV 或 development, }一定要配置 vue-loader Vue Loader v15 现在需要配合一个 webpack 插件才能正确使用&#xff1b; …

c语言每日一练(11)

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

自然语言处理从入门到应用——LangChain:链(Chains)-[基础知识]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 在本文中&#xff0c;我们将学习如何在LangChain中创建简单的链式连接并添加组件以及运行它。链式连接允许我们将多个组件组合在一起&#xff0c;创建一个统一的应用程序。例如&#xff0c;我们可以创建一个链式连接&a…

面试之快速学习计算机网络-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;并且往往需要进行分布式计算和特殊…