后端异步状态问题

82 天前
 justdoit123

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

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

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

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

想要改成这样:

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

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

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

不知道这样做对不对?

831 次点击
所在节点   科技
4 条回复
Ayanokouji
82 天前
消息队列+幂等?
jsonparse
82 天前
已有业务 用 redis 锁控制够用了
Zhuzhuchenyan
82 天前
就是属于消息队列、异步任务编排这些话题的内容

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

任务简单的时候用 redis 自己手动实现是完全没问题的。
justdoit123
82 天前
@Zhuzhuchenyan 好,感谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1066082

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX