go任务调度11(分布式crontab架构分析)-创新互联
crontab是单机工具
(所有worker都在调度,如果有1000个任务,所有worker都在调用者1000个任务。对于编译型语言来说,排序一个一千万的数组只需要一秒,对于一千一万的调度,无需担心性能)
(相当于完成一个到worker集群的通知,通知它们杀死任务)
(
1.etcd中的任务会实时同步给worker,worker的调度协程会更新内存中维护的任务列表。etcd在内存中会镜像一份和etcd完全一样的任务清单,通过监听机制实现。
2.调度协程会周期性检查所有任务的cron任务表达式,扫描到期任务,到期任务会交给执行协程去执行。
3.同时,调度协程还会监听一个任务控制事件(想要杀死某个任务),收到后,多个协程会强制中断执行中的子进程(shell命令)。
4.执行协程返回结果给调度协程,调度协程可以更新内存中任务状态,当任务调度给执行协程的时候,任务的状态就被更新为执行中了。任务结果返回就将状态改为执行完成。然后将执行结果投递给日志协程。
)
(worker是个集群,每个workder任务清单都是从etcd中全量同步的,所以大家都按照每个任务的调度周期,在同时调度,对于同一个任务,比如每秒执行的任务,所有worker每隔一秒都会去执行这个任务。如果不做并发控制,所有worker会同一时刻全部执行一次这个任务。我们希望一个任务同一时刻只被执行一次,不允许任务并发调度。如何防止并发呢?去etcd中抢锁,大家都要调度,谁抢到谁调度,其他人等待下次过期,下次接着抢,抢到我就执行。这种很依赖各个时间节点的同步,校时不同会让有些机器老是先抢到锁。我们需要时间校准保障一致,还可以做些小策略,比如随机睡眠n-m毫秒)
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
文章名称:go任务调度11(分布式crontab架构分析)-创新互联
文章转载:http://scyanting.com/article/djcsph.html