跨平台分布式任务调度系统及调度方法与流程

文档序号:26003831发布日期:2021-07-23 21:21阅读:306来源:国知局
跨平台分布式任务调度系统及调度方法与流程

本发明属于计算机科学技术领域,具体涉及一种跨平台分布式任务调度系统及调度方法。



背景技术:

目前普遍的分布式任务调度系统都是根据操作系统定制的,不具备跨平台使用的能力。在不同的平台(主要是指linux和windows之间),甚至相同平台但是不同发行版的linux和不同版本的windows,都不一定能够通用,这是因为不同平台上构建子进程和子线程的方式有很大的区别,通常分布式任务调度系统都需要构建子进程或者子线程来进行任务的调度和执行,而目前的分布式任务调度系统在底层都没有对不同平台进行兼容,不能在不同平台上通用的构建调度和执行任务的子进行或子线程。



技术实现要素:

本发明的发明目的是为了解决上述技术问题,提供一种跨平台分布式任务调度系统及调度方法,在任务执行端可以平行扩展实现各个不同操作系统级的子进程和子线程初始化,做到跨平台的功能。

为解决上述技术问题,本发明的实施例提供一种跨平台分布式任务调度系统,包括任务发起端,消息中心,任务接收端,任务派发端和任务执行端,所述任务执行端设有操作系统兼容模块,其中,

所述任务发起端把包括任务模块、任务方法、任务参数的数据包装成一个消息块,并把包装好的消息块发送到消息中心的服务地址上;

所述消息中心接收来自任务发起端发送过来的消息块,并存放在内存或磁盘中,同时把任务发送给与消息中心连接的任务接收端;

所述任务接收端接收来自消息中心的任务后,把任务放在任务等待队列中,等待任务派发端把任务派发出去;

所述任务派发端定时轮训任务等待队列,发现队列中有任务时,会把任务发送到任务执行队列;

所述任务执行端定时轮训任务执行队列,发现队列中有任务时,会取出任务,执行任务,完成后发现ack消息到消息中心。其中,所述消息块有head、body、properties三个组成部分;其中,head中包括任务唯一id、任务名称、任务模块名称、任务重试次数、任务执行时间限制;body中包括任务方法执行时的具体参数;properties中包括任务执行后回复的对象。

本发明还提供一种跨平台分布式任务调度系统的调度方法,操作系统兼容模块通过sys.platform函数来获取当前操作系统的类型,通过该类型取到对应的popen函数核心实现,完成跨平台兼容。

上述的跨平台分布式任务调度系统的调度方法包括如下步骤:

s1、消息发送端包装消息,发送到消息中心;

s2、消息中心把消息派发到连接着自己的消息接收端;

s3、消息接收端把消息中心发给自己的消息存到内存队列中,该内存队列命名为任务等待队列;

s4、消息派发端轮训任务等待队列,把其中的消息取出,方法另一个内存队列中,该内存队列命名为任务执行队列;

s5、消息执行端轮训任务执行队列,把其中的消息取出,调用sys.platform函数来获取当前操作系统的类型,根据操作系统的类型,选择已经实现的popen函数,创建出子进程,然后把消息传给子进程执行;子进程执行完成推出后,消息执行端向消息中心发送ack消息。

本发明的上述技术方案的有益效果如下:本发明提供的跨平台分布式任务调度系统及调度方法,是在任务执行端实现了一个操作系统兼容模块(concurrency模块),该模块通过sys.platform函数来获取当前操作系统的类型,通过该类型取到对应的popen函数实现,完成跨平台兼容。本发明的分布式任务调度系统的相同代码可直接在不同操作系统上直接运行,无需做任何修改。

附图说明

图1为本发明的结构框图。

具体实施方式

为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。

如图1所示,本发明提供了一种跨平台分布式任务调度系统,包括任务发起端,消息中心,任务接收端,任务派发端和任务执行端,所述任务执行端设有操作系统兼容模块,其中,

所述任务发起端会配置消息中心的服务地址,例如:

amqp://user:pwd@192.168.100.100:5672/task。

所述任务发起端把包括任务模块、任务方法、任务参数的数据包装成一个消息块,并把包装好的消息块发送到消息中心的服务地址上。

所述消息块有head、body、properties三个组成部分;其中,head中包括任务唯一id、任务名称、任务模块名称、任务重试次数、任务执行时间限制;body中包括任务方法执行时的具体参数;properties中包括任务执行后回复的对象。

所述消息中心是一个实现了amqp协议的消息队列,接收来自任务发起端发送过来的消息块,并存放在内存或磁盘中,同时把任务发送给与消息中心连接的任务接收端;

所述任务接收端会配置消息中心的服务地址,例如:

amqp://user:pwd@192.168.100.100:5672/task。

所述任务接收端会和消息中心基于amqp协议建立长连接,等待消息中心发送任务给自己。

所述任务接收端接收来自消息中心的任务后,把任务放在任务等待队列中,等待任务派发端把任务派发出去;

所述任务派发端定时轮训任务等待队列(是一个内存队列),发现队列中有任务时,会把任务发送到任务执行队列;

所述任务执行端会配置消息中心的服务地址,例如:

amqp://user:pwd@192.168.100.100:5672/task。

所述任务执行端定时轮训任务执行队列(是另一个内存队列),发现队列中有任务时,会取出任务,执行任务,完成后发现ack消息到消息中心。

由上可知,任务派发端和任务接收端访问同一个内存队列,即任务等待队列)。

任务派发端和任务执行端访问同一个内存队列,即任务执行队列。

本发明还提供一种跨平台分布式任务调度系统的调度方法,操作系统兼容模块通过sys.platform函数来获取当前操作系统的类型,通过该类型取到对应的popen函数核心实现,完成跨平台兼容。

上述的跨平台分布式任务调度系统的调度方法包括如下步骤:

s1、消息发送端包装消息,发送到消息中心;

s2、消息中心把消息派发到连接着自己的消息接收端;

s3、消息接收端把消息中心发给自己的消息存到内存队列中,该内存队列命名为任务等待队列;

s4、消息派发端轮训任务等待队列,把其中的消息取出,方法另一个内存队列中,该内存队列命名为任务执行队列;

s5、消息执行端轮训任务执行队列,把其中的消息取出,调用sys.platform函数来获取当前操作系统的类型,根据操作系统的类型,选择已经实现的popen函数,创建出子进程,然后把消息传给子进程执行;子进程执行完成推出后,消息执行端向消息中心发送ack消息。

本发明提供的跨平台分布式任务调度系统及调度方法,是在任务执行端实现了一个操作系统兼容模块(concurrency模块),该模块通过sys.platform函数来获取当前操作系统的类型,通过该类型取到对应的popen函数实现,完成跨平台兼容。本发明的分布式任务调度系统的相同代码可直接在不同操作系统上直接运行,无需做任何修改。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1