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

后端异步状态问题

  •  
  •   justdoit123 · 106 天前 · 904 次点击
    这是一个创建于 106 天前的主题,其中的信息可能已经有所发展或是发生改变。

    遇到一个异步状态问题,想请教后端大佬,这种问题专业术语叫什么?学习的方向是什么?

    目前在开发一个与现金相关的业务。因为每一个步骤都要跟第三方系统交互,所以每个步骤都比较重。其中有一个流程步骤多,所以用户体验很差。

    这个流程的每个步骤并非完全是需要串行的进行。所以思考之后,准备把一些耗时的、可并行的步骤放到了异步队列里执行,客户端无需等待这些异步任务完成即可返回。比如,一开始串行时的流程是这样的:

    A -> B1 -> B2 -> B3 -> C
    

    想要改成这样:

    A -> B1 (B2, B3 进入异步) -> C
    

    B1, B2, B3 都可能触发多次。在进行步骤 C 的时候,如果前置状态没完成则需要等待。我能想到的是用 Redis 锁来实现这个功能。自己搜索学习一番后,感觉需要这么做:

    1. 三个分布式锁分别锁住 B1, B2, B3 。这样每个步骤自己触发多次时,可以保证顺序执行。
    2. 步骤 C 要等待这三个锁都释放后,再查询验证状态,从而确定步骤 C 是否可以继续进行。

    不知道这样做对不对?

    4 条回复    2024-08-19 13:50:36 +08:00
    Ayanokouji
        1
    Ayanokouji  
       106 天前
    消息队列+幂等?
    jsonparse
        2
    jsonparse  
       106 天前
    已有业务 用 redis 锁控制够用了
    Zhuzhuchenyan
        3
    Zhuzhuchenyan  
       106 天前   ❤️ 1
    就是属于消息队列、异步任务编排这些话题的内容

    等你任务更复杂、依赖更多子项的时候可以考虑把整个东西抽象成一个异步任务编排的子系统进行管理,这个业内基于不同消息队列有不同的解决方案,可以搜索下。

    任务简单的时候用 redis 自己手动实现是完全没问题的。
    justdoit123
        4
    justdoit123  
    OP
       106 天前
    @Zhuzhuchenyan 好,感谢~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6043 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 06:19 · PVG 14:19 · LAX 22:19 · JFK 01:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.