如何防止自动任务执行的时候,用户手动去触发造成的冲突

2019-08-29 19:34:01 +08:00
 sakudie

就像自动扣款的场景,每天定时执行自动扣费任务,偶尔会碰到用户在同一时间去手动缴费,由于扣款业务链路比较长,也没有事务,很容易造成重复扣费,目前处理方法是两边设置一个相同 key 的 redis 锁,执行的时候检测是否存在锁,如果存在说明某个流程开始处理了,另外一个流程就跳过不处理。 请教大家有什么好的处理方式解决这个问题吗 😂

1005 次点击
所在节点    问与答
3 条回复
shoaly
2019-08-29 21:26:46 +08:00
每天到点 关闭用户手动充值功能, 提示系统维护
wingoo
2019-08-29 21:35:23 +08:00
基本是这样处理, 做用户锁, 而不要做自动扣款的大锁
前端展示上也可以做些优化
boob
2019-08-30 12:30:42 +08:00
我先问个,如果用户手动缴费 2 次,如何? 一般思路都是每天缴费成功有个标志,最后扣款前看标志, 不管你自动还是手动,都不会重复扣费

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

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

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

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

© 2021 V2EX