因为不懂Redis集群,我被diss了

news2025/1/11 8:05:32

点赞再看,Java进阶一大半

Redis官方在官网里写着霸气的宣传语:从构建者那里获取世界上最快的内存数据库Get the world’s fastest in-memory database from the ones who built it。南哥相信国内没用Redis的科技公司也屈指可数。

在这里插入图片描述

现在Redis已经走向了商业化,它所属的公司叫Redis Ltd。不过可惜的是Redis创始人Salvatore Sanfilippo在2020年就离开了Redis Labs,那个留着乱糟糟黑色头发的中年男人就是Redis的创始人。

Redis的商业推广仍在继续着,今年8月29号新加坡就有Redis演讲活动,大家要去现场看看嘛。

大家好,我是南哥。

一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。

1. Redis集群

1.1 集群概念

面试官:我看你简历写了Redis集群,你说一说?

Redis主从架构和Redis集群架构是两种不同的概念,大家刚接触Redis时经常弄混淆。南哥给大家贴下Redis官网对两者的解释。

(1)Redis主从架构

Redis主从实现了有一个易于使用和配置的领导者跟随者复制,它允许副本 Redis 实例成为主实例的精确副本。

(2)Redis集群架构

Redis 集群将数据自动分片到多个 Redis 节点,Redis 集群还在分区期间提供一定程度的可用性,当某些节点发生故障或无法通信时,Redis集群能够继续运行。

它们两者都是Redis高可用的解决方案,但偏向点不同。Redis主从对数据的完整性更看重,Redis主从节点都保存了完整的一套数据库状态。

而Redis集群则对抗压能力更看重,整个集群的数据库整合起来才是一个完整的数据库。

在功能性上它们也有不同,Redis主从有哨兵,而Redis集群有分片。我们要看业务选择不同的Redis方案,当然,Redis集群还可以搭配Redis主从一起使用,我们可以在某一个集群节点上配置一套主从模型。

如果要6002、6003节点添加到6001节点的Redis集群里,我们可以使用以下命令。

127.0.0.1:6001> CLUSTER MEET 127.0.0.1 6002
OK
127.0.0.1:6001> CLUSTER MEET 127.0.0.1 6003
OK

1.2 集群分片

面试官:那Redis集群怎么实现负载均衡的?

大家要记住Redis集群一个很重要的知识点,那就是分片。

Redis集群通过分片的方式来保存数据库中的键值对,Redis集群把整个数据库分为16384个槽,而集群中的每个节点可以处理这里面的0个或最多16384个槽。

假如南友们在公司里配置了一个包含 3 个节点的集群,那么这3个节点的槽分配会是这样的:

  • 节点 A 包含从 0 到 5500 的哈希槽。
  • 节点 B 包含从 5501 到 11000 的哈希槽。
  • 节点 C 包含从 11001 到 16383 的哈希槽。

那这样分片有什么作用?

大家想一想,有了分片,我们对某一个键值对的增删改查就会在三个集群节点中的其中一个进行,这样对Redis的各种操作也就负载均衡地下落到各个集群的节点中。

1.3 重新分片

面试官:要是热点数据都是某个Redis节点的槽,负载均衡不是没用了?

Redis集群甚至可以在线上环境直接执行重新分片功能,分片是不是很灵活呢?南哥给Redis点赞。

Redis官网对分片是这么解释的。

Moving hash slots from a node to another does not require stopping any operations; therefore, adding and removing nodes, or changing the percentage of hash slots held by a node, requires no downtime.

将哈希槽从一个节点移动到另一个节点不需要停止任何操作;因此,添加和删除节点,或更改节点持有的哈希槽百分比,不需要停机。

Redis集群重新分片可以将任意数量已指派给某个节点的槽改为指派给另一个节点,而相关槽所属的键值对也会从源节点被移动到目标节点。重新分片操作也不需要集群节点下线,源节点和目标节点也都可以继续处理命令请求。

要是小伙伴遇到热点数据都精确命中了Redis集群的某一个节点,赶快在线上环境紧急重新分片,把相关热点槽指派给其他节点处理,这也是一个不错的选择。

2. 集群的主从模型

2.1 主从模型

面试官:Redis集群的主从模型,知道吗?

