▶考察目的
这个问题考察难度并不大,工作3年以上都会遇到,只是不同的工作年限对于面试的深度会有差异。
考察这个问题的目的无非就是看看求职者是否了解Redis的集群,以及是否有自己去搭建过Redis集群。
对于工作2年的同学来说,回答不需要太深入,但是5年以上的同学,会以这个问题作为切入口去深度考察求职者对Redis集群和哨兵机制的底层原理。
▶问题分析
Redis集群有几种实现方式,一个是主从集群、一个是Redis Cluster。
主从集群,就是在Redis集中包括一个Master节点和多个Slave节点。
Master负责数据的读写,Slave节点负责数据的读取。
Master上收到的数据变更,会同步到Slave节点上实现数据的同步。
通过这种架构实现可以Redis的读写分离,提升数据的查询性能。
Redis主从集群不提供容错和恢复功能,一旦Master节点挂了,不会自动选出新的Master,导致后续客户端所有写请求直接失败。
所以Redis提供了哨兵机制,专门用来监听Redis主从集群提供故障的自动处理能力。
哨兵会监控Redis主从节点的状态,当Master节点出现故障,会自动从剩余的Slave节点中选一个新的Master。