cron系统架构图
2023-09-10 15:45:00 0 举报
cron系统架构图
作者其他创作
大纲/内容
\b达到阈值?
有跳过区间的JOB
类型是否为cron_beta
是
从队列中获取所有的JOBlrange schedule:job:list
失败
筛选CRON进程父进程
\bCRON后台手动清除错误
\b更新错误次数
写入\b指定机器队列中
设置超时间:86400秒
executor(任务执行者)
\bCRON后台用户分流运行
是否强制终止
fork 进程proc_wrapper taskid
更新当前task执行信息到DB中taskid = taskidrun_at = iptask_type=cron_beta
否
7个\b终结者
写入指定任务队列lpush cron:job:queue:php-env taskid
\bCRON后台\b手动释放锁
读取本机kill信号队列
\b任务状态==初始?
释放锁
本机是否在执行队列中
结束
\b写入错误日志
获取机器名:gethostname()
\b遍历每一分钟时间结点:$now = time();$now = $now - $now % 60;spop cron:task:at:$now
kill -9
写入tb_schedul_log返回taskid
>阈值 ?
创建tasksadd cron:task:at:unixtime()
成功
递归遍历该进程所有子进程
dispacher(任务分发者)
计算下一次执行时间戳
CRON后台传入kill OR KILL -9信号
\bCRON后台手动\b运行一次
FSDKSERVICE
遍历每一个进程递归查找所有子进程
执行命令
JOB是否停止状态
21个\b执行者
根据jobid获取job信息hgetall schedule:job:{jobid}
7个分发者
NEXT SERVICE
获取当前机器所有进程
旧后台运行
processor(任务处理者)
杀死父进程
\b错误计数+1
指定组中弹出一个taskidlpop cron:job:queue:php-env
kill 没有完成的task
写入该job的hash结构中
杀死进程
monitor(任务\b监控者)
7个处理者
检查当前进程是否存在
\bJOB==分流JOB?
7个监控者
terminater(任务终结者)
kill
尝试给该JOB加排他锁
全局暂停
0 条评论
下一页