Redis 切片集群

这篇具有很好参考价值的文章主要介绍了Redis 切片集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

切片集群 (分片集群) : 启动多个 Redis 实例组成一个集群,再按一定的规则,把收到的数据划分成多份,每份用一个实例来保存

切片集群架构图 :

  • 25G 实例 , 生成 RDB , fork 子进程阻塞较长
  • 5GB 的实例 , 生成 RDB 时,fork 子进程不会较影响主线程

image.png

查看最近一次 fork 耗时 :

  • 越高,fork 越慢
info latest_fork_usec

Redis 扩展方案 :

  • 纵向扩展 (scale up) : 升级 Redis 的资源配置
  • 横向扩展 (scale out) : 增加 Redis 数

image.png

纵向扩展的优缺点 :

  • 优点 : 扩展简单,直接
  • 缺点 : RDB 持久化,容易阻塞主线程
  • 受硬件和成本的限制

横向扩展的优缺点 :

  • 优点 : 支持千万的用户量
  • 不受硬件和成本的限制

数据切片

Redis 3.0 后,提供 Redis Cluster 方案,实现切片集群

映射过程 :

  1. 先对 key,按 CRC16 算法计算 16 bit
  2. 再对 16bit 值进行 16384 取模,得到 0~16383 内的哈希槽

数据、哈希槽、实例的分布情况 :

image.png

手动分配哈希槽 :

  • 16384 个槽都要分配完,不然 Redis 集群无法工作
  • 实例 1 保存哈希槽 0 和 1
  • 实例 2 保存哈希槽 2 和 3
  • 实例 3 保存哈希槽 4
redis-cli -h 172.16.19.3 –p 6379 cluster addslots 0,1
redis-cli -h 172.16.19.4 –p 6379 cluster addslots 2,3
redis-cli -h 172.16.19.5 –p 6379 cluster addslots 4

数据定位

实例和哈希槽的对应关系的变化的两个:

  • 实例有新增或删除,Redis 要重新分配哈希槽
  • 为了负载均衡,把哈希槽重新分布下

Redis Cluster 利用重定向机制,解决缓存的分配信息和最新的分配信息不一致问题

  • 重定向 : 客户端对该实例进行读写操作时,但该实例没有相应的数据,客户端再对新实例进行操作

MOVED 重定向例子 :

  • 客户端请求的哈希槽 13320,在 172.16.19.5 上。客户端会和 172.16.19.5 连接
GET hello:key
(error) MOVED 13320 172.16.19.5:6379

客户端 MOVED 重定向 :

  1. Slot 2 的数据都从实例 2 移到实例 3
  2. 客户端缓存还记录 Slot 2 在实例 2上
  3. 客户端访问 Slat2 时, 会返回 MOVED ,把 Slot 2 的最新位置 (实例 3) 给客户端
  4. 客户端再向实例 3 发送请求,并更新客户端缓存

image.png

ASK例子 :
Slot 2 的数据还有部分数据没有迁移,客户端向实例 2 发送请求 , 会返回 ASK 报错信息

  • ASK : 客户端请求的哈希槽 13320,在 172.16.19.5 上,但该哈希槽正在迁移
GET hello:key
(error) ASK 13320 172.16.19.5:6379

客户端 ASK 重定向 :

  • Slot 2 正从实例 2 往实例 3 迁移,key1 , key2 已迁移过去,但 key3 , key4 还在实例 2
  • ASK 的含义 : Slot 数据还在迁移中;把 Slot 的最新实例给客户端
  • 不会更新客户端缓存的哈希槽分配信息

image.png文章来源地址https://www.toymoban.com/news/detail-434012.html

