一种简化云化系统任务调度的方法与流程

文档序号:12719050阅读:466来源:国知局
一种简化云化系统任务调度的方法与流程

本发明涉及电信BOSS(业务运营支撑系统)云化技术领域,尤其涉及了一种简化云化系统任务调度的方法。



背景技术:

传统任务调度使用linux或者unix主机crontab功能,此功能有以下缺陷:一是部署和修改麻烦,云化主机数量较多,导致调整一个任务特别麻烦。二是异常情况需要补跑任务,即当目前有一个主机部署了数据统计功能任务,但是此主机出现异常时,就需要手工去补跑此类任务。三是固定周期单次执行任务时,只能部署在一个主机,无法选用主机资源空闲的主机,造成主机繁忙。



技术实现要素:

本发明所要解决的技术问题是:当云化主机数量较多时,调整一个任务麻烦;当出现异常情况需要补跑任务;当固定周期单次执行任务时,无法选用主机资源空闲的主机,造成主机繁忙。

为解决上面的技术问题,本发明提供了一种简化云化系统任务调度的方法,该方法包括如下步骤:

S1,配置调度任务记录表和主机资源信息表;

S2,主机系统启动后自动创建资源上报线程,将主机内的基本资源信息进行上报,存放在主机资源信息表中;

S3,根据S1调度任务记录表中已记录的调度任务名称和S2中上报的基本资源信息进行权值计算,根据计算的结果执行任务调度;

S4,执行S3中的任务调度后,将调度结果信息存储到调度结果表中。

上述发明的有益效果:配置调度任务记录表,创建线程,自动上报资源信息,有效避免了主机调度任务数量较多时,主机不灵活的缺点,另外利用计算权值自动调度任务的方法避免了出现异常情况时需要补跑任务的缺点。

进一步,所述的S1中还包括:配置定时任务与用户的对应关系、用户与主机的对应关系,将定时任务、用户和主机三者的归属集群信息配置在调度任务记录表和主机资源信息表中。

进一步,所述的S1中还包括:将需进行调度任务的集群主机的IP地址信息配置到分布式内存数据库的主机资源信息表中。

进一步,S2中资源上报线程包括:

S21,依次获取主机对应集群ID的使用率:主机CPU的使用率、主机内存使用率、主机文件句柄使用率、主机网络带宽使用率;

S22,在获取主机网络带宽使用率后,判断当前主机资源是否应该上报,校验当前主机的IP配置信息是否存在;

S23,当判断当前主机的IP配置信息存在时,将S21中获取到的使用率更新到S1中的主机资源信息表中。

上述进一步的有益效果:合理地利用了主机的资源,有效地集中了调度的信息,将信息分类规划,克服了部署和修改麻烦,降低了调度任务时的麻烦。

进一步,所述S3中包括:

所述S3中包括:

S31,遍历S1中的调度任务记录表中的定时任务,判断定时任务是否是在每个主机中都启动;若是,则在当前主机执行任务调度;若否,则执行下一步S32;

S32,遍历主机计算S1中的调度任务记录表中已记录的调度任务名称和S2中上报的基本资源信息之间的第一权值;

S33,根据S32的第一权值,计算获取当前主机脚本的ascii值,并根据ascii值计算出第二权值;

S34,遍历主机,将第二权值与第一权值相减,判断结果是否出现负值,若是,则在当前主机执行任务调度;若否,则删掉当前的定时任务,则返回步骤S31。

上述进一步的有益效果:避免了主机异常时任务调度需要手工补跑的问题,选用主机资源空闲的主机,避免了主机系统的繁忙。

进一步,S31中还包括:在当前主机执行任务调度后,将该任务调度的信息存储在主机内存的数据库中。

进一步,S34中还包括:在当前主机执行任务调度后,将该任务调度的信息存储在主机内存的数据库中。

进一步,S2中获取主机网络带宽使用率包括:每2秒钟或取一次流量信息,一共获取4次,求出平均值作为这1分钟内的网络带宽使用率,供下次更新使用。

进一步,S2中的资源上报线程,在每分钟内的第1-10秒的获取主机内的基本资源信息。

进一步,S3中的任务调度是在每分钟内的第20-55秒进行。

本发明的有益效果:配置调度任务记录表,创建线程,自动上报资源信息,有效避免了主机调度任务数量较多时,主机不灵活的缺点,另外利用计算权值的方法避免了出现异常情况时需要补跑任务的缺点,有效地选用主机资源空闲的主机,避免了主机系统的繁忙,合理地利用了主机的资源。

附图说明

图1为本发明的一种简化云化系统任务调度的方法流程图;

图2为本发明的自动创建资源上报线程的流程图;

图3为本发明的执行任务调度的流程图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

实施例

如图1所示,一种简化云化系统任务调度的方法,该方法包括如下步骤:

