任务调度控制系统的制作方法

文档序号:17719972发布日期:2019-05-22 02:05阅读:201来源:国知局
任务调度控制系统的制作方法

本发明涉及计算机应用技术领域,特别是涉及一种任务调度控制系统。



背景技术:

随着云技术的发展,电力系统的任务调度也逐渐依赖云平台实现。例如电网智能调度监控支撑平台、电网弹性能源管理系统平台等正成为业界的发展趋势。

然而目前的云管理平台未充分结合电力系统资源状态多变的特点,难以实现根据资源状态实时进行任务调度的需求。



技术实现要素:

基于此,有必要提供一种任务调度控制系统,能够实时监控节点的资源状态信息并根据资源状态信息实时进行任务调度。

一种任务调度控制系统,其包括:节点感知器,用于采集节点的资源状态信息;资源状态服务器,用于存储所述资源状态信息,定义目录并根据所述目录提供对所述资源状态信息的目录查询接口;任务调度器,用于根据所述目录查询接口的查询结果生成任务队列,并根据预设顺序将所述任务队列中的任务指令发送至预设的任务调度等待队列;所述节点感知器,还用于接收并处理所述任务调度等待队列上的任务指令,并根据所述任务指令对节点进行运维。

上述任务调度控制系统,能实时采集监控节点的资源状态信息,并根据资源状态信息进行任务调度,满足能源管理系统等应用平台的节点负载均衡计算和实时调度的要求,提升能源管理系统等应用平台的性能。

在其中一个实施例中,所述节点感知器包括:节点监管服务器,包括监视模块和运维处理模块,所述监视模块用于监视并采集节点的资源状态信息,并根据节点的服务变化生成至少一种事务;

业务感知服务器,用于计算至少一个预设模型的运算速度,并根据所述运算速度计算节点的流量信息;感知发送器,用于向所属资源状态服务器发送所述节点的资源状态信息和流量信息;所述运维处理模块用于接收并处理所述任务调度等待队列上的任务指令,并根据所述任务指令对节点进行运维。

在其中一个实施例中,所述资源状态服务器包括一个主服务器和多个备用服务器,所述主服务器用于定义目录及目录操作事务,并将所述目录操作事务同步至所述多个备用服务器;所述多个备用服务器用于提供对所述资源状态信息的目录查询接口,并根据所述目录操作事务对所述资源状态信息进行处理。

在其中一个实施例中,所述主服务器包括:目录定义模块,用于定义目录及多种目录操作事务;同步模块,用于将所述目录操作事务同步至所述多个备用服务器;所述备用服务器包括:目录查询模块,用于提供对所述资源状态信息的目录查询接口并根据查询指令对所述资源状态信息进行查询;资源对象同步组件,用于接收目录操作事务,并根据查询结果对所述资源状态信息进行处理。

在其中一个实施例中,所述目录查询模块包括:监听组件,用于监听资源状态信息及属性信息的变化,将所述资源状态信息及属性信息的变化发送至所述资源对象同步组件和所述任务调度器;查找组件,用于提供对所述资源状态信息的目录查询接口,并根据查询指令对所述资源状态信息进行查询。

在其中一个实施例中,所述任务调度器包括:任务编排器,用于根据所述目录查询接口的查询结果生成任务队列,并根据所述任务队列生成待校核的指令;自动调度引擎,用于根据预设规则对所述待校核的指令进行审核,根据预设时序将审核通过的指令发送至预设的任务调度等待队列。

在其中一个实施例中,所述任务调度器还包括:排序模块,用于根据目录查询结果中的信息计算多个节点的分数,并根据所述多个节点的分数调整所述任务调度等待队列中的指令的顺序。

在其中一个实施例中,所述任务调度器还包括:越限告警模块,用于设置至少一种资源属性阈值,并在节点资源对象的实时属性值超过所述资源属性阈值时,发出节点告警信息。

在其中一个实施例中,所述任务调度器还包括:告警处理模块,用于根据所述节点告警信息调整所述任务调度等待队列中的指令的顺序或执行节点。

在其中一个实施例中,所述任务调度控制系统还包括多个节点,所述多个节点用于执行所述任务调度控制系统调度的指令。

附图说明

图1为本发明一实施例的任务调度控制系统的结构示意图;