还记得上文南哥提到过可以给Redis集群的某一个节点配置主从模型吗?

Redis集群把键值都分散在多个集群节点中,这也有缺点。例如某一个节点失效了,那这个节点里所有槽的键值对也都无法访问了。Redis官方当然也知道,主从模型可以让集群节点有1~N个副本节点。

像上文的Redis集群的A、B、C三个节点,主从模型可以为这每一个主节点添加一个副本节点。这样的话集群就变成了由A、B、C、A1、B1、C1组成,例如当A节点失效了,那它的副本节点A1就会提升为新的主节点。

主从模型也有另外的好处,我们可以让主节点用于处理槽,而副本节点用来分担读的压力

在这里插入图片描述

为集群B节点添加B1、B2副本节点

2.2 主节点选举

面试官:那集群里怎么选举主节点的?

Redis集群的主从模型选举主节点和Redis哨兵选举出主节点非常相似,但大家不要搞混了,Redis集群中并没有哨兵的概念。

主从模型选举主节点和哨兵选举领头哨兵一样是先到先得,而且它们投票的对象是集群中的其他主节点

选举的流程如下。

(1)当从节点发现主节点进入下线状态时,会广播一条CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST消息,要求其他集群主节点向改从节点进行投票。

(2)投票遵循先到先得的规则,集群主节点会投票给第一个发送选举信息的该从节点,返回一条CLUSTERMSG_TYPE_FAILOVER_AUTH_ACK消息。

(3)如果集群主节点的个数是N,当某个从节点收到大于等于N / 2 + 1张支持票时,代表该从节点获胜,该从节点也将成为新的主节点。

最后

本文收录在我开源的《Java学习进阶指南》中,涵盖了在大厂工作的Javaer都不会不懂的核心知识、面试重点。相信能帮助到大家在Java成长路上不迷茫,南哥希望收到大家的 ⭐ Star ⭐支持我完善下去。GitHub地址:https://github.com/hdgaadd/JavaProGuide。

在这里插入图片描述

欢迎关注南哥的公众号:Java进阶指南针。公众号里有南哥珍藏整理的大量优秀pdf书籍,也欢迎南友加入我们私密的Java学习进阶圈子!

我是南哥,南就南在Get到你的有趣评论➕点赞➕关注。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

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

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

相关文章

C++学习:C++是如何运行的

C 是一种强类型的编程语言,支持面向对象、泛型和低级内存操作。它的工作机制包括从编写源代码到生成可执行文件的一系列步骤。C与文件无关,文件只是容纳运行内容的载体,需要对文件以目标系统的规则编译后,才能在目标系统中运行。 …

红酒与情感:品味中的情感共鸣

在生活的细微之处,情感如涓涓细流,无声无息却又深深地影响着我们。而红酒,这瓶中的液体,仿佛是情感的载体,让我们在品味中感受那些难以言说的情愫。当定制红酒洒派红酒(Bold & Generous)与情…

有什么快速进行同声传译的软件?6个软件帮助你快速进行同声传译

有什么快速进行同声传译的软件?6个软件帮助你快速进行同声传译 同声传译是将一种语言的讲话即时翻译成另一种语言的过程,对于跨语言沟通非常重要。以下是六款可以帮助你快速进行同声传译的软件,每款软件都有其独特的功能和优势。 语音翻译…

智能计算模拟: DFT+MD+ML 深度融合及科研实践应用

智能计算模拟: DFTMDML 深度融合及科研实践应用 第一 部分 DFTMDML基础 1. 理论内容: 理论内容: 1.1. 计算模拟发展:MD, MC, DFT三大部分 1.2. 人工智能时代背景: 大数据与大模型对模拟计算的影响 1.3. 人工智能…

【免费】如何考取HarmonyOS应用开发者基础认证和高级认证(详细教程)

HarmonyOS应用开发者认证考试PC网址 基础:华为开发者学堂 高级:华为开发者学堂 注:免费认证,其中基础认证有免费的课程,浏览器用Edge。 文章目录 目录 HarmonyOS应用开发者认证考试PC网址 前言 一、备考流程 1、注册…

【题解】【数学】—— [CSP-J 2023] 小苹果