S1,配置定时任务和用户、主机的对应关系,将定时任务、用户和主机三者的归属集群信息配置在对应的分布式内存数据库中的调度任务记录表中,将需进行调度任务的集群主机的IP地址信息配置到分布式内存数据库的主机资源信息表中;其中,定时任务是按用户进行执行的,就跟某一个主机上面的用户有A,B两个用户,这两个用户是对应不同的定时任务和主机环境变量的。A用户可能安装了某些应用,但是B用户可能安装的是另外一些应用,A、B用户任务不同。

S2,主机系统启动后自动创建资源上报线程,将主机内的基本资源信息进行上报,存放在S1中的主机资源信息表中;

S3,根据S1调度任务记录表中已记录的调度任务名称和S2中上报的基本资源信息进行权值计算,计算出当前任务调度是否应该是在本主机执行的任务调度,如果是,则在本主机执行任务调度;

S4,执行S3中的任务调度后,将调度结果信息存储到调度结果表中,进行下一次调度进程的互斥校验。其中,互斥校验:就是说只能运行一个,存在这样的任务,任务是常驻内存的,系统要求你只能运行一个,所以启动后的我们存储在调度结果表,标识我们已经启动了,下一次启动的时候,调度脚本要先去校验下已经启动的这个进程是不是还在,如果在的话就不能运行了。

如图2所示的,自动创建资源上报线程的步骤包括:

S21,依次获取主机对应集群ID的使用率:主机CPU的使用率、主机内存使用率、主机文件句柄使用率、主机网络带宽使用率,每2秒钟取一次流量信息,一共获取4次,求出平均值作为这1分钟内的网络带宽使用率,供下次更新使用;

S22,在获取主机网络带宽使用率后,判断当前主机资源是否应该上报,校验当前主机的IP配置信息是否存在;

S23,当判断当前主机的IP配置信息存在时,将S21中获取到的主机资源信息更新到S1中的主机资源信息表中;当不存在时,则不更新主机资源。例如:我们把系统部署到了172.21.4.113这个IP上面的主机,但是我们在任务配置的时候,没有配置172.21.4.113这个主机IP,那么我们程序校验在分布式内存库中没有这个主机的IP信息,那么我们就不更新这个主机的资源使用信息了。

如图3所示的,在主机上执行任务调度的步骤包括:

S31,遍历S1中的调度任务记录表中的定时任务,判断定时任务是否是在每个主机中都启动;若是,则在当前主机执行任务调度;若否,则执行下一步S32;

S32,遍历主机计算S1中的调度任务记录表中已记录的调度任务名称和S2中上报的基本资源信息之间的第一权值B;

S33,根据S32的第一权值,计算获取当前主机脚本的ascii值,并根据ascii值计算出第二权值D;

S34,遍历主机,将第二权值与第一权值相减,判断结果是否出现负值,若是,则在当前主机执行任务调度;若否,则删掉当前的定时任务,并继续执行步骤S31。

其中上述的调度任务记录表:DSPE_CRON表

功能:存放对应Cluster_Id的调度任务信息。

维护:表中数据由应用开发人员进行后台配置,存放所有的用户、集群、crontab的对应关系。

主机资源信息表:DSPE_HOST表

功能:存放调度任务主机信息

维护:由DSPE_OP界面更新主机和Cluster_Id对应关系,DSPE_CRON更新主机资源信息。存放所有主机和集群的对应关系。

调度结果表:DSPE_RESULT表

功能:存放调度任务处理结果,对于只在集群一台主机启动的脚本和应用信息启动完成后在此表进行记录,此表主要是统一调度脚本框架使用。

另外,对于上述的自动创建资源上报线程的步骤中是系统启动后自动创建资源上报线程,在每分钟的第1秒到第10秒获取主机的CPU、内存、IO、网络带宽等使用率,以时间戳的方式进行更新,更新至内存数据库,数据存储到DSPE_HOST表中;对于在主机上执行任务调度步骤是:在每1分钟的第20秒到第55秒进行任务调度处理,根据上报的资源进行权值计算,根据算法计算出当前任务调度是否应该是本主机执行,如果是本主机执行,则在本主机进行执行,并将此类信息添加到内存数据库的结果表中;在任务调度后将调度结果信息存储到调度结果表中,进行下一次调度的进程依赖性校验。

根据前一个分钟上报的CPU、内存、IO等信息计算得到综合负载权值A(目前按照A=CPU*0.5+Mem*0.3+IO*0.1+FD_FILE*0.1),参考如下算法得到第一权值B:

B初始化=0;当0%<A≤20%时,B=81;当20%<A≤40%时,B=27;当40%<A≤60%时,B=9;当60%<A≤80%时,B=3;当80%<A≤100%时,B=1;得到主机的权值B。

假设有m台主机,设C=B1+B2+...+Bm,并且B1~Bm按照从小到大顺序排列。第二权值D=C*rnd(time_stamp+to_number(进程名)),然后用D顺序-B1-B2-...-Bm,当D一旦小于0时退出循环,得到当前下标t、权值Bt以及对应的主机假设是主机s。此s主机即为要执行程序的主机对象。特别注意上面的rnd(time_stamp),里面的time_stamp即为查询时用到的上一个分钟的时间戳。to_number(进程名)指把进程名通过函数转换成一个数字。

在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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