V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sakudie
V2EX  ›  问与答

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

  •  
  •   sakudie · 2019-08-29 19:34:01 +08:00 · 1008 次点击
    这是一个创建于 1916 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    3 条回复    2019-08-30 12:30:42 +08:00
    shoaly
        1
    shoaly  
       2019-08-29 21:26:46 +08:00
    每天到点 关闭用户手动充值功能, 提示系统维护
    wingoo
        2
    wingoo  
       2019-08-29 21:35:23 +08:00
    基本是这样处理, 做用户锁, 而不要做自动扣款的大锁
    前端展示上也可以做些优化
    boob
        3
    boob  
       2019-08-30 12:30:42 +08:00 via Android
    我先问个,如果用户手动缴费 2 次,如何? 一般思路都是每天缴费成功有个标志,最后扣款前看标志, 不管你自动还是手动,都不会重复扣费
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3339 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 00:41 · PVG 08:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.