前言:
任务调度框架,无疑是非常常见的,例如爬虫,大数据处理(包括分表分库),作为平台和基础能力,其影响力不差于RPC,MetaQ等,本文主要就是介绍在任务调度框架设计方面的一些理念
概念:
Job:Job属于一类任务,本质是任务的定义,调度的最小单位;
Task:Task属于一次Job的执行;
子任务:子任务也是Job,由父Job在执行的时候,衍生出来的,编程术语称之为map出来的,子任务一般会即使执行(也应该支持自定义);
JobDetail:用作存储Job的信息,定义Job的类型,包括jobParams,最好用字符串,不必太复杂化;
Trigger:触发器,触发Job,把触发器和JobDetail交给调度器,即可执行;
Scheduler:调度器,一个容器,以上概念都归它管理;
协作模型:
根据任务的需要,Job的实现方式可以有不同,
- 全单机执行
- 并行执行
- 广播执行
- 网格执行
调度方式:
- Cron
- Fixed delay
- Fixed rate
MapReduce:
处理分布式任务,有了map,自然也会有reduce的需求;
、、、、、、写文章真难,太晚了,下次有时间补上细节