开发者社区> 问答> 正文

分布式任务调度系统怎么保证幂等性?? 400 报错

分布式任务调度系统怎么保证幂等性?? 400 报错

业务需求是通过分布式任务调度系统执行一个并发任务,任务分发给多个机器,每个机器并发执行http请求,然后请求结果插入到数据库。插入服务使用的是rpc,因此不能再数据库层次做幂等性保证了。怎么在任务出现重复分发的情况下保证只插入一次?

展开
收起
爱吃鱼的程序员 2020-06-03 15:12:26 883 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    首先,保证一个任务同时只有一台机器在执行。

    任务执行时,首先清理库中已存在数据,然后向库中插入数据。或者根据已存在数据,增量插入数据。

    ######回复 @cassia_ : 之前我们是把任务记录存到数据库中,记录任务状态。每个任务开始、完成的时候会更新任务状态,通过数据库中的任务状态判断是否需要重发。######问题就是任务ack可能丢失导致任务重发,不能保证同一任务只有一台机器执行######

    先查再插……查的时候小心点,用悲观锁。看到妹子也这么干

    ######

    生成事件 id;记录每台机器事件 ID 的结果如果有一个不能成功,全部撤销。

    2020-06-03 16:51:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于社区的分布式 风险感知模型 立即下载
如何利用Redisson分布式化传统Web项目 立即下载
FLASH:大规模分布式图计算引擎及应用 立即下载