CN105824697A - 一种基于队列的分布式多级调度方法 - Google Patents
一种基于队列的分布式多级调度方法 Download PDFInfo
- Publication number
- CN105824697A CN105824697A CN201610167717.4A CN201610167717A CN105824697A CN 105824697 A CN105824697 A CN 105824697A CN 201610167717 A CN201610167717 A CN 201610167717A CN 105824697 A CN105824697 A CN 105824697A
- Authority
- CN
- China
- Prior art keywords
- scheduling
- queue
- task
- trigger
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000008569 process Effects 0.000 claims abstract description 9
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 2
- 230000002085 persistent effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于队列的分布式多级调度方法,属于分布式调度领域,本发明包括,调度管理器根据调度类型分发调度任务,负载均衡;调度触发器根据类型分布式触发各种任务;调度触发器任务分发至队列;任务执行器获取队列任务执行;任务执行器执行完毕返回至队列;调度回调统一处理器处理队列回调消息;调度部署管理器对各类调度触发器做增减等维护;本申请还提供了对应的系统。本申请通过一系列的闭环处理,将各种类型的任务,根据各类调度触发器的资源情况,负载均衡,分发任务,最大限度的利用了资源,并提高了任务触发的性能。
Description
技术领域
本发明涉及分布式调度技术,尤其涉及一种基于队列的分布式多级调度方法。
背景技术
在互联网和电子商务领域,大数据量、高并发已经是急需解决的问题。消耗时间相对较长的业务逻辑都会从用户行为中剥离出来以便对其进行异步处理。这样不仅能够提升用户体验,而且能够增加系统的可扩展性。因此分布式任务调度得到了非常广泛的应用。而当下任务调度面临新的挑战,一个是,高并发任务多,另一个是,任务种类多。现有技术下,分布式调度系统更多的是单一的时间调度。
发明内容
为了解决该问题,本发明提出了一种基于队列的分布式多级调度方法,提出了扩容,满足当下一些需求,即,基于队列,统一接口的,多种类调度,可是ftp,可是各种事件。本发明保证各种调度任务负载均衡,各自不冲突,各自根据自己机制触发任务,并能做到闭环处理
本发明提供的技术方案如下:
一种基于队列的分布式多级调度方法,包括:
调度管理器根据调度类型分发调度任务,负载均衡;
调度触发器根据类型分布式触发各种任务;
调度触发器任务分发至队列;
任务执行器获取队列任务执行;
任务执行器执行完毕返回至队列;
调度回调统一处理器处理队列回调消息;
调度部署管理器对各类调度触发器做增减等维护。
其中,调度管理器,全局控制任务触发器的分发,而非任务触发的分发。之所以称之为多级,即在于此,任务不仅仅限于时间调度,此处可根据相应情况扩展任务类型。
其中,调度触发器,负责触发任务,此处类型有:时间调度触器、文件采集调度触发器、事件调度触发器,且事件可自定义扩展。
其中,调度触发器分发任务至队列。时间调度:依赖于Cron表达式触发时间任务,并统一发到redis等队列;文件采集调度:依赖于被检测的ftp接口,可ftp协议,可sftp协议,配置相应筛选条件,目录,过滤,文件生成时间,依据频度扫描ftp接口,满足条件,触发此类任务,并统一发到redis等队列;事件调度:此处依赖于自定义的事件,满足事件的规则,分发任务到redis队列。
其中,任务执行器获取队列任务执行,调度以外的执行器从队列中取消息执行,并反馈执行结果至队列
其中,调度回调统一处理器处理队列回调消息,队列中消息被任务执行器执行后反馈的消息,此处理器会统一处理,做到任务的闭环。
其中,调度部署管理器对各类调度触发器做增减等维护,涉及到,调度触发器的分布式部署。
(1)每种任务配置时,对应一个类型,并保存,以便标示任务是时间的,还是事件的,还是其他。每种类型,除了公用的一些属性外,各自具有各自特有的属性。
(2)每种调度触发器,同样也需要把其机器等信息配置,并保存。
(3)调度管理器启动时,会从配置中读取所有任务。
(4)调度管理器启动时,会从配置中读取所有调度器的信息。
(5)调度管理器,依次去检测所有触发器运行情况、包括内存、cpu等资源情况,并把所有任务,根据类型,分发到调度触发器上,并做到负载均衡,分发任务时,调度管理器会对分发任务的具体情况,做记录。
(6)调度管理器,除了要做这种初始化分发任务以外,还有一个重要的角色,即,定期检测每个调度触发器的运行情况,以及其上运行的任务的情况,一旦发现某个触发器死掉或任务异常,需要作出响应。
(7)针对(6)提出的容灾响应,可以这么做,分情况:触发器死掉时,为了保障其上的任务的执行,自动重启该触发器,并把之前指定给它的任务重新指定并执行;触发器正常,某个任务因为各种原因异常时,需要外部强制杀掉此任务,并重新运行该任务。
(8)调度触发器的作用,在于触发任务,以时间调度为例,根据定义的时间,到时间后触发相应任务,并发送到队列中待执行。
(9)任务执行端取走消息任务,具体执行,执行完毕反馈消息至队列。
(10)调度回调处理器,从队列中回调消息,并做相应处理,这样一个任务的闭环就结束了。
本发明的有益效果
这种方法的优势,在于:
(1)各个部分相互独立,互不干扰,有一端发生问题,不影响其他端。例如,调度触发器某一个发生故障,其他调度触发器正常工作;任务执行端发生故障时,队列消息不会丢,待故障恢复后,队列消息可以继续执行。同时,也不影响调度触发器触发任务产生消息。
(2)触发出的消息,可以从头至尾闭关跟踪,无论哪一步环节出现问题,都可以做到有章可循。
(3)调度触发器可以无限制根据现实情况扩展,这部分的扩展包括:机器等硬件环境的扩展;调度触发器可以根据任务类型的业务扩展。
附图说明
图1是本方案实施的架构图;
图2是本方案使用的缓存层-任务信息;
图3是本方案使用的缓存层-机器信息;
图4是本方案使用的任务消息队列结构。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。参照图1,出示了本方案实施的架构图。本发明实施例提供的一种任务分布式调度方法,包括如下,纠于发明内容中对方案做了阐述,此处会对其中一些细节的实施做说明:
(1)为了系统的兼容性,推荐使用java开发,能做到跨平台,所有任务的配置,以及触发器服务器的配置等信息的存储,采取缓存加持久层的方式,缓存我们可以采用redis,redis的数据结构,我们采用hash结构(参照图2、3),持久层采用关系型数据库oracle。之所以采用这种结构是,调度过程中会频繁访问数据库,会对数据库造成务必要的压力,所以,降配置缓存至缓存层,当缓存层读取不到时,再去持久层读取。
(2)各个端,代码或功能为了保持独立,采用单独服务方式编写。对于调度触发器,可以根据业务类型,自扩展,每种扩展,可以直接复制的方式部署,可以同一机器多个服务,也可以部署到不同服务器。
(3)调度管理器,为了防止也出现异常,此处需要做Ha容灾,使用两个调度管理器,分主从,正常时使用主调度管理器,从调度管理器待命,主发生异常时,被检测到,自动切换到从调度管理器。
(4)调度管理器对调度触发器分配任务,采用RMI方式通信。
(5)调度触发器,触发产生任务后,组织消息,发送到redis中,队列层,采用redis的list数据结构,lpush入队列。队列结构,可参照图4。
(6)任务执行端,轮询访问redis,只要redis中有消息任务,就rpop出,并根据消息内容执行。
(7)任务执行端执行完后,会反馈执行结构再至redis队列,约定的消息结构可参照图4结构。
(8)调度回调处理器,专门负责处理回调消息,轮询读取redis中关于回调的队列,rpop出,并执行,至此,闭环完成。
以上对本申请所提供的一种任务分布式调度方法和系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (6)
1.一种基于队列的分布式多级调度方法,其特征在于,包括:
调度管理器根据调度类型分发调度任务,负载均衡;
调度触发器根据类型分布式触发各种任务;
调度触发器任务分发至队列;
任务执行器获取队列任务执行;
任务执行器执行完毕返回至队列;
调度回调统一处理器处理队列回调消息;
调度部署管理器对各类调度触发器做增减。
2.根据权利要求1所述的方法,其特征在于,调度管理器,全局控制任务触发器的分发,而非任务触发的分发。
3.根据权利要求2所述的方法,其特征在于,调度触发器,负责触发任务,此处类型有:时间调度触器、文件采集调度触发器、事件调度触发器,且事件可自定义扩展。
4.根据权利要求3所述的方法,其特征在于,调度触发器分发任务至队列;时间调度:依赖于Cron表达式触发时间任务,并统一发到redis等队列;文件采集调度:依赖于被检测的ftp接口,可ftp协议,可sftp协议,配置相应筛选条件,目录,过滤,文件生成时间,依据频度扫描ftp接口,满足条件,触发此类任务,并统一发到redis等队列;事件调度:此处依赖于自定义的事件,满足事件的规则,分发任务到redis队列。
5.根据权利要求1所述的方法,其特征在于,任务执行器获取队列任务执行,调度以外的执行器从队列中取消息执行,并反馈执行结果至队列。
6.根据权利要求1所述的方法,其特征在于,调度回调统一处理器处理队列回调消息,队列中消息被任务执行器执行后反馈的消息,此处理器会统一处理,做到任务的闭环。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610167717.4A CN105824697A (zh) | 2016-03-23 | 2016-03-23 | 一种基于队列的分布式多级调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610167717.4A CN105824697A (zh) | 2016-03-23 | 2016-03-23 | 一种基于队列的分布式多级调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105824697A true CN105824697A (zh) | 2016-08-03 |
Family
ID=56524385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610167717.4A Pending CN105824697A (zh) | 2016-03-23 | 2016-03-23 | 一种基于队列的分布式多级调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824697A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109194678A (zh) * | 2018-09-25 | 2019-01-11 | 吉林省联宇合达科技有限公司 | 基于redis消息队列的分布式流媒体服务系统及方法 |
CN109257320A (zh) * | 2017-07-13 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 消息存储方法和装置 |
CN110688101A (zh) * | 2019-09-26 | 2020-01-14 | 山东浪潮通软信息科技有限公司 | 一种基于xxl-job实现分布式调度任务的方法及系统 |
CN110750349A (zh) * | 2019-10-26 | 2020-02-04 | 武汉中海庭数据技术有限公司 | 一种分布式任务调度方法及系统 |
WO2021073414A1 (zh) * | 2019-10-15 | 2021-04-22 | 平安科技(深圳)有限公司 | 一种任务调度的方法及相关装置 |
CN113268318A (zh) * | 2021-04-07 | 2021-08-17 | 北京思特奇信息技术股份有限公司 | 一种任务调度的方法和分布式系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080244584A1 (en) * | 2007-03-26 | 2008-10-02 | Smith Gary S | Task scheduling method |
CN101442549A (zh) * | 2008-12-11 | 2009-05-27 | 金蝶软件(中国)有限公司 | 一种控制并发错误的方法及装置 |
CN101753608A (zh) * | 2008-12-09 | 2010-06-23 | 中国移动通信集团公司 | 分布式系统的调度方法及系统 |
CN101957780A (zh) * | 2010-08-17 | 2011-01-26 | 中国电子科技集团公司第二十八研究所 | 一种基于资源状态信息的网格任务调度处理器及方法 |
CN103810023A (zh) * | 2014-03-06 | 2014-05-21 | 中国科学院信息工程研究所 | 一种云平台中分布式应用的智能部署方法及系统 |
CN104965762A (zh) * | 2015-07-21 | 2015-10-07 | 国家计算机网络与信息安全管理中心 | 一种面向混合任务的调度系统 |
-
2016
- 2016-03-23 CN CN201610167717.4A patent/CN105824697A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080244584A1 (en) * | 2007-03-26 | 2008-10-02 | Smith Gary S | Task scheduling method |
CN101753608A (zh) * | 2008-12-09 | 2010-06-23 | 中国移动通信集团公司 | 分布式系统的调度方法及系统 |
CN101442549A (zh) * | 2008-12-11 | 2009-05-27 | 金蝶软件(中国)有限公司 | 一种控制并发错误的方法及装置 |
CN101957780A (zh) * | 2010-08-17 | 2011-01-26 | 中国电子科技集团公司第二十八研究所 | 一种基于资源状态信息的网格任务调度处理器及方法 |
CN103810023A (zh) * | 2014-03-06 | 2014-05-21 | 中国科学院信息工程研究所 | 一种云平台中分布式应用的智能部署方法及系统 |
CN104965762A (zh) * | 2015-07-21 | 2015-10-07 | 国家计算机网络与信息安全管理中心 | 一种面向混合任务的调度系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257320A (zh) * | 2017-07-13 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 消息存储方法和装置 |
CN109194678A (zh) * | 2018-09-25 | 2019-01-11 | 吉林省联宇合达科技有限公司 | 基于redis消息队列的分布式流媒体服务系统及方法 |
CN109194678B (zh) * | 2018-09-25 | 2021-01-15 | 吉林省联宇合达科技有限公司 | 基于redis消息队列的分布式流媒体服务系统 |
CN110688101A (zh) * | 2019-09-26 | 2020-01-14 | 山东浪潮通软信息科技有限公司 | 一种基于xxl-job实现分布式调度任务的方法及系统 |
WO2021073414A1 (zh) * | 2019-10-15 | 2021-04-22 | 平安科技(深圳)有限公司 | 一种任务调度的方法及相关装置 |
CN110750349A (zh) * | 2019-10-26 | 2020-02-04 | 武汉中海庭数据技术有限公司 | 一种分布式任务调度方法及系统 |
CN110750349B (zh) * | 2019-10-26 | 2022-07-29 | 武汉中海庭数据技术有限公司 | 一种分布式任务调度方法及系统 |
CN113268318A (zh) * | 2021-04-07 | 2021-08-17 | 北京思特奇信息技术股份有限公司 | 一种任务调度的方法和分布式系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824697A (zh) | 一种基于队列的分布式多级调度方法 | |
EP3340057B1 (en) | Container monitoring method and apparatus | |
US9582312B1 (en) | Execution context trace for asynchronous tasks | |
Vahidinia et al. | Cold start in serverless computing: Current trends and mitigation strategies | |
US11544137B2 (en) | Data processing platform monitoring | |
US9836343B2 (en) | Framework for user-mode crash reporting | |
US9329901B2 (en) | Resource health based scheduling of workload tasks | |
US8881161B1 (en) | Operating system with hardware-enabled task manager for offloading CPU task scheduling | |
US9208029B2 (en) | Computer system to switch logical group of virtual computers | |
US20060212871A1 (en) | Resource allocation in computing systems | |
JP2011192281A (ja) | 仮想マシンモニター及び仮想マシンモニターのスケジューリング方法 | |
US9535749B2 (en) | Methods for managing work load bursts and devices thereof | |
EP2625600A1 (en) | Runtime agnostic representation of user code for execution with selected execution runtime | |
US20190114210A1 (en) | Distribution of tasks for execution using correlated data in microservices environments | |
US8918776B2 (en) | Self-adapting software system | |
JP5936224B2 (ja) | サービス・プロバイダを動的に選択する方法、コンピュータ・システム、コンピュータおよびプログラム | |
US20190235902A1 (en) | Bully vm detection in a hyperconverged system | |
US10353786B2 (en) | Virtualization substrate management device, virtualization substrate management system, virtualization substrate management method, and recording medium for recording virtualization substrate management program | |
US20170206119A1 (en) | System and method for achieving specific behaviors by intercepting file access calls in a mainframe rehosting platform | |
WO2016074130A1 (zh) | 一种系统调用命令的批处理方法及装置 | |
US20200133728A1 (en) | Data based scheduling for horizontally scalable clusters | |
US10642718B2 (en) | Framework for testing distributed systems | |
US20140337864A1 (en) | Multithreaded Event Handling Using Partitioned Event De-Multiplexers | |
US11068487B2 (en) | Event-stream searching using compiled rule patterns | |
WO2019178178A1 (en) | Thread scheduling for multithreaded data processing environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160803 |
|
RJ01 | Rejection of invention patent application after publication |