设计 | 未验证 | 限时独活worker

INDEX

title 限时独活worker

participant 定时任务
participant node-1
participant node-2
participant worker-1
participant worker-2
participant 存活标记
participant 存活锁
participant 业务锁
participant DB
 
定时任务->定时任务: 启动
定时任务->node-1: 唤醒
node-1->存活标记: 注册存活标记为自己(100%成功),标记是worker中的一个final值
node-1->定时任务: 标记修改的状态 == 定时任务执行的状态
 
worker-1->存活锁: 存活标记是自己,尝试加存活锁,否则尝试解自己
worker-1->worker-1: 存活锁不是自己,直接休眠
worker-1->DB: 获取需要处理的数据
worker-1->业务锁: 尝试加锁
worker-1->worker-1: 加锁失败,放弃本轮处理,睡眠
worker-1->worker-1: 处理业务
worker-1->存活锁: 临近下一轮定时,解存活锁
 
定时任务->定时任务: 启动
定时任务->node-2: 唤醒
node-2->存活标记: 注册存活标记为自己(100%成功)
node-2->定时任务: 标记修改的状态 == 定时任务执行的状态
worker-2->存活锁: 存活标记是自己,尝试加存活锁,否则尝试解自己

设计 | 未验证 | 限时独活worker_第1张图片

你可能感兴趣的:(java设计,java,算法,jvm)