[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
其他
> 详细
go任务调度11(分布式crontab架构分析)
时间:
2019-04-21 16:58:38
阅读:
213
评论:
0
收藏:
0
[点我收藏+]
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毫秒)
go任务调度11(分布式crontab架构分析)
原文:https://blog.51cto.com/5660061/2382262
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!