分布式任务调度系统怎么保证幂等性?? 400 报错
业务需求是通过分布式任务调度系统执行一个并发任务,任务分发给多个机器,每个机器并发执行http请求,然后请求结果插入到数据库。插入服务使用的是rpc,因此不能再数据库层次做幂等性保证了。怎么在任务出现重复分发的情况下保证只插入一次?
首先,保证一个任务同时只有一台机器在执行。
任务执行时,首先清理库中已存在数据,然后向库中插入数据。或者根据已存在数据,增量插入数据。
######回复 @cassia_ : 之前我们是把任务记录存到数据库中,记录任务状态。每个任务开始、完成的时候会更新任务状态,通过数据库中的任务状态判断是否需要重发。######问题就是任务ack可能丢失导致任务重发,不能保证同一任务只有一台机器执行######先查再插……查的时候小心点,用悲观锁。看到妹子也这么干
######生成事件 id;记录每台机器事件 ID 的结果如果有一个不能成功,全部撤销。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。