redis 高可用(集群模式)

集群模式原理

在3.0版本以后,虽然主从复制和哨兵模式保障了高可用,读写分离,通过从节点扩展了读并发能力,但是写能力和存储能力无法进行扩展。 海量数据需要将数据分片存储,每个节点负责存储整体数据的一个子集。集群至少三主三从。
redis 高可用(集群模式)_第1张图片

槽位定位

槽位定位算法

   CRC16(key) mod 2^14

跳转重定位
当客户端向任意节点访问获取数据时,若发现key所在槽位并不归属当前节点,它会向客户端发送跳转指令携带目标操作节点。客户端会向目标操作节点访问数据,并刷新本地槽位映射表缓存。
redis 高可用(集群模式)_第2张图片

hash槽 2^14

为什么虚拟槽个数是16384呢?
https://github.com/antirez/redis/issues/2576
redis集群内两个节点握手成功meet后,会定时每秒发送ping/pong消息交换数据信息。交换什么数据、频率、大小?
频率:
1)每秒中随机取出5个节点,选出最久没有通信的发送ping消息
2)每100毫秒(1秒10次)都会扫描本地节点列表,如果发现节点最近一次接受pong消息的时间大于cluster-node-timeout/2 则立刻发送

你可能感兴趣的:(redis,数据库,java)