
1) 【一句话结论】
为满足港口核心系统99.99%高可用需求,设计“跨城市主备容灾中心(大连-沈阳,OTN专线延迟<5ms)+Active-Standby主备切换+核心数据实时同步(数据库binlog,延迟<1秒)+非核心异步备份(Kafka,延迟容忍1分钟)+多维度故障检测(心跳+日志+性能指标)”,确保故障时秒级切换,数据一致,业务无中断。
2) 【原理/概念讲解】
老师讲解:高可用容灾的核心是“异地部署+实时同步+自动化切换”。类比:港口的“双码头”,主码头(Active)正常运营,备码头(Standby)通过专线实时同步数据,若主码头因地震等灾难停运,备码头立即接管,保证货物装卸不中断。
3) 【对比与适用场景】
| 方案类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 主备切换(Active-Standby) | 主节点提供服务,备节点监听 | 主节点故障秒级切换,备节点无负载 | 对切换时间要求极高(如金融、港口核心系统) | 备节点需与主节点数据一致,避免切换后数据不一致 |
| 同步数据备份 | 数据实时同步到备节点 | 数据一致性高,故障恢复无丢失 | 对数据一致性要求极高(如交易系统) | 性能开销大,可能影响主节点性能 |
| 异步数据备份 | 数据延迟同步(如日志复制) | 性能高,存在数据丢失风险 | 对数据一致性容忍度高(如日志系统) | 需设置数据丢失容忍阈值(如1分钟) |
4) 【示例】
以数据库主备切换为例(伪代码):
# 故障检测逻辑(多维度)
def check_master_health():
# 心跳检测
response = send_heartbeat(master_ip, master_port)
if not response or response['status'] == 'down':
return False
# 日志监控(检查异常SQL)
log_errors = check_log_for_errors()
if log_errors:
return False
# 性能指标(CPU > 90%)
if check_performance_metrics():
return False
return True
# 主备切换流程
def failover():
if not check_master_health():
if check_standby_health():
switch_to_standby()
log("主节点故障,切换到备节点")
else:
log("主节点故障,备节点也故障,告警")
else:
log("主节点正常")
# 数据同步(核心数据同步,binlog)
def sync_core_data():
data = fetch_data_from_master()
write_data_to_standby(data)
# 数据一致性校验(关键表数据量)
if verify_data_consistency(order_table_data):
log("核心数据同步一致")
else:
log("数据不一致,触发告警")
# 跨城容灾中心网络延迟测试(假设大连-沈阳OTN延迟3ms)
def test_network_latency():
latency = measure_latency(master_ip, standby_ip)
if latency > 5: # 超过5ms则告警
log("网络延迟过高,切换风险")
# 实际故障处理流程(主节点硬件故障)
步骤1:监控系统0.5秒内检测主节点心跳超时(连续3次),触发告警。
步骤2:自动化脚本1秒内完成切换,备节点接管服务(网络延迟3ms,切换时间≤1秒)。
步骤3:切换后,通过校验订单表数据量(与主节点一致),确保数据一致。
步骤4:业务端调用接口,返回数据正确,无中断。
5) 【面试口播版答案】
“面试官您好,针对港口核心系统99.99%高可用需求,我设计的容灾方案核心是‘跨城市主备容灾中心(大连-沈阳,OTN专线延迟<5ms)+Active-Standby主备切换+核心数据实时同步(数据库binlog,延迟<1秒)+非核心异步备份(Kafka,延迟容忍1分钟)’。首先,生产中心在大连,容灾中心在沈阳,通过OTN专线连接,确保数据同步和切换效率。主备切换采用心跳检测,每秒1次,若主节点连续3次超时,判定故障并切换。核心交易数据用数据库binlog实时同步,延迟小于1秒;非核心日志用Kafka异步备份,容忍1分钟数据丢失。故障检测包括心跳、日志(异常SQL)和性能(CPU>90%),当检测到主节点故障时,自动化脚本1秒内切换到备节点。切换后,通过校验订单表数据量与主节点一致,确保数据一致。这样能保证系统满足99.99%高可用要求。”
6) 【追问清单】
7) 【常见坑/雷区】