1. 基础认识
主节点:负责写
数据和同步数据
到从节点。
从节点:负责读
数据
实现读写分离提高性能。
rdb文件: 数据文件
命令列表文件:主节点生成rdb文件期间,又收到的数据修改命令。从节点收到rdb文件后还要执行命令列表文件中的命令,使得数据保持一致。
复制偏移量:最开始从0开始,随着数据复制和同步,从节点也更新这个复制偏移量,这样就算从节点临时掉线了,在恢复连接之后和也能知道缺失哪些数据了。
哨兵Sentinel:专门搞一个节点出来当管理员,不用管数据读写,只负责统筹协调,主节点要是挂了,就从从节点里选一个出来当主节点。这个管理员就叫哨兵。可以设置多个哨兵,一个哨兵挂掉还有其他哨兵顶上。
2. 新主节点选择标准
-
给不同节点设置优先级,硬件配置高的优先级别高。
-
优先选择跟主节点断开连接最短的节点,它的数据会更新一些。
-
复制偏移量越大的数据越全。
3. 哨兵的工作原理
-
每隔10秒钟使用
INFO
命令向主节点询问当前的情况。 -
每隔1秒
PING
各节点(包括哨兵),确定节点是否还存活。哨兵发现主节点掉线之后首先判定为主观下线
,然后由多个哨兵进行判定,如果有N个哨兵都判定主节点下线了,则认定为客观下线
。N可以自定义。 -
当发现主节点下线之后,进行故障转移,故障转移过程如下:
- 选一个新的主节点。
- 让其他从节点从新的主节点同步数据。
- 把原来旧的主节点改成从节点。
4. 参考资料
-
bilibili【趣话Redis第三弹】:BV1MW4y187AH
-
Redis集群:Sentinel哨兵模式(详细图解):http://c.biancheng.net/redis/sentinel-model.html