
1) 【一句话结论】:通过数据库主从切换、服务熔断、重试与降级等多级容错机制,结合实时监控与自动化告警,实现故障快速检测与恢复,确保系统7x24高可用稳定运行。
2) 【原理/概念讲解】:高可用系统设计核心是“容错+恢复”,关键机制包括:
3) 【对比与适用场景】:
| 对比项 | 数据库主从切换(故障切换) | 服务熔断(故障隔离) |
|---|---|---|
| 定义 | 主库故障时从库接管,恢复后切回主 | 超时/失败率过高时断开调用,后续重试 |
| 特性 | 侧重数据一致性(同步主从)或可用性(异步) | 侧重系统稳定性,避免级联故障 |
| 使用场景 | 数据库高可用,主故障时快速恢复 | 服务间调用,高并发下防止雪崩 |
| 注意点 | 同步主从延迟高,异步可能数据不一致 | 阈值设置需平衡可用性与可靠性 |
4) 【示例】:假设某次数据库连接中断案例。系统设计:数据库同步主从(延迟约1秒),服务调用时设置熔断(超时500ms,失败率阈值50%)。故障过程:某时刻数据库主库连接中断,系统通过心跳检测到主库不可用,从库1秒内切换为主库,同时服务熔断器检测到调用数据库超时,断开调用,返回缓存数据。恢复:主库故障修复后,从库切回从,服务熔断器逐渐恢复调用(半开状态,每秒放行1%请求)。
伪代码(故障检测与切换):
def check_db_connection():
try:
connect_master()
return "master_ok"
except Exception as e:
connect_slave()
return "slave_ok"
def switch_master():
if check_db_connection() == "slave_ok":
update_config(master_ip="slave_ip")
notify_services()
return True
return False
5) 【面试口播版答案】:我参与过的高可用系统设计,核心是通过数据库主从切换、服务熔断、重试与降级机制,结合实时监控,确保7x24稳定。比如某次数据库主库连接中断,系统通过心跳检测到主库不可用,从库1秒内切换为主库,同时服务熔断器断开调用,返回缓存数据,故障后1分钟恢复,未影响业务。具体来说,数据库采用同步主从(延迟1秒),服务调用时设置熔断(超时500ms,失败率50%),监控指标包括数据库延迟、调用成功率,告警触发后自动切换,保证系统稳定。
6) 【追问清单】:
7) 【常见坑/雷区】: