一种基于队列的分布式多级调度方法

文档序号:10470993阅读:368来源:国知局
一种基于队列的分布式多级调度方法
【专利摘要】本发明提供一种基于队列的分布式多级调度方法,属于分布式调度领域,本发明包括,调度管理器根据调度类型分发调度任务,负载均衡;调度触发器根据类型分布式触发各种任务;调度触发器任务分发至队列;任务执行器获取队列任务执行;任务执行器执行完毕返回至队列;调度回调统一处理器处理队列回调消息;调度部署管理器对各类调度触发器做增减等维护;本申请还提供了对应的系统。本申请通过一系列的闭环处理,将各种类型的任务,根据各类调度触发器的资源情况,负载均衡,分发任务,最大限度的利用了资源,并提高了任务触发的性能。
【专利说明】
一种基于队列的分布式多级调度方法
技术领域
[0001]本发明涉及分布式调度技术,尤其涉及一种基于队列的分布式多级调度方法。
【背景技术】
[0002]在互联网和电子商务领域,大数据量、高并发已经是急需解决的问题。消耗时间相对较长的业务逻辑都会从用户行为中剥离出来以便对其进行异步处理。这样不仅能够提升用户体验,而且能够增加系统的可扩展性。因此分布式任务调度得到了非常广泛的应用。而当下任务调度面临新的挑战,一个是,高并发任务多,另一个是,任务种类多。现有技术下,分布式调度系统更多的是单一的时间调度。

【发明内容】

[0003]为了解决该问题,本发明提出了一种基于队列的分布式多级调度方法,提出了扩容,满足当下一些需求,即,基于队列,统一接口的,多种类调度,可是ftp,可是各种事件。本发明保证各种调度任务负载均衡,各自不冲突,各自根据自己机制触发任务,并能做到闭环处理
本发明提供的技术方案如下:
一种基于队列的分布式多级调度方法,包括:
调度管理器根据调度类型分发调度任务,负载均衡;
调度触发器根据类型分布式触发各种任务;
调度触发器任务分发至队列;
任务执行器获取队列任务执行;
任务执行器执行完毕返回至队列;
调度回调统一处理器处理队列回调消息;
调度部署管理器对各类调度触发器做增减等维护。
[0004]其中,调度管理器,全局控制任务触发器的分发,而非任务触发的分发。之所以称之为多级,即在于此,任务不仅仅限于时间调度,此处可根据相应情况扩展任务类型。
[0005]其中,调度触发器,负责触发任务,此处类型有:时间调度触器、文件采集调度触发器、事件调度触发器,且事件可自定义扩展。
[0006]其中,调度触发器分发任务至队列。时间调度:依赖于Cron表达式触发时间任务,并统一发到redis等队列;文件采集调度:依赖于被检测的ftp接口,可ftp协议,可sftp协议,配置相应筛选条件,目录,过滤,文件生成时间,依据频度扫描ftp接口,满足条件,触发此类任务,并统一发到redis等队列;事件调度:此处依赖于自定义的事件,满足事件的规贝1J,分发任务到redis队列。
[0007]其中,任务执行器获取队列任务执行,调度以外的执行器从队列中取消息执行,并反馈执行结果至队列
其中,调度回调统一处理器处理队列回调消息,队列中消息被任务执行器执行后反馈的消息,此处理器会统一处理,做到任务的闭环。
[0008]其中,调度部署管理器对各类调度触发器做增减等维护,涉及到,调度触发器的分布式部署。
[0009]( I )每种任务配置时,对应一个类型,并保存,以便标示任务是时间的,还是事件的,还是其他。每种类型,除了公用的一些属性外,各自具有各自特有的属性。
[0010](2)每种调度触发器,同样也需要把其机器等信息配置,并保存。
[0011](3)调度管理器启动时,会从配置中读取所有任务。
[0012](4)调度管理器启动时,会从配置中读取所有调度器的信息。
[0013](5)调度管理器,依次去检测所有触发器运行情况、包括内存、cpu等资源情况,并把所有任务,根据类型,分发到调度触发器上,并做到负载均衡,分发任务时,调度管理器会对分发任务的具体情况,做记录。
[0014](6)调度管理器,除了要做这种初始化分发任务以外,还有一个重要的角色,S卩,定期检测每个调度触发器的运行情况,以及其上运行的任务的情况,一旦发现某个触发器死掉或任务异常,需要作出响应。
[0015](7)针对(6)提出的容灾响应,可以这么做,分情况:触发器死掉时,为了保障其上的任务的执行,自动重启该触发器,并把之前指定给它的任务重新指定并执行;触发器正常,某个任务因为各种原因异常时,需要外部强制杀掉此任务,并重新运行该任务。
[0016](8)调度触发器的作用,在于触发任务,以时间调度为例,根据定义的时间,到时间后触发相应任务,并发送到队列中待执行。
[0017](9)任务执行端取走消息任务,具体执行,执行完毕反馈消息至队列。
[0018](10)调度回调处理器,从队列中回调消息,并做相应处理,这样一个任务的闭环就结束了。
[0019]本发明的有益效果这种方法的优势,在于:
(I)各个部分相互独立,互不干扰,有一端发生问题,不影响其他端。例如,调度触发器某一个发生故障,其他调度触发器正常工作;任务执行端发生故障时,队列消息不会丢,待故障恢复后,队列消息可以继续执行。同时,也不影响调度触发器触发任务产生消息。
[0020](2)触发出的消息,可以从头至尾闭关跟踪,无论哪一步环节出现问题,都可以做到有章可循。
[0021](3)调度触发器可以无限制根据现实情况扩展,这部分的扩展包括:机器等硬件环境的扩展;调度触发器可以根据任务类型的业务扩展。
【附图说明】
[0022]图1是本方案实施的架构图;
图2是本方案使用的缓存层-任务彳g息;
图3是本方案使用的缓存层-机器信息;
图4是本方案使用的任务消息队列结构。
【具体实施方式】
[0023]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。参照图1,出示了本方案实施的架构图。本发明实施例提供的一种任务分布式调度方法,包括如下,纠于
【发明内容】
中对方案做了阐述,此处会对其中一些细节的实施做说明:
(O为了系统的兼容性,推荐使用java开发,能做到跨平台,所有任务的配置,以及触发器服务器的配置等信息的存储,采取缓存加持久层的方式,缓存我们可以采用redis,redis的数据结构,我们采用hash结构(参照图2、3),持久层采用关系型数据库oracle。之所以采用这种结构是,调度过程中会频繁访问数据库,会对数据库造成务必要的压力,所以,降配置缓存至缓存层,当缓存层读取不到时,再去持久层读取。
[0024](2)各个端,代码或功能为了保持独立,采用单独服务方式编写。对于调度触发器,可以根据业务类型,自扩展,每种扩展,可以直接复制的方式部署,可以同一机器多个服务,也可以部署到不同服务器。
[0025](3)调度管理器,为了防止也出现异常,此处需要做Ha容灾,使用两个调度管理器,分主从,正常时使用主调度管理器,从调度管理器待命,主发生异常时,被检测到,自动切换到从调度管理器。
[0026](4)调度管理器对调度触发器分配任务,采用RMI方式通信。
[0027](5)调度触发器,触发产生任务后,组织消息,发送到redis中,队列层,采用redis的I i st数据结构,Ipush入队列。队列结构,可参照图4。
[0028](6)任务执行端,轮询访问redis,只要redis中有消息任务,就rpop出,并根据消息内容执行。
[0029](7)任务执行端执行完后,会反馈执行结构再至redis队列,约定的消息结构可参照图4结构。
[0030](8)调度回调处理器,专门负责处理回调消息,轮询读取redis中关于回调的队列,rpop出,并执行,至此,闭环完成。
[0031]以上对本申请所提供的一种任务分布式调度方法和系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【主权项】
1.一种基于队列的分布式多级调度方法,其特征在于,包括: 调度管理器根据调度类型分发调度任务,负载均衡; 调度触发器根据类型分布式触发各种任务; 调度触发器任务分发至队列; 任务执行器获取队列任务执行; 任务执行器执行完毕返回至队列; 调度回调统一处理器处理队列回调消息; 调度部署管理器对各类调度触发器做增减。2.根据权利要求1所述的方法,其特征在于,调度管理器,全局控制任务触发器的分发,而非任务触发的分发。3.根据权利要求2所述的方法,其特征在于,调度触发器,负责触发任务,此处类型有:时间调度触器、文件采集调度触发器、事件调度触发器,且事件可自定义扩展。4.根据权利要求3所述的方法,其特征在于,调度触发器分发任务至队列;时间调度:依赖于Cron表达式触发时间任务,并统一发到redis等队列;文件采集调度:依赖于被检测的ftp接口,可ftp协议,可Sftp协议,配置相应筛选条件,目录,过滤,文件生成时间,依据频度扫描ftp接口,满足条件,触发此类任务,并统一发到redis等队列;事件调度:此处依赖于自定义的事件,满足事件的规则,分发任务到redis队列。5.根据权利要求1所述的方法,其特征在于,任务执行器获取队列任务执行,调度以外的执行器从队列中取消息执行,并反馈执行结果至队列。6.根据权利要求1所述的方法,其特征在于,调度回调统一处理器处理队列回调消息,队列中消息被任务执行器执行后反馈的消息,此处理器会统一处理,做到任务的闭环。
【文档编号】G06F9/48GK105824697SQ201610167717
【公开日】2016年8月3日
【申请日】2016年3月23日
【发明人】赵勇
【申请人】浪潮通信信息系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1