redis cluster集群

华子目录

  • 什么是`redis集群`
  • `redis cluster`的`体系架构`
  • 什么是数据`sharding`?
  • 什么是`hash tag`
  • 集群中删除或新增节点,数据如何迁移?
  • `redis集群`如何使用`gossip`通信?
    • 定义
    • `meet信息`
    • `ping消息`
    • `pong消息`
    • `fail消息(不是用gossip协议实现的)`
    • 流量图
  • 数据访问如何定位到具体的节点?
    • 正常访问
    • 访问已被迁移到其他节点的数据
  • `redis cluster主从架构`
  • 创建`redis cluster`的`前提`

什么是redis集群

  • redis3.0开始就支持集群节点之间使用gossip协议进行通信,实现了去中心化集群中支持动态的添加和删除节点动态迁移数据以及自动执行故障转移
  • 哨兵sentinel机制中,可以解决redis高可用问题,即当master故障后可以自动slave提升为master,从而可以保证redis服务正常使用,但是无法解决redis单机写入瓶颈问题,即单机redis写入性能受限于单机的内存大小、并发数量、网卡速率等因素
  • 集群某个节点是否失效,是由整个集群超过半数节点监测都失效,才能算真正的失效
  • 客户端不需要proxy即可直接连接redis应用程序中需要配置全部的redis服务器IP
  • 每个哈希槽可以存储若干个key
  • 无中心redis集群当中,其每个节点保存当前节点数据整个集群状态每个节点都和其他所有节点连接

redis cluster体系架构

在这里插入图片描述

什么是数据sharding

  • redis cluster使用数据分片实现key存储分布
  • redis cluster集群划分为16384个槽位数据库中所有的key进行hash计算后,都会落到这16384个槽位中的其中一个槽位
  • 那么key是如何定位到哪个槽位的。可以通过公式进行计算:CRC16(key)%16384得到就是槽位16384个槽位全部分配cluster中的节点
  • 每个节点维护自己的槽位,同时每个节点也会存储其他节点维护的槽位信息
  • 当然你也可以指定到哪个槽位,这就涉及到了hash tag

什么是hash tag

  • hash tag是用来解决用户想要将一堆数据key全部放到一个槽位提出来的用户可以将key设置成这样:原始的key + {tag标签},当redis cluster碰到这样的key,就会提取{}里面的,进行槽位计算

集群中删除或新增节点,数据如何迁移?

  • 假设cluster目前有四个节点A,B,C,D
  • 如果删除D节点,则会将D节点中的所有槽位全部分配给A,B,C节点
  • 如果新增E节点,则会将A,B,C,D中的部分槽位移动到E节点

redis集群如何使用gossip通信?

定义

  • gossip使得元数据分布式存储不做集中存放,实现了去中心化,当一个节点信息变更,就会触发集群中整个节点信息的更新缺点就是更新会有延迟

meet信息

  • 用于在集群中通知新节点加入

ping消息

  • 用于检测节点是否在线交换每个节点之间状态信息

pong消息

  • pong消息是用来回应其他节点自己发的消息,还可以通过发此消息,让其他节点更新此节点状态信息

fail消息(不是用gossip协议实现的)

  • 集群里的主节点A主节点B标记为下线时,会通过集群广播一条关于主节点Bfail消息,所有接受到这条消息节点(包括主从节点)都会将主节点B标记为下线

流量图

在这里插入图片描述

数据访问如何定位到具体的节点?

正常访问

在这里插入图片描述

访问已被迁移到其他节点的数据

在这里插入图片描述

redis cluster主从架构

  • Redis cluster架构虽然解决了并发的问题,但是又引入了一个新的问题,每个Redis master高可用如何解决
  • 那就是对每个master节点都实现主从复制,从而实现redis高可用性

在这里插入图片描述

创建redis cluster前提

  • 每个redis node节点采用相同的硬件配置相同的密码相同的redis版本
  • 每个节点必须开启参数
cluster-enabled yes  #必须开启集群状态,开启后redis进程会有cluster显示
cluster-config-file nodes-6380.conf   #此文件有redis cluster集群自动创建和维护,不需要任何手动操作
  • 所有redis服务器必须没有任何数据
  • 先启动单机redis且没有任何key value

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

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

相关文章

Excel批量设置行高,Excel表格设置自动换行后打印显示不全,Excel表格设置最合适的行高后打印显示不全,完美解决方案!!!

文章目录 说个问题(很严重!!!)写个方案会Python看这里Python环境搭建不存在多行合并存在多行合并 不会Python看这里 说个问题(很严重!!!) 平时处理Excel表格…

安全合规遇 AI 强援:深度驱动行业发展新引擎 | 倍孜网络CEO聂子尧出席ICT深度观察报告会!

12月24日,2025中国信通院深度观察报告会科技伦理与合规发展分论坛在北京举办。本次分论坛主题为“伦理先行,合规致远”,聚焦互联网广告合规治理、移动终端应用生态治理、短视频平台责任限度等前沿话题进行分享与探讨。工业和信息化部领导&…

教育行业 UI 设计基础篇:简洁直观的风格打造

在当今数字化时代,教育行业的线上平台如雨后春笋般涌现,而 UI 设计作为用户与教育产品交互的重要桥梁,其重要性不言而喻。对于教育行业而言,简洁直观的 UI 风格能够极大地提升用户体验,帮助学习者更高效地获取知识。 …

KaiOS 4.0 | DataCall and setupData implemention

相关文档 1、KaiOS 3.1 系统介绍 KaiOS 系统框架和应用结构(APP界面逻辑)文章浏览阅读842次,点赞17次,收藏5次。对于Java开发者而言,理解JS的逻辑调用是有点困难的。而KaiOS webapp开发又不同于现代的web开发,更像chrome浏览器内嵌模式。在这里梳理一下kaios平台web应用…

