面试题答案
一键面试合理设置客观下线状态阈值需考虑的因素
- 实例的负载情况:若Redis实例处理高并发读写操作,负载高,可能需适当提高阈值,避免因短暂波动致误判。比如在电商大促期间,Redis实例读写请求剧增,此时需更高阈值。
- 网络状况:网络不稳定、延迟高或存在丢包现象,应提高阈值,防止因网络问题频繁判定下线。如在网络波动较大的老旧网络环境中。
- Sentinel节点数量:Sentinel节点多,对故障判断更准确,阈值可适当降低;节点少则需提高阈值,防止误判。例如3个Sentinel节点时阈值可相对5个节点时高些。
- 业务对Redis可用性的要求:对可用性要求极高的业务,如实时交易系统,为快速故障转移,阈值可适当降低;对可用性要求相对低的业务,如某些日志记录场景,可适当提高阈值。
阈值设置过高的影响
- 故障发现延迟:Redis实例实际已故障,但因阈值高,Sentinel未及时判定为客观下线,导致故障转移延迟,业务长时间受影响。如电商支付环节使用的Redis实例故障,却未及时转移,影响支付流程。
- 数据丢失风险增加:延迟故障转移,期间若有数据写入故障实例,可能造成数据丢失。例如消息队列使用的Redis,故障未及时转移,新消息写入故障实例而丢失。
阈值设置过低的影响
- 误判频繁:网络波动、短暂负载高等非故障原因易使实例被误判为客观下线,触发不必要的故障转移。如网络瞬间抖动,Redis实例被误判下线,进行故障转移,影响业务正常运行。
- 系统资源浪费:频繁误判触发故障转移,Sentinel需执行选主等操作,消耗系统资源,包括网络带宽、CPU等。多次不必要的主节点切换,增加系统负担。