
1) 【一句话结论】
港口核心系统(TOS业务系统、VTS监控系统)实现99.99%高可用,需采用“主备+多活+集群”混合架构:TOS核心服务用主备架构(秒级切换),VTS监控服务用集群架构(高并发扩展);故障检测通过动态心跳(负载自适应)+状态检查,灾备用异地灾备(异步/同步结合数据同步),确保RTO≤30秒、RPO≤1分钟。
2) 【原理/概念讲解】
老师口吻解释:高可用架构的核心是“故障检测+故障转移”,针对99.99%高可用,通常对应RTO(恢复时间目标)≤30秒(故障后系统恢复时间)、RPO(恢复点目标)≤1分钟(故障时数据丢失)。需明确TOS(业务系统,如订单处理、调度系统)对切换速度和业务连续性要求高,VTS(视频监控系统,如船舶跟踪)对扩展性和监控覆盖要求高。故障检测需考虑系统负载变化(如负载高时心跳间隔缩短,避免漏检),网络抖动时采用多跳心跳或状态检查(如检查服务健康端点)。
3) 【对比与适用场景】
| 架构类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 主备(Active-Standby) | 1主N备,主节点处理请求,备节点热备 | 切换快(秒级),资源利用率低(备节点空闲) | TOS核心服务(如订单系统、调度系统),需快速恢复业务 | 备节点需实时同步数据(如数据库、缓存),避免冷备;需多级备份(主备+冷备) |
| 多活(Active-Active) | 多节点同时处理请求,负载均衡 | 资源利用率高,需解决数据一致性(最终/强一致性) | 高并发非核心业务(如用户登录、报表生成) | 采用分布式事务(如两阶段提交)或消息队列(如Kafka)保证一致性 |
| 集群(Cluster) | 多节点协同,负载均衡,通过集群管理器(如etcd、ZooKeeper)维护状态 | 高并发、可扩展,节点间通信复杂 | VTS监控服务(如视频流处理、船舶跟踪),需高并发扩展 | 需集群管理工具(如Kubernetes),节点故障时重新分配任务 |
4) 【示例】
以TOS主备架构(订单处理系统)为例,心跳检测动态调整:
def handle_order(request):
session = get_session_from_redis(request.user_id) # 从Redis获取会话
process_order(request, session) # 处理订单
update_session_in_redis(request.user_id, session) # 更新会话
return response
def monitor_master():
heartbeat_interval = get_dynamic_interval() # 动态心跳间隔(如负载高时1秒,低时3秒)
while True:
try:
resp = requests.get("http://master:8080/heartbeat", timeout=heartbeat_interval)
if resp.status_code == 200:
time.sleep(heartbeat_interval)
else:
if switch_to_master():
break
except Exception as e:
time.sleep(heartbeat_interval)
def get_dynamic_interval():
load = get_system_load() # 获取系统负载(如CPU、内存)
if load > 80: # 负载高
return 1 # 1秒心跳
else:
return 3 # 3秒心跳
def switch_to_master():
try:
update_load_balancer("standby") # 更新负载均衡器指向备节点
sync_sessions_from_master() # 同步会话状态(从Redis拉取主节点数据)
return True
except Exception as e:
return False
5) 【面试口播版答案】
“港口核心系统(TOS业务系统、VTS监控系统)实现99.99%高可用,核心是混合架构:TOS核心服务用主备(秒级切换),VTS监控服务用集群(高并发扩展)。具体来说,TOS主备架构中,主节点处理请求,备节点热备,通过动态心跳(负载高时1秒一次,低时3秒一次)检测主节点状态,主节点超时后1-2秒切换,保证RTO≤30秒。VTS集群架构多节点处理视频流,通过etcd维护状态,实现负载均衡。灾备用跨城市中心,数据库异步复制+日志校验,灾难时切换,RPO≤1分钟。这样结合故障检测(动态心跳+状态检查)和灾备,满足高可用要求。”
6) 【追问清单】
7) 【常见坑/雷区】