- 正向补偿:应用流程向前推进,最终从一个状态变化为另一个状态;
- 逆向补偿:应用流程向后推进,将所有操作进行回滚,使其恢复到前一状态;
3. 业务一致性保障机制前人已经为我们提供足够多的工具,如何更好的使用这些工具 , 就需要对业务场景进行深入分析 。
业务系统一致性是指在多个系统或不同的环境中,不同用户或系统操作所产生的数据在逻辑上是相同的 。它的本质是确保在任何情况下 , 不同系统或用户产生的数据都是一致的,并且在系统中的所有操作都是以预期方式进行的 。业务系统一致性是确保数据的准确性和可靠性的关键因素,可以有效地避免数据错误和丢失,提高业务系统的可用性和可靠性,保障企业的持续发展 。\如下图所示:
文章插图
图片
如果可重试性事务间不存在依赖关系,可以并行执行,具体如下:
文章插图
图片
在一个复杂的业务流程中,可以将事务分为三类:
- 关键性事务:指的是系统中最为关键的一步操作,如果事务提交失败,则进行回滚操作;如果事务提交成功,则成为事实,无法回滚;
- 可补偿性事务:指的是在关键性事务之前的事务操作,通常提供正向和逆向两组操作,正向操作失败或关键事务失败 , 在会逆序调用逆向接口,以对操作进行回滚;
- 可重试性事务:指的是关键事务之后的事务操作,关键事务提交成功,则事实已定 , 下游通过重试的方式完成事务;
文章插图
图片
- 关键性事务:就是下单操作,将用户的信息保存到数据库 。保存失败,对已经操作的库存和优惠券进行逆向恢复;保存成功,通过重试保障下游事务的一致性;
- 可补偿性事务:指的是优惠券和库存服务提供的正向和逆向操作,正向操作可以通过逆向操作进行恢复;
- 可重试性事务:指的是添加自动取消任务、保存操作日志、发送 MQ,当订单数据保存成功后,这三者通过不断重试保障最终都会执行;
从关键性事务的使用场景出发,最适合的工具便是关系数据库的事务保障 。
文章插图
图片
- 事务提交成功:整个流程向前补偿,推动可重试性事务通过不断重试最终完成业务逻辑;
- 事务提交失败:触发整个流程回滚 , 逆序调用可补偿事务的回滚接口恢复状态;
对于可补偿事务,需要提供两组操作:
- 正向:标准的业务操作,比如库存锁定
- 逆向:针对正向操作的恢复操作,比如释放锁定库存
推荐阅读
- 当44岁的胡杏儿和张雨绮娜然同框,才彻底明白,港女的保养真绝
- 疯马秀“审判”后续:张嘉倪,杨颖或遭软封杀,Lisa彻底凉凉!
- 首位90后女主播登《新闻联播》,看完她的履历后,我彻底服了!
- 谢贤公开与张柏芝关系,遮羞布彻底被揭,谢霆锋得知后连忙澄清
- 安卓怎么彻底删除微信聊天记录 怎么彻底删除微信聊天记录
- 终于处罚了!Lisa被封号,杨颖张嘉倪被禁言,星光之路彻底是凉凉了
- 一个“假向太”,彻底揭开了向家的豪门真相,难怪郭碧婷会退圈!
- Lisa风波迎来大结局,3女星彻底沦为弃子,LV3公子成唯一聪明人
- 家里有老鼠怎么能彻底消灭 老鼠对粘鼠板有记忆吗
- baby彻底凉凉?被曝向黄晓明求救,准备跑路出国抛售5亿豪宅?