高可用是分布式系统的基础、保障系统可靠性
Redis如何实现高可用
答:Redis数据持久化+Redis主从复制+哨兵机制(监控、通知、自动故障转移)+keepalived(自动重启)
数据持久化保证了数据不丢失;Redis主从复制将数据完整复制在多个节点,当主节点宕机时,从从节点中选出新的主节点,保证服务不中断;哨兵模式用来监控 Redis主从复制,提供了自动故障转移功能。
(1)Redis数据持久化:系统宕机或重启后,保证数据不会丢失
(2)Redis主从复制:将数据完整复制在多个节点,当主节点宕机时,从从节点中选出新的主节点,保证服务不中断。缺点是主节点宕机,需要人工手动恢复系统
(3)哨兵机制sentinel:监控Redis主从节点,提供了自动故障转移功能。当主节点宕机时,自动从从节点中选出新的主节点,保证服务不中断。
(4)keepalived自动重启:某一节点宕机后,实现自动重启
为什么需要哨兵机制:Redis主从复制下,主节点宕机时,需要人工手动恢复系统,哨兵机制可以自动从从节点中选出新的主节点
(5)数据持久化两种方式
1-RDB(Redis DataBase快照方式):将某一个时刻的内存数据,以二进制的方式写入磁盘。
2-AOF(Append Only File文件追加方式):将所有操作命令,以文本的形式追加到文件中
3-RDB以二进制存储,因此占用的空间更小,重启恢复速度快,但可读性低
4-AOF不是以二进制存储的,因此占用空间更大,重启恢复能力速度慢,但可读性高。
AOF存储频率更高,因此丢失数据的风险就更低
5-混合持久化:使用 RDB + AOF 两种格式来进行数据持久化,开始的数据以RDB的格式进行存储、占用少量的空间,之后的命令会以AOF的方式进行数据追加,降低数据丢失的风险
(6)主从复制两种模式(都是一主多从)
1-主从模式:一个主节点和多个一级从节点(只有一个主)
2-从从模式:一级从节点下面还可以拥有更多的从节点(只有一个主)
3-主从模式实现了Redis的高可用:当主节点宕机时,把从节点提升为主节点,保证服务不中断
4-主从模式实现数据的读写分离:主节点进行写操作、写的同时自动将数据同步到从节点,从节点进行读操作,减轻了 Redis 主节点的运行压力、提高了Redis的运行速度
(7)哨兵机制
1-功能:监控Redis主从节点,提供了自动故障转移的功能。当主节点宕机时,自动从从节点中选出新的主节点,保证服务不中断
2-集群监控:负责监控主节点master 和 从节点slave 进程是否正常工作。
3-消息通知:如果某个节点有故障,那么哨兵负责发送消息作为报警通知给管理员。
4-故障转移:如果主节点master挂掉了,会自动转移到从节点slave上。
5-原理:每个哨兵会以每秒钟 1 次的频率,向已知的主服务器和从服务器,发送一个 ping命令。如果最后一次有效回复 ping命令的时间,超过了配置的最大下线时间(Down-After-Milliseconds)时,默认是 30s,那么这个实例会被哨兵标记为主观下线。如果一个主服务器被标记为主观下线,那么正在监视这个主服务器的所有哨兵节点,要以每秒 1 次的频率确认主服务器是否进入了主观下线的状态。如果有足够数量(quorum 配置值)的哨兵证实该主服务器为主观下线,那么这个主服务器被标记为客观下线。此时所有的哨兵会按照规则(协商)自动选出新的主节点服务器,并自动完成主服务器的自动切换功能,而整个过程都是无须人工干预的。
Redis是如何实现高可用的?https://blog.csdn.net/u011168837/article/details/110673662
redis如何实现高可用【主从复制、哨兵机制】:https://blog.csdn.net/itcats_cn/article/details/82428716
如何保证 redis的高并发和高可用:https://blog.csdn.net/zero__007/article/details/86564520