图2为本发明一实施例的任务调度控制系统中的节点感知器的结构示意图;

图3为本发明一实施例的任务调度控制系统中的资源状态服务器的结构示意图;

图4为本发明一实施例的任务调度控制系统中的任务调度器的结构示意图;

图5为本发明另一实施例的任务调度控制系统中的任务调度器的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

例如,一种任务调度控制系统,其包括节点感知器、资源状态服务器及任务调度器,其中节点感知器用于采集节点的资源状态信息;资源状态服务器,用于存储所述资源状态信息,定义目录并根据所述目录提供对所述资源状态信息的目录查询接口;任务调度器用于根据所述目录查询接口的查询结果生成任务队列,并根据预设顺序将所述任务队列中的任务指令发送至预设的任务调度等待队列;所述节点感知器还用于接收并处理所述任务调度等待队列上的任务指令,并根据所述任务指令对节点进行运维。

上述任务调度控制系统,能实时采集监控节点的资源状态信息,并根据资源状态信息进行任务调度,满足能源管理系统等应用平台的节点负载均衡计算和实时调度的要求,提升能源管理系统等应用平台的性能。

在一个实施例中,如图1所示,提供一种任务调度控制系统10,其包括节点感知器110、资源状态服务器120及任务调度器130,其中:

节点感知器110用于采集节点的资源状态信息。其中,节点的资源状态信息包括但不限于节点的cpu、内存、磁盘、网络流量、关键进程等信息。一个实施例中,节点感知器还用于实时监控上述资源状态信息的变化。其中,节点感知器采集资源的域、类、对象和属性信息。

资源状态服务器120用于存储所述资源状态信息,定义目录并根据所述目录提供对所述资源状态信息的目录查询接口。其中,资源状态服务器120内置有分布式资源状态数据库,以存储节点的资源状态信息。

一个实施例中,资源状态服务器120还用于定义目录操作事务,例如创建、删除、更新或修改等事务。根据目录操作事务,实现对目录的操作或根据目录进行查询。

任务调度器130用于根据所述目录查询接口的查询结果生成任务队列,并根据预设顺序将所述任务队列中的任务指令发送至预设的任务调度等待队列。其中,任务在任务调度等待队列中依序等待执行。

一个实施例是,根据每个任务对应节点的资源状态信息对多个任务进行排序,并根据排序将任务指令发送至预设的任务调度等待队列。

其中,节点感知器110还用于接收并处理所述任务调度等待队列上的任务指令,并根据所述任务指令对节点进行运维。具体地,节点感知器110消费任务调度等待队列上属于本节点的任务指令,根据任务指令对本节点进行运维处理。

一个实施例中,节点感知器对本节点进行运维处理后,还用于反馈执行结果。

上述任务调度控制系统,能实时采集监控节点的资源状态信息,并根据资源状态信息进行任务调度,满足能源管理系统等应用平台的节点负载均衡计算和实时调度的要求,提升能源管理系统等应用平台的性能。

在一个实施例中,如图2所示,所述节点感知器110包括节点监管服务器111、业务感知服务器112和感知发送器113,其中节点监管服务器111包括监视模块111a和运维处理模块111b。

监视模块111a用于监视节点的资源状态信息,并根据节点的服务变化生成至少一种事务。监视模块111a用于监视并感知节点、节点上服务的变化及节点资源状态的变化。例如,监视模块111a采集cpu使用率、内存使用率、磁盘分区使用率、基本服务集、应用服务集、服务进程等资源信息,以及队列的应用状态信息,采集结果通过感知发送器113提交给资源状态服务器120。

本实施例,监视模块111a根据节点的服务变化生成至少一种事务,例如,当识别到节点上新加载的服务,生成“创建”事务;当识别到节点上新卸载了服务,生成“删除”事务;当节点使用率超过预设限值,则生成“更新”事务。

一个实施例中,监视模块111a使用psutil工具实现linux服务节点的信息监视,使用docker的python管理工具接口开发容器服务的监视接口。

业务感知服务器112用于计算至少一个预设模型的运算速度,并根据所述运算速度计算节点的流量信息。其中,预设模型包括前置通道分组模型和scada(supervisorycontrolanddataacquisition,数据采集与监视控制系统)参数分组模型。其中,业务感知服务器112还用于设置该预设模型。

