
1) 【一句话结论】
故障排查需遵循“快速定位-数据一致性验证-核心功能恢复-稳定验证”分阶段流程,恢复策略需覆盖主备切换、冷备启动,确保数据一致性与业务连续性。
2) 【原理/概念讲解】
老师口吻:交易系统中的撮合引擎是核心模块,负责订单匹配、成交确认等关键逻辑,好比交通枢纽的“调度中心”。当其宕机时,需按以下流程处理:
mysqlbinlog -r -n -t 123456 binlog.000001回滚特定事务ID。3) 【对比与适用场景】
| 对比维度 | 监控告警机制 | 日志分析流程 |
|---|---|---|
| 定义 | 通过指标(CPU、内存、QPS)触发告警,实时发现服务异常 | 通过日志(如ELK)分析错误堆栈、事务状态,深入定位具体问题 |
| 特性 | 实时性高,能快速响应故障初期(如服务不可用、资源耗尽) | 事后分析,能定位代码缺陷、配置错误等根本原因 |
| 使用场景 | 故障初期快速响应,如服务宕机、资源耗尽 | 故障后深入分析,如排查代码逻辑错误、配置错误 |
| 注意点 | 需设置合理阈值,避免误报(如CPU > 90%才告警) | 日志需结构化(如JSON),便于检索关键信息(如错误代码、事务ID) |
4) 【示例】
假设撮合引擎主节点(节点A)宕机,流程如下:
mysqlbinlog -r -n -t 123456 binlog.000001)。zookeeperCli set /shanghai/securities/matching/leader B),切换后验证节点B的撮合功能(发送测试订单,检查成交结果正常)。mysql -u root -p < backup.sql),验证数据一致性(比较主备节点数据),然后切换主节点为C。def check_matching_engine_status():
cpu_usage = get_cpu_usage("撮合引擎A")
if cpu_usage > 90:
send_alert("撮合引擎A CPU过高,服务不可用")
service_status = check_service_status("撮合引擎A")
if service_status == "DOWN":
send_alert("撮合引擎A服务宕机")
5) 【面试口播版答案】
面试官您好,针对撮合引擎宕机的故障,我的处理流程是:首先通过监控平台(如Prometheus)快速发现告警,确认服务不可用;然后查看日志(如ELK)定位具体原因(如数据库连接超时);接着检查数据库状态,回滚未提交事务(通过binlog回滚);之后切换备用节点(主备切换),验证撮合功能;若备用节点故障,启动冷备节点(从备份恢复数据),最后通过压力测试(如JMeter模拟高并发)验证系统稳定性。整个过程遵循“快速定位-数据验证-核心恢复-稳定验证”的原则,确保数据一致性与业务连续性。
6) 【追问清单】
7) 【常见坑/雷区】