Redis的cluster集群

Redis

文章目录

  • Redis
    • 集群
      • 数据分布算法
        • hash余数算法
        • 一致性hash
        • hash slot
      • 维护集群元数据
        • CAP
        • 集中式存储(基于zookeeper)
        • gossip协议
          • 通信端口
          • 几个指令
            • ping
            • pong
            • fail

集群

使用redis自带的cluster架构可以支撑高并发高可用海量数据

数据分布算法

hash余数算法

一致性hash

  1. 圆环,以手表为例。假设为12个格子
  2. 按照机器的id进行hash,A找到一个位置(比如3点),B找到一个位置(比如7点),C找到一个位置10点
  3. 那么后面数据在3-7范围里面,就放到A节点上,7-10的就放到B节点上面。
  4. 如果其中一个挂掉了,就会将这些数据分到前一个节点上
  5. 优化:每一个节点又同时分成多个,这样避免挂掉之后,数据大量进入。 比如A节点改成369、B节点147

hash slot

  1. 可以看成一个hashmap,有16384个桶
  2. 每个节点负责 16384/节点总数 个桶
  3. 数据进来的时候,会通过 CRC16算法对16384取余,分配到不同的节点去

维护集群元数据

CAP

一致性、可用性、分区容错

集中式存储(基于zookeeper)

  1. 将所有的元数据存在走zookeeper中,有问题能直接反馈
  2. 缺点:集中、元数据存储压力

gossip协议

  1. 互相传播、将更新陆续传到各个节点
  2. 所有节点都持有一份元数据,数据变更,会慢慢传播到各个节点
  3. 一次最多发给5个节点。5个没有通信的节点
  4. 缺点:延时、滞后
通信端口

原来的端口加上10000

几个指令
ping
  1. 发送自己维护的元数据给其他节点
  2. 一次最多选择5个节点(最久没有通信的)
  3. 如果某个节点太久没有通信,则也会立即发给他
pong

收到ping指令后返回的数据,包含自身的状态信息

fail

发现某个节点挂掉的话,就发送这个指令到其他节点

你可能感兴趣的:(Redis的cluster集群,redis,cluster,哈希算法,redis,架构)