一个实施例中,业务感知服务器112进行业务模型分析,包括分析前置通道分组模型的分组方法和scada参数分组模型的分片方法。对于前置通道分组模型,计算每个前置服务所处理的通道数及采集点数,对于scada参数分组模型,计算每个scada服务所需计算的遥测、遥信点数。此外,还测试并计算每个服务处理一定数量测点的耗时,以计算前置通道分组模型和scada参数分组模型的运算速度。例如,测试计算每个服务处理10万量测点的毫秒数,以预估实际模型计算所需的时间。

一个实施例中,业务感知服务器112接收前置通道分组模型的或scada参数分组模型所统计的实时处理流量,进而计算出每个节点上处理的总流量信息。

一个实施例中,业务感知服务器112还计算多个节点的平均流量,当节点的实际流量大于平均流量时,生成更新事务。例如,当节点的实际流量大于平均流量的1.5倍时,即节点的实际流量大于‘1.5*平均流量*(服务数/节点数)’时,生成更新事务。

感知发送器113用于向所属资源状态服务器发送所述节点的资源状态信息和流量信息。运维处理模块111b用于接收并处理所述任务调度等待队列上的任务指令,并根据所述任务指令对节点进行运维。

一个实施例中,运维管理操作模块消费任务调度等待队列上的常规指令,进行以下操作:判断是否本节点指令,是则执行维护操作,执行反馈传输给任务调度等待队列。若不是本节点指令,判断执行节点是否是scada编号最小的节点,是则扫描‘退出节点监视’信息,完成退出节点的任务指令的处理;不是则返回开头,继续消费常规执行的task_commands指令。当对象信息改变,其属性伴随类的定义而联动更新。

在一个实施例中,如图3所示,所述资源状态服务器120包括一个主服务器121和多个备用服务器122,所述主服务器121用于定义目录及目录操作事务,并将所述目录操作事务同步至所述多个备用服务器;所述多个备用服务器122用于提供对所述资源状态信息的目录查询接口,并根据所述目录操作事务对所述资源状态信息进行处理。

一个实施例中,主服务器和备用服务器分别设置有资源状态数据库。主服务器包括目录定义模块和同步模块,备用服务器包括目录查询模块和资源对象同步组件。其中,目录定义模块用于定义目录及多种目录操作事务;目录定义服务包括定义创建、删除、更新或修改等操作事务。同步模块用于将所述目录操作事务同步至所述多个备用服务器,例如同步至多个备用服务器的资源状态数据库。

一个实施例中,主资源状态服务器每执行‘配置指定条数’的定义事务后,启动分布式资源状态数据库的校核操作;备资源状态服务器收到定义事务后,通过资源对象同步组件发送给主服务处理,收到主服务的反馈则维护备资源状态服务器的分布式资源状态数据库。

目录查询模块用于提供对所述资源状态信息的目录查询接口并根据查询指令对所述资源状态信息进行查询;资源对象同步组件用于接收目录操作事务,并根据查询结果对所述资源状态信息进行处理。

一个实施例中,目录查询模块包括监听组件和查找组件,其中:监听组件用于监听资源状态信息及属性信息的变化,将所述资源状态信息及属性信息的变化发送至所述资源对象同步组件和所述任务调度器。查找组件用于提供对所述资源状态信息的目录查询接口,并根据查询指令对所述资源状态信息进行查询。

一个实施例中,监听组件识别主服务器的定义信号,把操作的事务同步通知到本节点的资源对象同步组件和任务调度器;查找组件调用节点的分布式资源状态数据库的实时检索服务。

一个实施例中,资源对象同步组件包含事务代理单元和事务转发单元,事务转发单元把获取到的事务转发给预设的属性变化队列。事务代理单元消费属性变化队列,解析出事务并将解析出的事务提供给目录定义模块进行处理。

一个实施例中,资源状态服务器120还用于将资源状态信息中的资源对象封装为事务,并向预设的属性变化队列提交所述事务。

在一个实施例中,如图4所示,所述任务调度器130包括任务编排器131和自动调度引擎132。其中任务编排器131用于根据所述目录查询接口的查询结果生成任务队列,并根据所述任务队列生成待校核的指令。自动调度引擎132用于根据预设规则对所述待校核的指令进行审核,根据预设时序将审核通过的指令发送至预设的任务调度等待队列。

