面试题答案
一键面试性能挑战
- 协调成本高:Saga需要多个服务间频繁交互,如每次事务步骤都要进行网络通信确认,增加整体响应时间。
- 事务处理慢:每个子事务依次执行,若有多个复杂子事务,整个Saga事务处理时间长,影响系统吞吐量。
一致性挑战
- 部分成功问题:若某个子事务失败,已成功的子事务回滚可能不彻底,导致数据不一致。
- 并发冲突:多个Saga事务并发执行,对共享资源操作可能产生冲突,破坏数据一致性。
优化策略
- 异步执行子事务
- 原理:将部分可异步执行的子事务放到消息队列中,减少同步等待时间,提高系统并发处理能力。例如,商品下单后,库存扣减和积分增加可异步处理。
- 实施难点:消息可靠性保证,需处理消息丢失、重复消费等问题;异步执行导致事务监控和故障恢复更复杂。
- 使用补偿日志
- 原理:记录每个子事务执行情况及补偿操作,若出现问题,根据日志进行补偿操作,确保数据一致性。如订单支付成功但发货失败,可根据日志进行退款补偿。
- 实施难点:日志管理复杂,需保证日志准确性、完整性;补偿操作的幂等性设计,防止多次补偿导致数据错误。