后端异步状态问题

justdoit123 · 2024-8-19 12:23:43 · 65 次点击
遇到一个异步状态问题,想请教后端大佬,这种问题专业术语叫什么?学习的方向是什么?

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

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

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

想要改成这样:

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

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

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

不知道这样做对不对?
举报· 65 次点击
登录 注册 站外分享
3 条回复  
Ayanokouji 小成 2024-8-19 13:13:06
消息队列+幂等?
jsonparse 小成 2024-8-19 13:25:59
已有业务  用 redis 锁控制够用了
Zhuzhuchenyan 小成 2024-8-19 13:47:53
就是属于消息队列、异步任务编排这些话题的内容

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

任务简单的时候用 redis 自己手动实现是完全没问题的。
返回顶部