一个实施例中,任务调度器130定义任务和作业,其中作业为按时序排队的任务队列,任务的操作指令为task_commands。

一个实施例中,任务编排器131包括指令消费组件、组建任务队列组件、节点打分重排组件和告警重排组件,实现对task_commands指令的内容进行编排,完成应用服务类指令的创建、漂移任务。应用服务类指令采用一主一备的模式进行编排,对系统域初始化、主服务异常、备服务异常、节点退出等过程给出详细的编排方法。

一个实施例中,任务调度器130采用一主多备的网络部署模式,主调度器和备调度器都可以参与任务编排,而任务执行计划由主调度器下发。主调度器的任务编排器131把任务集编排成作业队列,生成待校核指令并下发给任务调度等待队列。备调度器编排的作业队列经过审核后下发给待校核的任务调度等待队列;主调度器的任务编排器131消费待校核的任务调度等待队列,重排自身编排完成的作业队列,生成新的作业队列。

一个实施例中,主调度器的自动调度引擎审核并过滤其任务编排器生成的作业队列,可选地,可使用故障节点审核、时序审核及业务执行关联审核等手段进行审核过滤,生成按时序的作业执行计划,并将作业执行计划下发给任务调度等待队列。任务调度等待队列的运维指令被执行完并验证正常后,自动调度引擎把指令反馈给任务调度等待队列;主调度器自动调度引擎的校核指令消费组件,消费到执行校核的反馈指令,给出执行反馈。

在一个实施例中,如图5所示,所述任务调度器130还包括排序模块133、越限告警模块134和告警处理模块135中的至少一种。

排序模块133用于根据目录查询结果中的信息计算多个节点的分数,并根据所述多个节点的分数调整所述任务调度等待队列中的指令的顺序。

一个实施例中,根据类获取各资源对象的属性值,将属性值按从大到小/从小到大的顺序进行排序,根据打分结果对节点进行打分重排。例如取排序后的前10个数据,假设排第1的为10分,排第2的为9分,以此类推,排第10的为1分,采用分值累加法为节点打分,分值越高的节点应用负载越高,任务调度的可用性越差。

越限告警模块134用于设置至少一种资源属性阈值,并在节点资源对象的实时属性值超过所述资源属性阈值时,发出节点告警信息。

一个实施例中,为对象的至少一种属性设置相应的资源属性阈值,当监测实时属性值超过资源属性阈值时,根据超过的范围发出不同等级的告警信息。例如,告警信息分为普通、紧急和严重三个等级。

告警处理模块135用于根据所述节点告警信息调整所述任务调度等待队列中的指令的顺序或执行节点。其中,节点告警信息包括越限告警、基础平台的资源监视告警和业务的资源类告警。

一个实施例中,告警处理模块135用于综合分析越限严重告警、基础平台的资源监视告警、业务的资源类告警通知,对于严重告警的节点,判定其任务调度的可用性差,避免或减少对该节点下发任务。对于存在连续严重告警的应用服务,则迁移到其他节点运行。

在一个实施例中,所述任务调度控制系统还包括多个节点,所述多个节点用于执行所述任务调度控制系统调度的指令。

在一个实施例中,根据上述任务调度系统构建节点感知器。其中,节点感知器采用本地代理的方式部署,感知本节点的资源状态信息,处理指向本节点任务指令。感知模型按层次结构定义资源的域、类、对象和属性。查找服务能通过对象查找对应的属性记录;目录定义服务时同步维护对象和属性的记录时间。监视模块111a和运维处理模块111b。

在一个实施例中,根据上述任务调度系统构建资源状态服务器。其中,资源状态服务器采用主备模式运行,一个节点上运行主服务器,其它节点运行备用服务器。资源状态服务器包含资源状态数据库分布式资源状态数据库、目录定义模块、目录查询模块和资源对象同步组件。资源对象同步组件包含事务代理单元和事务转发单元。资源状态服务器遵循以下规则保证分布式资源状态数据库本地和网络域的完整性:

a.目录定义的整体性,每一次事务操作与过去的事务更新无关。

