V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ppyzzz
V2EX  ›  问与答

看到一个分布式事务贴有惑,欢迎大家一起探讨

  •  1
     
  •   ppyzzz · 2020-10-20 09:03:54 +08:00 · 1325 次点击
    这是一个创建于 1491 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果设计上应该尽量规避分布式事务的话,那么有这样一个问题: 电商下单扣款需要调用用户中心的余额扣减接口进行扣钱,那么如果不做分布式事务的话要怎么弄.或者这个流程的话怎么改变能够实现规避分布式事务达到电商下单的这个结果呢? 如果说接口按照最大粒度划分,意思是在电商模块直接操作用户余额库,使之在一个方法里面解决? 以上是观贴所惑,期待各位老哥一起讨论

    Xbluer
        1
    Xbluer  
       2020-10-20 09:17:17 +08:00
    关键词 saga
    sujin190
        2
    sujin190  
       2020-10-20 11:05:37 +08:00
    这个问题在于,在复杂系统中虽然分布式事务无法避免,但是更多情况应该是独立流程更稳定而不是用分布式事务,而且独立流程耦合度更低、重入更容易、解决异常也会更简单更快

    比如你上面提到电商下单扣款的问题,实际上这是两个流程,第一个是用户下单,第二是用户付款,用户下单应该由订单中心完成,但是余额扣款应该统一和支付中心来封装成统一的支付过程来完成,支付流水单和余额应该在同一个库中,剩下就是微信支付宝怎么走付款流程流程,这个也应该怎么走

    分布式事务一旦出异常很多时候是未知且难以追溯的,要想尽可能降低出异常的概率就要求更稳定环境和协议复杂度,对于相对独立小流程拆解显然可以降低对环境的依赖,出异常可能更高但是出的异常大多都是可预期的,从外部系统补偿解决相对简单很多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5866 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.