面试题答案
一键面试最终一致性概念
最终一致性是分布式系统的一种一致性模型。在分布式环境中,由于数据的副本分布在不同节点,当数据发生更新时,系统不会立即让所有副本达到一致状态。但经过一段时间后,在没有新的更新操作干扰下,所有副本数据最终会达到一致。它允许系统在数据更新后短期内存在不一致情况,适用于对一致性要求相对较低,但对系统可用性和性能要求较高的场景,比如社交平台的点赞数统计,短暂的不一致不影响用户体验,最终点赞数会达到正确的统计。
Saga模式实现最终一致性方式
- 事务分解:将一个大的业务事务拆分成多个小的本地事务。例如在电商下单场景,可拆分为订单创建、库存扣减、账户余额支付等本地事务。
- 顺序执行:按照一定顺序依次执行这些本地事务。如先创建订单,再扣减库存,最后支付。
- 补偿机制:如果某个本地事务执行失败,Saga模式会执行一系列补偿事务来撤销之前已执行成功的本地事务。比如库存扣减成功但支付失败,就执行库存回滚的补偿事务,保证数据的一致性。通过这种对事务的拆分、按序执行以及失败后的补偿机制,Saga模式实现了最终一致性。
常见Saga模式应用场景
- 电商订单系统:下单过程涉及多个服务,如订单服务、库存服务、支付服务等。通过Saga模式,按顺序调用各服务完成下单流程,若支付失败可回滚库存等已执行操作。
- 银行转账:从一个账户扣款并向另一个账户打款,可拆分为两个本地事务,若打款失败,可回滚扣款事务,确保资金一致性。