到了这里,关于Redis 切片集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis --- 哨兵、分片集群

    Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。   集群结构和作用 哨兵的结构如图:   哨兵的作用如下: 监控 :Sentinel 会不断检查您的master和slave是否按预期工作 自动故障恢复 :如果master故障,Sentinel会将一个slave提升为master。当故障实例恢复后也以新的

    2024年02月03日
    浏览(16)
  • Redis分片集群搭建及其原理

    主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决: 海量数据存储问题 高并发写的问题 使用分片集群可以解决上述问题,如图: 分片集群特征: 集群中有多个master,每个master保存不同数据 每个master都可以有多个slave节点 master之间通过ping监测彼此

    2024年02月05日
    浏览(18)
  • Ubuntu下搭建Redis分片集群

    目录 准备实例和配置 启动分片集群 测试分片集群 分片集群需要的节点数量较多,搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,并且master之间通过心跳机制互相监听,此模式下不需要哨兵监听结构如下  同一台虚拟机中开启6个redis实例,模拟分片

    2024年02月16日
    浏览(22)
  • Redis主从复制、哨兵机制、集群分片

    目录 一.主从复制 1.概述 2.主从架构相比于单点架构的优势 3.主从复制原理和工作流程 第一次同步 第一阶段:建立链接、协商同步 第二阶段:主服务器同步数据给从服务器  第三阶段:主服务器发送新写操作命令给从服务器 基于长连接的命令传播 分摊主服务器的压力 问题

    2024年02月14日
    浏览(25)
  • redis集群和分片-Redis Cluster:分布式环境中的数据分片、主从复制和 Sentinel 哨兵

    当涉及到 Redis 中的集群、分片、主从复制和 Sentinel 哨兵时,这些是构建分布式 Redis 环境中非常重要的概念和组件。下面详细介绍这些概念以及它们在分布式环境中的作用。 Redis Cluster 是 Redis 官方提供的分布式解决方案,用于管理和维护多个 Redis 节点的分布式数据存储。R

    2024年02月13日
    浏览(24)
  • Redis-持久化、主从集群、哨兵模式、分片集群、分布式缓存

    数据丢失问题 : Redis是内存存储,服务重启可能会丢失数据 解决方案:利用Redis数据持久化,将数据写入磁盘 并发能力问题 : 单节点Redis并发能力虽然不错,单也无法满足如618这样的高并发场景 解决方案:搭建主从集群,实现读写分离 故障恢复问题 : 如果Redis宕机,则服

    2024年02月16日
    浏览(19)
  • Redis分布式缓存之主从&哨兵&分片集群

    数据同步原理 集群伸缩:在集群中插入或删除某个节点 集群故障转移

    2024年02月04日
    浏览(19)
  • SpringBoot基于Redis(7.2)分片集群实现读写分离

    SpringBoot 访问 Redis 分片集群和 Redis 哨兵模式,使用上没有什么区别。唯一的区别在于 application.yml 配置上不一样。 首先,无论如何,得先有一个Redis分片集群,具体可以参考下面这篇文章 Docker-Compose部署Redis(v7.2)分片集群(含主从) 搭建完成后大致得到如下图描述的一个集群。

    2024年01月23日
    浏览(18)
  • Redis集群(分布式缓存):详解持久化、主从同步原理、哨兵机制、Cluster分片集群,实现高并发高可用

            单机式Redis存在以下问题,因此需要Redis集群化来解决这些问题        Redis数据快照,简单来说就是 把内存中的所有数据都记录到磁盘中 。当Redis实例故障重启后,从 磁盘读取快照文件,恢复数据 。快照文件称为RDB文件,默认是保存在当前运行目录。     (1)

    2024年02月08日
    浏览(28)
  • IDEA 在本地启动多个 SpringBoot 后端服务模拟集群

    目录 方式一:使用 IDEA 界面在多个后端端口运行同一个项目 方式二:通过控制台在运行项目 jar 包时传入端口配置 1. 点击 Run / Debug 在默认端口启动项目 2. 点击 Services,点击 + 号→ Run Configuration Type → SpringBoot 3. 单击已经启动的服务,按 Ctrl + D,弹出配置窗口 Edit Configur

    2024年01月18日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包