b.目录定义是幂等的,如果事务被应用了几次,结果一样。

c.目录定义可交换的,不管事务指令的顺序怎样,执行后结果一样。

一个实施例中,分布式资源状态数据库采用key-value数据库leveldb,存储感知模型定义的域、类、对象和属性等信息。主服务器上的分布式资源状态数据库完成创建、删除、更新或修改等定义服务操作(处理标志为1-4),后把操作事务同步给所有的备用服务器上的分布式资源状态数据库。集群上的所有节点均可看到全局资源状态信息。分布式资源状态数据库内部包含数据库核查组件dbcheck,备库用于校核与主库的一致性。采用对象的更新时间校核,实现策略如下:

1.主资源状态服务器启动目录查询服务,查询出"o-"+d.name开头的指定域的对象;资源对象同步服务封装对象成校核类事务,其处理标志为2,并把事务通过事务转发单元提交给属性变化队列oaqueue。

2.备资源状态服务器资源对象同步服务消费处理属性变化队列oaqueue上处理标志为2的对象checkobj,按以下步骤校核对象:

a.取checkobj中的一个待校核对象obj。

b.按obj.key查询本地分布式资源状态数据库,如果key不存在,obj执行create操作,并记录日志;key存在,则读取本地对应的对象obj_local。

c.将obj_local.uptime和obj.uptime比较,如果obj_local.uptime=obj.uptime,则返回a;如果obj_local.uptime<obj.uptime,通过远程调阅接口,从主服务器的分布式资源状态数据库下载obj对应的属性信息集attrvector,并把obj和attrvector执行修改操作;如果obj_local.uptime>obj.uptime,表示本地节点曾经为主节点数据未同步到其它节点上,把obj_local打上处理标志为1的修改标志后提交给属性变化队列oaqueue。

3.如果存在节点新增、删除或basesrv类服务配置变更,主资源状态服务器执行dbcheck,即返回(1)重新执行。

一个实施例中,资源对象同步组件包含事务代理单元和事务转发单元。事务代理单元消费属性变化队列oaqueue,并解析消费的事务,提供给目录定义服务模块完成操作。事务转发单元把获取到的事务转发给属性变化队列oaqueue。

其中,目录定义服务包含创建、删除、更新或修改等事务操作,处理策略如下:

1.主资源状态服务器的分布式资源状态数据库接收事务,直接处理,处理完成后,目录查询服务的监听组件获取资源对象的变化消息,由事务转发单元转发至属性变化队列oaqueue,处理标志为1。

2.主资源状态服务器每执行配置指定条数的定义事务后,自动启动分布式资源状态数据库校核操作。

3.备资源状态服务器收到定义事务后,通过事务转发单元转发至属性变化队列oaqueue,处理标志为0。

4.主资源状态服务器的事务代理单元消费属性变化队列oaqueue上处理标志为0的消息,更新本地分布式资源状态数据库;成功后再把事务由事务转发单元转发至属性变化队列oaqueue,处理标志为1。

5.备用服务器上的事务代理单元消费属性变化队列oaqueue上处理标志为1的消息,并更新本地分布式资源状态数据库。

其中,若事务的发起节点是主服务器,则发起者得到分布式资源状态数据库的处理通知;若事务的发起节点是备用服务器,则发起者得到事务代理单元的反馈通知。

其中,appsrv类对象的创建操作,即是应用服务注册操作。把应用服务注册到分布式资源状态数据库,进行统一的调度管理。删除操作则重新计算对象的mask,打上删除标志。执行task_commands指令的移除操作,后台转换执行批量删除操作。

一个实施例中,目录查询模块提供监听组件和查找组件。监听组件识别主资源状态服务器的资源对象或属性的变化,将变化通知到资源对象同步组件及相关任务调度器。通过目录定义服务的操作回调,实现分布式资源状态数据库事务监听,并把变化的事务通过事务转发单元提交给属性变化队列oaqueue。使用者可以开发事务消费服务,获取事务的变化信息。

若指定监听一个未创建的资源对象,则按监听的名称创建一个只有名称的空对象;后续接到真正的创建指令,覆盖创建即可。

