1 / 11

taobao - pamirs -schedule

taobao - pamirs -schedule. 多任务调度系统. pamirs -schedule 的设计目的. 设计目的: 让批量任务或者不断变化的任务,能够被动态的分配到多个主机的 JVM 中,不同的线程组中并行执行。 所有的任务能够被不重复,不遗漏的快速处理 任务处理服务期可以动态的增加和减少 可以通过域来隔离不同的执行环境 可以任意指定调度的时间区间 可以通过 JMX 控制调度服务的创建和停止. pamirs -schedule 的核心概念. TaskType ( 任务类型 ) 是任务调度分配处理的单位,例如:

Download Presentation

taobao - pamirs -schedule

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. taobao-pamirs-schedule 多任务调度系统

  2. pamirs-schedule的设计目的 设计目的: • 让批量任务或者不断变化的任务,能够被动态的分配到多个主机的JVM中,不同的线程组中并行执行。 • 所有的任务能够被不重复,不遗漏的快速处理 • 任务处理服务期可以动态的增加和减少 • 可以通过域来隔离不同的执行环境 • 可以任意指定调度的时间区间 • 可以通过JMX控制调度服务的创建和停止

  3. pamirs-schedule的核心概念 TaskType(任务类型) 是任务调度分配处理的单位,例如: 1、将一张表中的所有状态为STS=’N’的所有数据提取出来发送给其它系统,同时将修改状态STS=’Y’,就是一种任务。TaskType=’DataDeal’ 2、将一个目录以所有子目录下的所有文件读取出来入库,同时把文件移到对应的备份目录中,也是一种任务。TaskType=’FileDeal’。 3、不断产生的计费请求

  4. pamirs-schedule的核心概念 ScheduleServer(任务处理器) • 是由一组线程【1..n个线程】构成的任务处理单元,每一任务处理器有一个唯一的全局标识, 一般以IP$UUID[例如192.168.1.100$0C78F0C0FA084E54B6665F4D00FA73DC]的形式出现。 一个任务类型的数据可以由1..n个任务处理器同时进行。 • 这些任务处理器可以在同一个JVM中,也可以分布在不同主机的JVM中。任务处理器内部有一个心跳线程,用于确定Server的状态和任务的动态分配, 有一组工作线程,负责处理查询任务和具体的任务处理工作。

  5. 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个队列。

  6. 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;

  7. pamirs-schedule的核心概念 OwnSign(运行区域) 是对运行环境的划分,进行调度任务和数据隔离。例如: 开发环境、测试环境、预发环境、生产环境。

  8. 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 单位

  9. pamirs-schedule运行方式 1、调度信息基于数据库存储的模式 2、调度信息基于zookeeper存储的模式

  10. pamirs-schedule的使用案例 • 计费系统 • 帐务系统 • 订购系统 • 物流系统 • 流程调度系统(淘宝、支付宝) • 。。。。。。

  11. 欢迎使用pamirs-schedule http://code.taobao.org/trac/taobao-pamirs-schedule/wiki/ZhWikiStart

More Related