redis 高可用(集群模式)

集群模式原理

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

槽位定位

槽位定位算法

CRC16(key) mod 2^14

跳转重定位 当客户端向任意节点访问获取数据时,若发现key所在槽位并不归属当前节点,它会向客户端发送跳转指令携带目标操作节点。客户端会向目标操作节点访问数据,并刷新本地槽位映射表缓存。

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 则立刻发送

经验分享 程序员 微信小程序 职场和发展