手记

Redis Cluster

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规模化运维

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

快速构建

机器部署

0人推荐
随时随地看视频
慕课网APP