分布式调度分片策略和异常情况分析

整体分析的思维导图

分片策略

方案一

  1. 根据调度中心传入的执行总数,每片执行器查询执行总数个结果集
  2. 遍历结果集
  3. 对主键采用hashcode求值,并对hashcode的绝对值作求余片数
  4. 余数等于当前片数时,获取当前数据行分布式锁
  5. 执行任务
  6. 解锁

方案二

  1. 根据调度中心传入的每片执行数,计算执行器集群执行总数,第一片执行器查第一页,第二片执行器查第二页…
  2. 每片执行器遍历需要执行的结果集
  3. 获取当前数据行分布式锁
  4. 执行任务
  5. 解锁

异常情况

上次循环未完成,本次循环包含上次待执行数据?

在获取当前数据行分布式锁的时,获取的一方才有执行权限,未能获取锁的一方跳过本次执行,进而执行下一行

上次循环执行报错中断,本次循环如何分配?

每次获取数据时,均是查询未执行状态的数据,所以会把未执行的数据重新执行

原本有3台执行器,突然宕机1台剩下2台,如何分配?

  • 方案一

对数据集每行主键求余的除数为当前存货执行器的片数,是动态根据存活的执行计算的,如果剩2台机器的时候,总数会对2求余,每次执行总量不会改变

  • 方案二

对数据集分页查询的页数,是动态根据存活的执行计算的,如果剩2台机器的时候,则分2页,每片执行量不变,总执行量减少单页数量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值