V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
QZFCANBA
V2EX  ›  Java

菜鸟询问一个业务的问题

  •  
  •   QZFCANBA · 2020-07-02 11:15:25 +08:00 · 1836 次点击
    这是一个创建于 1387 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目的话是 springboot+springcloud 支付系统中,微信 /支付宝在支付成功后,会通知到 notifyurl,在回调方法里把支付的结果发条消息到 MQ 里,订单系统去监听,然后修改订单状态。 那么如果要增加用户积分、发货啊这些后续操作的话,是不是需要订单系统发送消息,让积分系统、物流系统去监听来处理各自的业务?或者是有什么其他好的办法么?

    10 条回复    2020-07-02 19:43:18 +08:00
    QZFCANBA
        1
    QZFCANBA  
    OP
       2020-07-02 11:20:15 +08:00
    还是用 feign 在订单系统里,去调用其他的服务来完成,这个方案是不是不大好
    RedBeanIce
        2
    RedBeanIce  
       2020-07-02 13:46:55 +08:00
    分布式调用吗。。。emmmmm
    gz911122
        3
    gz911122  
       2020-07-02 13:50:14 +08:00
    增加用户积分、发货这些服务自己去订阅消息..

    支付系统支付成功后写消息就完事了. 别走远程调用.
    后期需要订阅这个事件的部门 /团队可能会很多, 让他们自己订阅消费去吧..
    kop1989
        4
    kop1989  
       2020-07-02 13:51:27 +08:00
    如果三个微服务分别去监听,如果某个业务出现异常,如何保证数据是平的?
    比如积分系统报错没积上,但是订单系统和物流系统正常响应了。怎么再去修正补录积分?
    QZFCANBA
        5
    QZFCANBA  
    OP
       2020-07-02 14:12:37 +08:00
    @gz911122 直接在支付系统里发吗 ?还是麻烦点,订单系统监听消息后,修改好订单状态,再从订单系统里发消息到 MQ
    QZFCANBA
        6
    QZFCANBA  
    OP
       2020-07-02 14:13:34 +08:00
    @kop1989 这个没考虑到。。。裂开
    gz911122
        7
    gz911122  
       2020-07-02 14:40:28 +08:00
    @QZFCANBA

    直接支付系统发啊.

    细节一些就是, 支付和订单状态流转是一个服务, 这样方便直接本地事务. 规避了一堆分布式事务的破事,.
    具体的订单查询啊 统计, 可以抽取个订单服务出来, 但是这个订单服务是不涉及订单状态流转的.
    gz911122
        8
    gz911122  
       2020-07-02 14:42:18 +08:00
    @QZFCANBA #6

    积分系统消费失败后的补偿是 积分服务的事情, 交易这边就不用操心了..
    该怎么记录失败的, 怎么事后恢复 等等...让积分那边去操心就好了.

    不然每个需要交易数据的, 岂不是都要交易系统操心了. 不太合理.
    QZFCANBA
        9
    QZFCANBA  
    OP
       2020-07-02 14:49:17 +08:00
    @gz911122 懂了 感谢老哥!
    yinzhili
        10
    yinzhili  
       2020-07-02 19:43:18 +08:00
    @kop1989 像这种业务场景,肯定是要每日对账的,可以做补偿冲正什么的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2802 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:39 · PVG 19:39 · LAX 04:39 · JFK 07:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.