elastic-job的并发问题和处理

elasticjob数据要自己分片,如果多个分片执行同一个任务要注意幂等性

举一个简单的例子:
如果让两个分片执行同一个任务:如先删除后添加,很容易就出现有些类似不可重复读的问题:会发现插入两条数据
这是由于两台机器同时触发任务,造成的并发问题!!!

处理方式:
这里当然可以用分片处理,但是有时候我们需要在某个分片任务完成后去调一次数据解析和处理
这里就推荐分布式监听器(本地监听器,做好幂等,也可以用,但是不太好)
如果执行完毕后分片单独处理
本地监听器
分布式监听器
这里可以使用

  /**
     * 分布式环境中最后一个作业执行后的执行的方法.
     *
     * @param shardingContexts 分片上下文
     */
    public abstract void doAfterJobExecutedAtLastCompleted(ShardingContexts shardingContexts);

参考
https://blog.csdn.net/elim168/article/details/79052030
https://github.com/yinjihuan/elastic-job-spring-boot-starter

你可能感兴趣的:(并发,分布式)