120 likes | 538 Views
taobao - pamirs -schedule. 多任务调度系统. pamirs -schedule 的设计目的. 设计目的: 让批量任务或者不断变化的任务,能够被动态的分配到多个主机的 JVM 中,不同的线程组中并行执行。 所有的任务能够被不重复,不遗漏的快速处理 任务处理服务期可以动态的增加和减少 可以通过域来隔离不同的执行环境 可以任意指定调度的时间区间 可以通过 JMX 控制调度服务的创建和停止. pamirs -schedule 的核心概念. TaskType ( 任务类型 ) 是任务调度分配处理的单位,例如:
E N D
taobao-pamirs-schedule 多任务调度系统
pamirs-schedule的设计目的 设计目的: • 让批量任务或者不断变化的任务,能够被动态的分配到多个主机的JVM中,不同的线程组中并行执行。 • 所有的任务能够被不重复,不遗漏的快速处理 • 任务处理服务期可以动态的增加和减少 • 可以通过域来隔离不同的执行环境 • 可以任意指定调度的时间区间 • 可以通过JMX控制调度服务的创建和停止
pamirs-schedule的核心概念 TaskType(任务类型) 是任务调度分配处理的单位,例如: 1、将一张表中的所有状态为STS=’N’的所有数据提取出来发送给其它系统,同时将修改状态STS=’Y’,就是一种任务。TaskType=’DataDeal’ 2、将一个目录以所有子目录下的所有文件读取出来入库,同时把文件移到对应的备份目录中,也是一种任务。TaskType=’FileDeal’。 3、不断产生的计费请求
pamirs-schedule的核心概念 ScheduleServer(任务处理器) • 是由一组线程【1..n个线程】构成的任务处理单元,每一任务处理器有一个唯一的全局标识, 一般以IP$UUID[例如192.168.1.100$0C78F0C0FA084E54B6665F4D00FA73DC]的形式出现。 一个任务类型的数据可以由1..n个任务处理器同时进行。 • 这些任务处理器可以在同一个JVM中,也可以分布在不同主机的JVM中。任务处理器内部有一个心跳线程,用于确定Server的状态和任务的动态分配, 有一组工作线程,负责处理查询任务和具体的任务处理工作。
pamirs-schedule的核心概念 TaskQueue(任务队列) 是对任务进行的分片划分。例如: 1、将一个数据表中所有数据的ID按10取模,就将数据划分成了0、1、2、3、4、5、6、7、8、9供10个任务队列。 2、将一个目录下的所有文件按文件名称的首字母(不区分大小写), 就划分成了A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z供26个队列。 3、将一个数据表的数据ID哈希后按1000取模作为最后的HASHCODE,我们就可以将数据按[0,100)、[100,200) 、[200,300)、[300,400) 、 [400,500)、[500,600)、[600,700)、[700,800)、[800,900)、 [900,1000)划分为十个队列,当然你也可以划分为100个队列,最多是1000个队列。
pamirs-schedule的核心概念 TaskDealBean(任务处理类) 是业务系统进行数据处理的实现类。 要求实现Schedule的接口IScheduleTaskDealMulti或者IScheduleTaskDealSingle 的两个方法: 1、public List<T> selectTasks(String ownSign,inttaskQueueNum, List<String> taskQueueList,inteachFetchDataNum) throws Exception; 2、public boolean execute(T task,StringownSign) throws Exception;
pamirs-schedule的核心概念 OwnSign(运行区域) 是对运行环境的划分,进行调度任务和数据隔离。例如: 开发环境、测试环境、预发环境、生产环境。
pamirs-schedule的核心概念 执行时间区间 1、可以指定任务处理的时间间隔,例如每天的1:00-3:00执行,或者每个月的第一天执行、每一个小时的第一分钟执行等等。 间格式与crontab相同。如果不指定就表示一致运行。PAMIRS_SCHEDULE_TASKTYPE.PERMIT_RUN_START_TIME,PAMIRS_SCHEDULE_TASKTYPE.PERMIT_RUN_END_TIME 2、可以指定如果没有数据了,休眠的时间间隔。PAMIRS_SCHEDULE_TASKTYPE.SLEEP_TIME_NODATA 单位秒 3、可以指定每处理完一批数据后休眠的时间间隔.PAMIRS_SCHEDULE_TASKTYPE.SLEEP_TIME_INTERVAL 单位
pamirs-schedule运行方式 1、调度信息基于数据库存储的模式 2、调度信息基于zookeeper存储的模式
pamirs-schedule的使用案例 • 计费系统 • 帐务系统 • 订购系统 • 物流系统 • 流程调度系统(淘宝、支付宝) • 。。。。。。
欢迎使用pamirs-schedule http://code.taobao.org/trac/taobao-pamirs-schedule/wiki/ZhWikiStart