查找组件提供本地分布式资源状态数据库的实时检索服务。服务端读取key,从前端截取子串,调用plyvel工具的prefixed_db()函数创建子库提供查询的服务;客户端提供key或其子串,得到查询的结果集。

查找组件针对资源对象进行检索查询,找到对象后,通过对象.oid和对应类的method,查询属性集。

在一个实施例中,任务调度器的功能如下:

a.满足多个域的节点同时部署应用的需求。

b.能够在集群范围内,通过手动编排,快速的分发应用服务。

c.能够进行节点调度管理,屏蔽故障节点。

d.能够对应用服务进行任务调度操作,自动重启异常的基础服务,迁移异常的应用服务,提供集群范围的应用服务可用性管理。

根据任务调度器进行任务调度的常规流程如下:

1.节点弹性平台启动时,首先启动basesrv,完成'knoded','k资源状态服务器d','ktaskd'三种服务的启动。

2.获取节点标签,通过目录查询服务的查找组件查询本节点上可用的appsrv类对象,空则提示‘手动编排’组件,读取服务初始化配置文件,通过‘指令发送’组件发出待校核的启动任务队列,指令状态为0,并提交到任务调度等待队列swqueue;非空则把查询内容拼装成task_commands的show类指令提交给‘组建任务队列’组件。

3.组建任务队列组件收到指令消费组件或上一步拼装的show类,按时序排序,写到任务队列中。

4.查找组件查询内容提交至排序模块,将排序结果作为节点打分重排的依据。例如,设排第1的为10分,第2的为9分,....,第10的为1分,采用分值累加法为节点打分,分值越高的节点可用性越差。task_commands的create指令部署到节点组内分值最小的节点上。

5.越限告警及告警分析模块分析出存在资源的严重告警的节点;task_commands的创建指令部署到节点组内无严重告警的节点上。重新调整appsrv类指令的工作节点。

6.任务编排器生成任务队列。

7.主调度器自动调度引擎按资源调度规则审核任务队列;审核通过的指令状态改为1,并通过指令发送组件发送给任务调度等待队列swqueue。

8.节点监管服务器的指令消费组件消费任务调度等待队列swqueue中处理标志为1的指令;如果指令操作的是本节点的资源对象,则执行指令;并在完成分布式资源状态数据库维护操作且验证正常后,把所执行指令的状态改为2,反馈给任务调度等待队列swqueue。

9.主调度器自动调度引擎的校核指令消费组件,消费任务调度等待队列swqueue中处理标志为2的指令;验证完成指令集的闭环操作。

10.如果常规指令发送出去的20秒后主调度器未收到执行反馈,说明本次任务自动调度失败,生成告警通知运维人员。

在一个实施例中,任务编排器由四个组件构成:指令消费组件、组建任务队列组件、节点打分重排组件和告警重排组件。这四个组件主要实现对task_commands指令的内容进行编排,着重完成appsrv类服务的创建、漂移任务。备调度器上的编排器只处理本节点的作业,主调度器的编排器汇聚待校核指令,统一编排处理。下面针对系统域初始化、主服务异常、备服务异常、节点退出等过程,appsrv类服务均采用一主一备的模式,描述任务编排的动作。

1.域初始化。参考任务调度流程,假设node_label为scada的配置,节点数为4,并行scada计算服务数为7;计算服务数/节点个数为每个节点上运行同组服务的最多计算数,即每个节点最多运行2个主服务或2个备服务;设主服务为按编号增序自动配置,备服务按编号减序自动配置,则scada01运行k_kscadad_001_0、k_kscadad_002_0、k_kscadad_007_1、k_kscadad_006_1;启动操作如下:

a.首个节点scada01启动,首先启动basesrv,再依次启动配置所描述的四个服务。

b.备服务启动10秒内不做计算处理,10秒后未发现对应的主服务,则自动转换为主服务。

c.20秒后未检测到scada其它节点启动,则按节点编号顺序启动scada02节点的服务;之后每20秒检测后续节点,启动对应服务;如果只启动scada01一个节点,则所有scada的主备服务都在一个节点上运行。

d.如果scada01启动后10秒内启动scada02,则scada02上正常启动自身所配置的服务;后续节点类似。

