MST

星途 面试题库

面试题:如何合理设置Redis Sentinel检查客观下线状态的阈值

在一个包含多个Redis实例和Sentinel节点的生产环境中,应考虑哪些因素来合理设置客观下线状态的阈值?如果阈值设置过高或过低,分别会对系统产生什么影响?
37.8万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

合理设置客观下线状态阈值需考虑的因素

  1. 实例的负载情况:若Redis实例处理高并发读写操作,负载高,可能需适当提高阈值,避免因短暂波动致误判。比如在电商大促期间,Redis实例读写请求剧增,此时需更高阈值。
  2. 网络状况:网络不稳定、延迟高或存在丢包现象,应提高阈值,防止因网络问题频繁判定下线。如在网络波动较大的老旧网络环境中。
  3. Sentinel节点数量:Sentinel节点多,对故障判断更准确,阈值可适当降低;节点少则需提高阈值,防止误判。例如3个Sentinel节点时阈值可相对5个节点时高些。
  4. 业务对Redis可用性的要求:对可用性要求极高的业务,如实时交易系统,为快速故障转移,阈值可适当降低;对可用性要求相对低的业务,如某些日志记录场景,可适当提高阈值。

阈值设置过高的影响

  1. 故障发现延迟:Redis实例实际已故障,但因阈值高,Sentinel未及时判定为客观下线,导致故障转移延迟,业务长时间受影响。如电商支付环节使用的Redis实例故障,却未及时转移,影响支付流程。
  2. 数据丢失风险增加:延迟故障转移,期间若有数据写入故障实例,可能造成数据丢失。例如消息队列使用的Redis,故障未及时转移,新消息写入故障实例而丢失。

阈值设置过低的影响

  1. 误判频繁:网络波动、短暂负载高等非故障原因易使实例被误判为客观下线,触发不必要的故障转移。如网络瞬间抖动,Redis实例被误判下线,进行故障转移,影响业务正常运行。
  2. 系统资源浪费:频繁误判触发故障转移,Sentinel需执行选主等操作,消耗系统资源,包括网络带宽、CPU等。多次不必要的主节点切换,增加系统负担。