开发者社区> 问答> 正文

请问下淘宝是怎么解决 分布式系统中的订单提交以及前端展现的问题

请问下, 在分布式系统中, 有订单模块, 库存模块, 积分模块等, 用户提交订单, 订单系统是以同步的方式调用库存等微服务吗?感觉这样效率会比较低
如果是以异步的方式, 通过mq与其他模块交互, 配合补偿机制来实现分布式事务, 那么前端不能同步得到订单是否创建成功的结果, 该以什么方式友好的展现给用户呢? 感觉可以通过websocket让后端通过事件来通知前端, 但是我在淘宝和京东的订单提交界面并没看到websocket相关的信息, 轮询什么的应该也不可取, 请问下淘宝是以什么样的方式处理这些事务,并让用户看起来觉得像是同步处理完成的呢

展开
收起
若离_ 2018-01-25 18:08:47 3512 0
3 条回答
写回答
取消 提交回答
  • 可以把订单提交操作进行划分成主流程和附属流程, 主流程同步, 附属流程异步。 比如主流程是校验参数,扣减库存, 然后将订单信息落库, 附属流程是:给用户添加积分,主流程执行完毕后就认为订单创建成功,并把结果返回给前端。 而附属流程可通过在订单创建成功后发送mq通知积分系统给用户添加积分, 保证最终一致性即可。

    2019-07-17 21:56:14
    赞同 展开评论 打赏
  • 业务上需要定义,订单创建成功的时候,哪些资源需要扣减,创建订单的时候,预先扣减这些资源,例如库存,积分等,然后创建订单成功,则真正扣减这些资源,否则,需要通过轮询或者其他方式,释放这部分资源,达到最终一致。

    2019-07-17 21:56:14
    赞同 展开评论 打赏
  • 使用消息队列的事务消息实现最终一致

    2019-07-17 21:56:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于社区的分布式 风险感知模型 立即下载
如何利用Redisson分布式化传统Web项目 立即下载
FLASH:大规模分布式图计算引擎及应用 立即下载