一、整体思路
1、无状态master集群
2、Etcd任务存储
3、可扩展woker集群
4、web控制台
二、架构分解
1、利用etcd同步全量任务列表到所有worker节点
2、每个worker独立调度全量任务,无需与master产生直接rpc
3、各个worker利用分布式锁抢占,解决并发调度相同任务的问题
三、Master详细设计
1、任务管理http接口:新建、修改、查看、删除任务
2、任务日志http接口:查看任务执行历史日志
3、任务控制http接口:提供强制结束任务的接口
4、实现web管理界面:基于jquery+bootstrap的web控制台,前后端分离
四、Worker详细设计
1、任务同步:监听etcd中/cron/jobs/目录变化
2、任务调度:基于cron表达式计算,触发过期任务
3、任务执行:协程池并发执行多任务,基于etcd分布式锁抢占
4、日志保存:捕获任务执行输出,保存到MongoDB