执行体调度清洗方法、调度清洗装置及拟态OpenStack系统
文献发布时间:2023-06-19 10:16:30
技术领域
本发明涉及拟态OpenStack系统,具体的说,涉及了一种执行体调度清洗方法、调度清洗装置及拟态OpenStack系统。
背景技术
现有的拟态OpenStack装置如图1所示,该装置通过分发器完成对消息的输入与分发,通过裁决器保证裁决结果的正确性。将正确的结果输入给OpenStack后台组件;调度器接收裁决器上报的异常执行体信息并对其进行清洗和恢复操作,并且调度器根据调度策略在备用执行体中选择最佳执行体进入服务状态。
因为OpenStack的单一任务多个业务裁决操作的特性,当裁决器识别出某一个执行体业务出错时,就意味这个执行体这条任务之后的其他业务都要裁决出错。所以裁决器会多次向调度器上报这个异常执行体信息,调度器每次接收到异常执行体信息时均需要进行清洗,从而使得同一个异常执行体被多次清洗;且定时调度和手动调度执行体时执行体立马下线进行清洗,会影响系统使用,从而导致裁决器错误的上报异常执行体信息。
为了解决以上存在的问题,人们一直在寻求一种理想的技术解决方案。
发明内容
本发明的目的是针对现有技术的不足,从而提供了一种执行体调度清洗方法、调度清洗装置及拟态OpenStack系统。
为了实现上述目的,本发明所采用的技术方案是:一种执行体调度清洗方法,包括以下步骤:选择一个在线执行体进行下线操作,在下线的执行体的所有任务均执行完成后对其进行清洗操作,同时从备选执行体集中选择一个新执行体上线。
基于上述,当接收到异常执行体信息后,根据所述异常执行体信息判断相应的异常执行体是否处于在线服务状态,并在所述异常执行体处于在线服务状态时,选择所述异常执行体进行下线操作。
基于上述,当接收到定时调度指令或手动调度指令后,选择服务时间最长的在线执行体进行下线操作。
基于上述,选择在线执行体后,为选择的待下线的执行体添加锁定标记,并在调度任务完成后清除锁定标记。
基于上述, 接收到新调度清洗任务后,根据所述锁定标记是否存在判断上一个调度清洗任务是否完成,当所述锁定标记存在则判断上一个调度清洗任务未完成,放弃所述新调度清洗任务;当所述锁定标记未存在则判断上一个调度清洗任务已完成,则执行所述新调度清洗任务。
本发明还提供一种调度清洗装置,包括调度器和执行体清洗服务模块,
所述调度器执行调度清洗任务时,选择一个在线执行体进行下线操作,向所述执行体清洗服务模块下发清洗指令,同时从备选执行体集中选择一个新执行体上线;
所述执行体清洗服务模块接收清洗指令后,在下线的执行体的所有任务均执行完成后对其进行清洗操作。
基于上述,所述调度器包括裁决调度模块、调度指令输入接口、定时器和轮换调度模块,
所述裁决调度模块,用于接收异常执行体信息,并根据所述异常执行体信息判断相应的异常执行体是否处于在线服务状态,并在所述异常执行体处于在线服务状态时,选择所述异常执行体进行下线操作;
所述调度指令输入接口,用于接收外界发送的手动调度指令并发送给所述轮换调度模块;
所述定时器,用于在累计时长等于预设定时时长时生成定时调度指令发送给所述轮换调度模块;
所述轮换调度模块接收到所述手动调度指令或所述定时调度指令后,选择服务时间最长的在线执行体进行下线操作。
本发明还提供一种拟态OpenStack系统,包括前述的调度清洗装置,还包括分发器、消息缓存服务器、若干个OpenStack执行体以及裁决器;
所述分发器分别与所述消息缓存服务器和所述OpenStack执行体连接,用于在接收任务消息后生成任务标识,将所述任务标识、所述任务消息以及在线执行体信息组装并分发给所有在线OpenStack执行体;以及将所有在线服务体信息与所述任务标识结合生成键值对,缓存到消息缓存服务器中,并在返回任务执行结果时清除键值对;
所述OpenStack执行体与所述裁决器连接,用于对所述任务消息进行处理,并将处理内容与所述分发器下发的在线执行体信息组装成待裁决消息发送给所述裁决器;
所述裁决器与所述调度清洗装置连接,用于对所述OpenStack执行体发送的待裁决消息进行裁决,识别出异常执行体并向所述调度清洗装置发送异常执行体信息;
所述调度清洗装置,与所述消息缓存服务器连接,用于在接收定时调度指令或手动调度指令或所述裁决器发送的异常执行体信息时,进行OpenStack执行体的上下线轮换操作,同时根据所述消息缓存服务器中的键值对判断新下线的OpenStack执行体的任务是否执行完成,并在执行完成后对新下线的OpenStack执行体进行清洗操作。
基于上述,还包括执行体状态监控服务模块,所述执行体状态监控服务模块与所述调度清洗装置连接,用于向所述调度清洗装置返回所有OpenStack执行体的状态信息;所述调度清洗装置在接收到异常执行体信息后,根据所述执行体状态监控服务模块返回的所有OpenStack执行体的状态信息判断所述异常执行体是否处于在线服务状态;所述调度清洗装置接收到定时调度指令或手动调度指令后,选择服务时间最长的在线OpenStack执行体进行下线操作。
基于上述,所述OpenStack执行体收到所述分发器下发的任务消息后,将所述分发器下发的任务标识作为主任务标识,然后根据业务处理流程和所述主任务标识生成副任务标识,将所述主任务标识与所述副任务标识组成唯一身份标识。
本发明相对现有技术具有突出的实质性特点和显著的进步,具体的说,1)利用分发器可标识执行体任务开始和结束的机制,保证定时调度和手动调度执行体时不影响系统使用,且不会导致裁决器错误的上报异常执行体信息;
调度模块收到要被调度的异常执行体时,会对这个执行体标记为锁定状态,在调度完成时会清除掉这个标记状态,然后当同一个执行体裁决错误导致调度;并且定时调度要调度这个执行体时,这两个模块都要向调度模块汇报。为了避免两次操作冲突。调度模块先收到的请求会加上标记并被处理,后收到的请求会因为无法添加标记信息,从而放弃任务的执行。这样就可以避免两者的操作冲突;
2)利用调度器已知在线执行体信息的机制,保证在OpenStack单任务多裁决特性下同一个异常执行体不会被多次清洗。
附图说明
图1是本发明背景技术所述的拟态OpenStack的原理框图。
图2是本发明实施例1的原理框图。
图3是本发明实施例3的原理框图。
具体实施方式
下面通过具体实施方式,对本发明的技术方案做进一步的详细描述。
实施例1
一种执行体调度清洗方法,如图2所示,包括以下步骤:选择一个在线执行体进行下线操作,在下线的执行体的所有任务均执行完成后对其进行清洗操作,同时从备选执行体集中选择一个新执行体上线。
具体的,当接收到异常执行体信息后,根据所述异常执行体信息判断相应的异常执行体是否处于在线服务状态,并在所述异常执行体处于在线服务状态时,选择所述异常执行体进行下线操作。
当接收到定时调度指令或手动调度指令后,选择服务时间最长的在线执行体进行下线操作。
在具体实施时,选择在线执行体后,为选择的待下线的执行体添加锁定标记,并在调度任务完成后清除锁定标记; 接收到新调度清洗任务后,根据所述锁定标记是否存在判断上一个调度清洗任务是否完成,当所述锁定标记存在则判断上一个调度清洗任务未完成,放弃所述新调度清洗任务;当所述锁定标记未存在则判断上一个调度清洗任务已完成,则执行所述新调度清洗任务。
当同一个执行体裁决错误导致调度;并且定时调度要调度这个执行体时,这两个模块都要向调度模块汇报。此时,调度模块先收到的请求会加上标记并被处理,后收到的请求会因为无法添加标记信息,从而放弃任务的执行,这样就可以避免两者的操作冲突。
通过检测执行体任务是否执行完成,能够保证定时调度、手动调度执行体或者根据异常情况调度执行体时不影响系统使用,且不会导致裁决器错误的上报异常执行体信息。且保证在OpenStack单任务多裁决特性下同一个异常执行体不会被多次清洗。
实施例2
本实施例提供一种调度清洗装置,包括调度器和执行体清洗服务模块,
所述调度器执行调度清洗任务时,选择一个在线执行体进行下线操作,向所述执行体清洗服务模块下发清洗指令,同时从备选执行体集中选择一个新执行体上线;
所述执行体清洗服务模块接收清洗指令后,在下线的执行体的所有任务均执行完成后对其进行清洗操作。
具体的,所述调度器包括裁决调度模块、调度指令输入接口、定时器和轮换调度模块,
所述裁决调度模块,用于接收异常执行体信息,并根据所述异常执行体信息判断相应的异常执行体是否处于在线服务状态,并在所述异常执行体处于在线服务状态时,选择所述异常执行体进行下线操作;
所述调度指令输入接口,用于接收外界发送的手动调度指令并发送给所述轮换调度模块;
所述定时器,用于在累计时长等于预设定时时长时生成定时调度指令发送给所述轮换调度模块;
所述轮换调度模块接收到所述手动调度指令或所述定时调度指令后,选择服务时间最长的在线执行体进行下线操作。
实施例3
本实施例还提供一种拟态OpenStack系统,如图3所示,包括实施例2所述的调度清洗装置,还包括分发器、消息缓存服务器、若干个OpenStack执行体以及裁决器;
所述分发器分别与所述消息缓存服务器和所述OpenStack执行体连接,用于在接收任务消息后生成任务标识,将所述任务标识、所述任务消息以及在线执行体信息组装并分发给所有在线OpenStack执行体;以及将所有在线服务体信息与所述任务标识结合生成键值对缓存到消息缓存服务器中,用于标识这个任务流用到哪些执行体,并在返回任务执行结果时清除键值对表示任务已经结束;
所述OpenStack执行体与所述裁决器连接,用于对所述任务消息进行处理,并将处理内容与所述分发器下发的在线执行体信息组装成待裁决消息发送给所述裁决器;
所述裁决器与所述调度清洗装置连接,用于对所述OpenStack执行体发送的待裁决消息进行裁决,识别出异常执行体并向所述调度清洗装置发送异常执行体信息;
所述调度清洗装置,与所述消息缓存服务器连接,用于在接收定时调度指令或手动调度指令或所述裁决器发送的异常执行体信息时,进行OpenStack执行体的上下线轮换操作,同时根据所述消息缓存服务器中的键值对判断新下线的OpenStack执行体的任务是否执行完成,并在执行完成后对新下线的OpenStack执行体进行清洗操作。
因为OpenStack的单一任务多个业务裁决操作的特性,当裁决器识别出某一个执行体业务出错时,就意味这个执行体这条任务之后的其他业务都要裁决出错。所以裁决器会多次向调度器上报这个异常执行体信息,调度器在收到异常执行体信息后先检查该执行体是否处于服务状态,如果处于服务状态向执行体清洗服务模块下发清洗指令,同时从备选执行体中选择一个上线以替换异常执行体,当执行体清洗服务在收到因裁决错误而清洗指令时,将异常执行体迅速清洗恢复。
由于Docker容器具有启动速度快,占用资源低等特点,所以拟态OpenStack选用Docker容器制作异构执行体。当对执行体进行清洗时,使用先停止容器,然后删除容器,再从镜像启动容器的方法,因为镜像的不可写特性保证每次执行体启动时都是全新且安全的。利用Docker容器启动速度快且镜像不可写的特性,完成对执行体的彻底清洗以及迅速上线操作。
在具体实施时,所述拟态OpenStack系统还包括执行体状态监控服务模块,所述执行体状态监控服务模块与所述调度清洗装置连接,用于向所述调度清洗装置返回所有OpenStack执行体的状态信息;所述调度清洗装置在接收到异常执行体信息后,根据所述执行体状态监控服务模块返回的所有OpenStack执行体的状态信息判断所述异常执行体是否处于在线服务状态;所述调度清洗装置接收到定时调度指令或手动调度指令后,选择服务时间最长的在线OpenStack执行体进行下线操作。
由于拟态OpenStack是单一任务都有多个业务需要进行裁决操作的装置,且每个任务执行时间在数秒以及数十秒之间,因此所述OpenStack执行体收到所述分发器下发的任务消息后,将所述分发器下发的任务标识作为主任务标识,然后根据业务处理流程和所述主任务标识生成副任务标识,将所述主任务标识与所述副任务标识组成唯一身份标识,保证每个要裁决消息都是唯一的。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制;尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者对部分技术特征进行等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的技术方案范围当中。
- 执行体调度清洗方法、调度清洗装置及拟态OpenStack系统
- 一种拟态路由器执行体调度方法和拟态路由器