【题解】【数学】—— [CSP-J 2023] 小苹果 [CSP-J 2023] 小苹果题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 1.题意分析2.代码 [CSP-J 2023] 小苹果 前置知识:数学分组思想,整体思想。 [CSP-J 2023] 小苹果 题目描述 小 Y 的桌子上…

家庭出游新宠儿!格瑞维亚改装大赛给出行带来无限可能

近期,格瑞维亚改装共创大赛的盛大开启,推动着改装领域前进的步伐。这场盛宴汇聚了400余份创意火花,每一款改装格瑞维亚都是对“家”的重新诠释,它们不仅仅是车轮上的风景,更是梦想与生活的完美融合。 大赛中&#xff0…

Day15--Servlet后端之Jsp了解学习(数据展示分页的实现)

JSP(Java Server Pages)是一种基于Java的动态网页开发技术,主要用于创建能够动态生成内容的Web应用程序。他可以前后端语言混合编写,用在编译后会变成一个类,你也可以理解为jsp文件就是一个servlet类,只是j…

2024第18届中国西部体育博览会诚邀代理招展

2024第18届中国西部体育博览会诚邀代理招展 2024第18届中国西部体育博览会诚邀全国各关联商会、协会,联盟、各专业会展公司、各关联产业园区、各关联网站报纸杂志及平台等资源方组团参展,组委会将给予最优惠的代理招展政策,群策群力共同把中…

pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“

参考博客: 1)pycharm中配置pyqt designer和pyside2【功能是在pycharm中可以打开designer,并且可以把.ui文件转换为.py文件】 https://blog.csdn.net/kuntliu/article/details/117219237 2).ui转化为.py后,点击运行,报错…

C++为何难以割舍历史包袱?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「c++的资料从专业入门到高级教程」,点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!! 你以为…

Llama 3.1:Meta 的开源 AI 巨兽,智能新高度

在人工智能的世界里,大型语言模型(LLMs)就像是会魔法的巨人,它们能读懂我们的心思,帮我们解决问题。最近,Meta 公司(就是 Facebook 的母公司)发布了一个叫做 Llama 3.1 的超级智能模…

科学碳目标的制定流程

科学碳目标(Science-Based Target,简称SBT)的制定流程是一个系统而严谨的过程,旨在确保企业或组织设定的温室气体减排目标与气候科学的最新研究成果和《巴黎协定》的目标相一致。以下是科学碳目标制定流程的主要步骤: …

java springboot Reflections工具扫描项目中带有某个注解的方法(类似@SpringBootApplication扫描各种注解)

文章目录 java springboot Reflections工具扫描项目中带有某个注解的方法(类似SpringBootApplication扫描各种注解)简单示范EnableDistributeDelayTask配置路径扫描示范(类似于SpringBootApplication) java springboot Reflection…

Jupyter Notebook的配置基础

Jupyter Notebook的配置基础 Tab 补全 和 * 任意字符 在 Python 的 IPython 或 Jupyter Notebook 环境中,使用 Tab 补全来快速找到内置函数的方法如下: 开始输入:在代码单元格中开始输入一个函数的名称,可以是内置函数的名称的任…

物联网开发中是否必须了解嵌入式技术?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 1,首先要跟上…

(python)multiprocessing子进程(Process类的使用)总结教程

Python提供了multiprocessing模块来开启子进程,并在子进程中执行我们定制的任务。 (python)multiprocessing子进程(Process类的使用) 两种使用方法第一种方法:使用Process类第二种方法:使用mul…

Spring框架和Maven项目搭建

Spring Spring框架是一个用于构建企业级应用程序的开源Java框架。它提供了一个全面的编程和配置模型,用于开发现代化的Java应用程序。 Spring从早期的大量XML配置逐渐演变为采用注解和自动配置的方式,显著减少了配置的工作量。同时,Maven的…

为什么Transformer需要进行 Multi-head Attention?

目录 1. 前言 2. 基本概念 2.1. Word2Vec 2.2. Attention is all you need 2.3. Self-attention 2.3.1. 概述self-attention 2.3.2. 训练细节 2.4. Multi-head Attention 2.4.1. 多头理论细节 2.4.2. 多头代码实现 2.5. 总结 3. 讨论观点 3.1. 观点1: …