e.如果scada04节点异常,不能启动;计算知每个节点可至多运行3个主服务或3个备服务,启动负载均衡计算:首先,找到主服务运行多于3个的节点及最少的节点,迁移一个主服务到最少的节点上;然后,找到备服务运行多于3个的节点及最少的节点,迁移一个备服务到最少的节点上;再返回开始重新计算处理,直到无多于3个服务运行的节点。

f.如果scada04节点修复后,正常启动,则每个节点至多运行2个主服务或2个备服务,启动负载均衡计算,计算方法同上步操作。

g.每次负载均衡迁移的稳定时间为10秒,防止节点异常连续重启的迁移抖动操作。

h.如果basesrv类服务存在异常,则不进行负载均衡计算。

一个实施例中,当主服务异常时,例如监听事务检测到basesrv类服务异常,则尝试在本节点重启3~5次。监听组件检测到appsrv类主服务异常,按备服务编号顺序变更为主服务,并把变更成功的备服务在原来的主节点上启动;如检测到k_kscadad_001_0异常或关闭,则执行如下操作:

a.查找组件检索"o-emsi:appsrv:"+scadan+":k_kscadad_001_0"是否存在,存在则记录节点名为scadax,启动主服务漂移操作。

b.执行一次移除操作。

c.查找组件检索k_kscadad_001的1号备服务,假设在scada02上;把1号备服务变为主服务。如果1号更新失败,则检索后续编号的备服务,变为主服务;设最后变更为主服务的备服务为k_kscadad_001_n。

d.把k_kscadad_001_n迁移到scadax上。

一个实施例中,当备服务异常时,例如监听组件检测到appsrv类备服务异常,在本节的重启或找到资源打分最低的节点重启,如检测到scada02上k_kscadad_001_1退出,则执行如下操作:

a.查找组件检索"a-emsi:node:scada02",获取scada02节点运行资源属性,判断资源属性分值是否过高。

b.若分值正常,则在本节点重启服务。

c.若分值异常,则启动备服务漂移工作。

d.执行一次移除操作。

e.假设scada03节点分值最小且未运行k_kscadad_001_0,启动创建。

一个实施例中,当节点退出时,scada编号最小的运行节点检测退出信号,并完成如下appsrv类服务的漂移操作:

a.监听组件检测到节点卸载或异常退出信号,scada编号最小的运行节点上按退出节点名lookup检索出卸载的appsrv对象信息,生成task_commands的移除指令队列。

b.如果主服务退出,按服务序号变更对应的备服务为主服务,然后检索服务组内资源打分最低的节点,重启变更备服务。

c.如果备服务退出,直接检索服务组内资源打分最低的节点,启动退出的备服务。

d.scada编号最小的运行节点处理步骤a计算的移除指令队列,维护分布式资源状态数据库。

一个实施例中,自动调度引擎执行指令的审核发送和执行反馈两个过程。备调度器的自动调度引擎进行任务审核,过滤掉非本节点的执行指令,把本节点的包含待校核指令的作业队列发送给任务调度等待队列swqueue;主调度器自动调度引擎的任务审核组件使用故障节点审核、时序审核及业务执行关联审核等手段过滤作业队列,生成执行计划,发布给任务调度等待队列swqueue此为常规指令。

任务审核组件,过滤作业队列,生成的执行计划期望在集群范围内10内能执行完毕;审核策略如下:

1.备调度器只处理本节点的执行,主调度器处理全局指令;审核组件定时器至少10秒。

2.启动审核,查找组件获取范围内节点的资源状态信息,检测所有节点上感知器的节点监管服务是否正常。

3.读取作业队列1,定义感知器异常的节点和故障节点的指令状态为0;检索出节点所属组中打分最小的正常节点,是appsrv类服务运维指令则把指令中的节点名替换为新节点的节点名,指令状态置为1;生成job2队列。

4.读取作业队列2,开展时序审核,同一节点basesrv启动在前,appsrv启动在后;移除时先执行appsrv,再执行basesrv;异常指令状态置为-1;生成作业队列3。

5.读取作业队列3,开展业务执行关联审核,设计一种依赖配置文件taskaudit.cnf,整理出每类运维指令的依赖。审核时如果发现集群内存在依赖的服务未启动,则查找未启动服务的节点组;从节点组中找到打分最小的运行节点,在本指令前增加未启服务的创建指令。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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