【星海随笔】删除ceph

cephadm shell ceph osd set noout ceph osd set norecover ceph osd set norebalance ceph osd set nobackfill ceph osd set nodown ceph osd set pause参考文献: https://blog.csdn.net/lyf0327/article/details/90294011 systemctl stop ceph-osd.targetyum re…

MySQL敏感数据进行加密的几种方法

使用MySQL内置的加密函数 AES_ENCRYPT和AES_DECRYPT函数 方法介绍: AES(Advanced Encryption Standard)是一种对称加密算法。在MySQL中,可以使用AES_ENCRYPT函数对数据进行加密,使用AES_DECRYPT函数进行解密。这种加密…

「Mac畅玩鸿蒙与硬件48」UI互动应用篇25 - 简易购物车功能实现

本篇教程将带你实现一个简易购物车功能。通过使用接口定义商品结构,我们将创建一个动态购物车,支持商品的添加、移除以及实时总价计算。 关键词 UI互动应用接口定义购物车功能动态计算商品管理列表操作 一、功能说明 简易购物车功能包含以下交互&#…

快速下载pytorch_geometric

注意:千万不要一上去就使用pip去安装!!! 1.找到GitHub手动下载所需依赖: https://github.com/pyg-team/pytorch_geometric 进入网址后点击此处: 2.点击here进去后寻找自己的torch版本(我的是torch2.1.2的…

微服务-1 认识微服务

目录​​​​​​​ 1 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 2 服务拆分原则 2.1 什么时候拆 2.2 怎么拆 2.3 服务调用 3. 服务注册与发现 3.1 注册中心原理 3.2 Nacos注册中心 3.3 服务注册 3.3.1 添加依赖 3.3.2 配置Nacos 3.3.3 启动服务实例 …

低代码开发中 DDD 领域驱动的页面权限控制

在低代码开发的领域中,应用安全与灵活性是两大关键考量因素。领域驱动设计(DDD)作为一种在软件设计领域广泛应用且颇具影响力的方法论,正逐渐在低代码开发的页面权限控制方面展现出其独特的价值与潜力。本文旨在客观地探讨如何借助…

找到一个linux静态库动态库的好资料.3

# 正文 继续整理从这个页面学到的东西:https://tldp.org/HOWTO/Program-Library-HOWTO。 之前的在这里:找到一个linux静态库动态库的好资料.0找到一个linux静态库动态库的好资料.1找到一个linux静态库动态库的好资料.2 这一篇继续看这个: https://tldp…

nginx 基于 geoip 模块限制地区访问

1、安装 geoip 库 [rootVM-0-15-centos ~]# yum -y install geoip geoip-devel 2、下载并安装 MaxMind 的免费 GeoIP 数据库。这里我选择下载 GeoLite2 数据库,适用于大多数应用。 访问 maxmind 官网(https://www.maxmind.com/)&#xff0c…

openfeign-一些配置

之前整理过一篇 openfeign的快速使用。openfeign简化服务间调用-笔记-CSDN博客 今天补充一下一些个性化配置。 一 日志: 默认的openfeign不输出日志,想看日志需要单独配置下。 日志级别 public static enum Level {NONE,BASIC,HEADERS,FULL;private…

【回溯】LeetCode经典题目总结:组合、排列、子集、分割、N皇后、单词搜索

回溯 组合问题组合总和全排列子集分割回文串N皇后电话号码的字母组合单词搜索括号生成 组合问题 给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 树形结构&#xff1…

HEIC 是什么图片格式?如何把 iPhone 中的 HEIC 转为 JPG?

在 iPhone 拍摄照片时,默认的图片格式为 HEIC。虽然 HEIC 格式具有高压缩比、高画质等优点,但在某些设备或软件上可能存在兼容性问题。因此,将 HEIC 格式转换为更为通用的 JPG 格式就显得很有必要。本教程将介绍如何使用简鹿格式工厂&#xf…

【实战示例】面向对象的需求建模

前言 博主准备写一个以面向对象为核心思想的软件需求建模、领域建模的系列,总结一整套可落地的DDD的打法,前面几篇文章论述了如何进行面向对象的需求建模,本文将以一个简单的购物商城的需求来演示如何进行面向对象的需求建模。 面向对象的需…

04-微服务02

我们将黑马商城拆分为5个微服务: 用户服务 商品服务 购物车服务 交易服务 支付服务 由于每个微服务都有不同的地址或端口,相信大家在与前端联调的时候发现了一些问题: 请求不同数据时要访问不同的入口,需要维护多个入口地址…

Node.js 工具:在 Windows 11 中配置 Node.js 的详细步骤

一、概述 记录时间 [2024-12-25] 本文讲述如何在 Windows 11 中进行 Node.js 工具的安装和配置。 以下是详细的步骤和说明。 二、安装 Node.js 1. 官网下载 通过官网,下载 Node.js,上面有好几种下载方式,文中下载的是 zip 压缩包。 如图&…

Element-plus自动导入

安装 npm i element-plus 自动引入 1. 安装两个插件 npm install -D unplugin-vue-components unplugin-auto-import2. 配置插件 vue3项目修改vite.config.js,把两个插件添加入即可,注意:不是覆盖原有配置 Vite // vite.config.js import { define…

基于FISCO BCOS的电子签章系统

概述 本项目致力于构建一个安全、高效且功能完备的电子印章系统,通过整合区块链技术与传统数据库管理,为用户提供了可靠的电子签章解决方案,有效应对传统电子签章系统的数据安全隐患,满足企业和个人在数字化办公环境下对电子文档…