
1) 【一句话结论】在军工电子系统中,需通过分布式事务(如两阶段提交2PC或TCC模式)结合协调者与参与者协同,借助事务日志与补偿机制,确保数据全局原子性,满足数据不丢失、强一致性及故障回滚的可靠性要求。
2) 【原理/概念讲解】
事务是满足ACID(原子性、一致性、隔离性、持久性)的操作集合。分布式事务因跨多个节点(如数据库、缓存),需协调者(如ZooKeeper、etcd、Seata)管理参与者(各数据源)。核心挑战是保证全局事务的原子性。
3) 【对比与适用场景】
| 方案 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 两阶段提交(2PC) | 协调者发起,参与者被动响应 | 阻塞式,协调者单点,强一致性,但可能阻塞 | 银行核心支付、订单支付(如订单与库存同步) | 协调者故障导致全系统阻塞,参与者预提交可能回滚 |
| TCC模式 | 参与者主动调用预/检查、执行、确认/取消 | 非阻塞,无协调者单点,需幂等 | 轻量级业务、缓存更新、消息队列 | 补偿逻辑复杂,需保证幂等性 |
4) 【示例】
假设订单系统(订单表、库存表),分布式事务处理订单创建与库存扣减(用2PC流程):
伪代码(Seata注解示例):
// 订单服务
@GlobalTransactional
public void createOrder(Order order) {
// 1. 创建订单
orderRepository.save(order);
// 2. 扣减库存
inventoryService.deductInventory(order.getProductId(), order.getQuantity());
}
注解@GlobalTransactional自动处理2PC流程,通过事务日志记录操作,故障时根据日志回滚。
5) 【面试口播版答案】
(约90秒)
“面试官您好,军工电子系统对数据一致性要求极高,需通过分布式事务方案保证数据不丢失和回滚。核心思路是采用两阶段提交(2PC)或TCC模式,通过协调者管理参与者。比如订单与库存的分布式事务,用2PC时,协调者(如Seata)发起准备阶段,订单库和库存库预提交,若都成功则提交,否则回滚。TCC模式中,库存扣减操作先检查余额,再执行扣款,确认后保留,否则取消。这些方案通过事务日志记录操作,故障时根据日志回滚,满足军工系统的可靠性要求,确保数据一致性和事务回滚能力。”
6) 【追问清单】
7) 【常见坑/雷区】