为了账号安全,请及时绑定邮箱和手机立即绑定

Redis Cluster

标签:
Redis

Redis Cluster

呼唤集群

  • redis最高可以达到10万/s,如果业务需要100万/s呢?
  • 单机器内存太小,无法满足需求

数据分布

图片描述
图片描述

  1. 顺序分区的数据量不可确定性导致倾斜,不支持批量操作

图片描述

哈希分布

节点取余分区 hash(key)%nodes

如果要增加分区,数据迁移量在80%左右
数据迁移第一次是无法从数据中取到的,数据库需要进行回写到新节点图片描述
图片描述
图片描述

一致性哈希分区

比较适合节点多的情况

图片描述
图片描述

虚拟槽分区

共享消息模式
图片描述
图片描述

搭建集群

  1. 复制,高可用,切片
  2. 节点之间通过meet来相互通信
  3. 给节点指派槽,这样节点可以正常的读写
  4. 每个主节点有复制一个从节点
    图片描述
    图片描述
    图片描述

安装

  1. 原生命令安装
    • 配置开启节点
    • meet
    • 指派槽
    • 主从
    • cluster replicate node-id
  2. 官方工具安装
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述

Ruby环境

  1. 下载,编译,安装Ruby
  2. 安装rubygem redis
  3. 安装redis-trib.rb
    图片描述
    图片描述
    图片描述

集群伸缩

伸缩原理

图片描述

扩容集群

  1. 准备新节点
  2. 加入集群
    • 作用
    • 为其迁移槽和数据实现扩容
    • 作为从节点负责故障转移
  3. 迁移槽和数据
    图片描述

客户端实现

图片描述
图片描述
图片描述
图片描述

第二种方式

优点:会做一个孤立节点的检测

图片描述
图片描述
图片描述

集群扩容

图片描述
图片描述
图片描述

pipeline

图片描述

收缩集群

图片描述

图片描述
图片描述

客户端路由

图片描述

moved重定向

图片描述
图片描述

客户端不会自己找到异常节点,需要自己写逻辑

图片描述

ask重定向

图片描述

smart客户端工作原理

图片描述

JedisCluster基本使用

图片描述

  • 单例:内置了所有节点的连接池
  • 无需手动借还连接池
  • 合理设置commons-pool

整合spring

图片描述

多节点命令实现

图片描述

四种批量操作实现(mget,mset必须在一个槽)

图片描述
图片描述

故障转移

故障发现

图片描述

故障恢复

图片描述

常见问题

图片描述
图片描述

集群完整性

图片描述

带宽消耗

图片描述

Pub/Sub广播(发布一条消息,每个节点都会接收到,加重带宽消耗)

图片描述

数据倾斜

分两种,数据倾斜和请求倾斜
图片描述

读写分离

图片描述

数据迁移

图片描述
图片描述

集群VS单机

图片描述

缓存设计与优化(知识点)

图片描述

缓存收益与成本

收益

图片描述

成本

图片描述

使用场景

图片描述

缓存更新策略

图片描述

缓存粒度控制

图片描述

缓存穿透优化(大量请求不命中)

图片描述

无底洞问题

图片描述

热地key重建优化

图片描述

Redis云平台cachecloud

Redis规模化运维

  • 发布构建繁琐,私搭乱建
  • 节点&机器运维成本
  • 监控报警初级

快速构建

机器部署

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消