一种主机调度方法及系统与流程
未命名
10-09
阅读:139
评论:0

1.本技术涉及软件开发技术领域,具体涉及一种主机调度方法及系统。
背景技术:
2.在软件开发的持续集成过程中,jenkins(开源软件项目)等工具被广泛使用,但在某些特殊项目中需要使用自研芯片来支持任务,为保证任务环境可靠,所有任务在docker容器中运行,即将自研芯片挂载到docker容器内部供任务使用,但需要保证每次构建任务都能够使用到任务所依赖的芯片驱动程序版本,并且保证docker容器和宿主机驱动程序版本一致,否则将导致构建任务失败。
3.常规的做法是提前创建好不同芯片驱动程序版本的主机,即需要为各种版本的驱动程序各提前准备一台主机,并且在每台主机上为每个任务单独创建一个容器或镜像,每次构建任务根据依赖的驱动程序版本选择相应的容器来执行,这就要求主机数量足够多,显然这会造成极大的资源浪费;其次,当有新版本的驱动程序发布时,必须依靠人工及时增加新的主机安装芯片,装上新版本的驱动程序并且安装运行jenkins(开源软件项目)构建任务所必须依赖的运行环境。
4.在上述方案中,靠人工切换驱动程序版本的工作量较大,往往没法满足持续集成快速迭代的要求,影响软件发布效率。
技术实现要素:
5.本技术提供了一种主机调度方法及系统,实现自动化切换驱动程序版本,提高软件发布效率,所述技术方案如下。
6.一方面,提供了一种主机调度方法,所述方法应用于一种主机调度系统中,所述方法包括:
7.获取目标任务,并获取所述目标任务对应的任务创建信息;所述任务创建信息包括执行所述目标任务所需的驱动程序版本信息;
8.根据所述任务创建信息,获取与所述目标任务具有相同驱动程序版本的预选主机;
9.根据所述预选主机的主机设备信息,从所述预选主机中选择出所述目标任务相匹配的目标主机,以通过所述目标主机执行所述目标任务。
10.在一种可能的实施方式中,所述系统包括jenkins pipeline框架模块及主机调度模块;所述获取目标任务,并获取所述目标任务对应的任务创建信息,包括:
11.所述jenkins pipeline框架模块基于jenkins pipeline构建目标任务,并获取所述目标任务对应的任务创建信息,将所述任务创建信息发送至所述主机调度模块;所述任务创建信息还包括所述目标任务对应的任务标签及执行人信息。
12.在一种可能的实施方式中,所述主机调度模块采用golang语言,且基于gin框架实现。
13.在一种可能的实施方式中,所述根据所述任务创建信息,获取与所述目标任务具有相同驱动程序版本的预选主机,包括:
14.所述主机调度模块获取现有主机列表,并根据所述任务创建信息从所述现有主机列表中选取与所述目标任务具有相同驱动程序版本的预选主机。
15.在一种可能的实施方式中,所述主机调度模块获取现有主机列表,并根据所述任务创建信息从所述现有主机列表中选取与所述目标任务具有相同驱动程序版本的预选主机,包括:
16.当所述现有主机列表中没有与所述目标任务具有相同驱动程序版本的现有主机时,所述主机调度模块从满足目标分配规则的空闲主机中选取出预选主机。
17.在一种可能的实施方式中,在所述主机调度模块从满足目标分配规则的空闲主机中选取出预选主机之后,所述方法还包括:
18.所述主机调度模块在目标数据库中更新所述预选主机的驱动程序信息和任务占用信息。
19.在一种可能的实施方式中,在所述主机调度模块从满足目标分配规则的空闲主机中选取出预选主机之后,所述方法还包括:
20.所述主机调度模块在所述预选主机上安装与所述目标任务对应的驱动程序版本。
21.在一种可能的实施方式中,在所述目标主机执行所述目标任务之后,所述方法还包括:
22.对所述目标主机进行释放。
23.在一种可能的实施方式中,所述系统还包括前端显示页面;
24.所述前端显示页面,用于对各个主机的主机状态信息及驱动程序版本信息进行动态监控及显示。
25.又一方面,提供了一种主机调度系统,所述系统包括:jenkins pipeline框架模块、主机调度模块及前端显示页面;
26.所述jenkins pipeline框架模块,用于基于jenkins pipeline构建目标任务,并获取所述目标任务对应的任务创建信息,将所述任务创建信息发送至所述主机调度模块;所述任务创建信息包括执行所述目标任务所需的驱动程序版本信息;
27.所述主机调度模块,用于根据所述任务创建信息,获取与所述目标任务具有相同驱动程序版本的预选主机;
28.所述jenkins pipeline框架模块,还用于根据所述预选主机的主机设备信息,从所述预选主机中选择出所述目标任务相匹配的目标主机,以通过所述目标主机执行所述目标任务;
29.所述前端显示页面,用于对各个主机的主机状态信息及驱动程序版本信息进行动态监控及显示。
30.再一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现上述的一种主机调度方法。
31.又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述的一种主机调度方法。
32.再一方面,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质中读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机设备执行上述一种主机调度方法。
33.本技术提供的技术方案可以包括以下有益效果:
34.上述方案通过主机调度模块的gin框架提供接口,使用pipeline互斥功能避免资源竞争,能够根据每个任务所需的驱动程序版本信息,自动选择可用的主机并进行驱动程序版本的匹配,使得驱动程序版本管理变得更加智能化和自动化,完全无需人工干预,避免了手动更新驱动程序带来的繁琐工作,提高了任务执行的效率和稳定性,从而提高软件开发和测试的效率和准确性。
35.上述方案通过目标分配规则的设置,使得用户可以根据自身需求对主机的使用和分配进行更加细致和个性化的配置和控制,用户可以根据自己的实际情况,对哪些任务可以使用哪些主机、哪些任务不能同时运行在同一主机等方面进行自定义规则的设置,从而更加精细地管理和控制系统的运行和使用,具有更高的普适性和适应性,可以满足不同用户的不同需求和场景。
附图说明
36.为了更清楚地说明本技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1是根据一示例性实施例示出的一种主机调度系统的结构示意图。
38.图2是根据一示例性实施例示出的一种主机调度方法的方法流程图。
39.图3是根据一示例性实施例示出的一种主机调度方法的方法流程图。
40.图4是根据一示例性实施例示出的一种主机调度方法的方法流程图。
41.图5示出了本技术一示例性实施例示出的计算机设备的结构框图。
具体实施方式
42.下面将结合附图对本技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.应理解,在本技术的实施例中提到的“指示”可以是直接指示,也可以是间接指示,还可以是表示具有关联关系。举例说明,a指示b,可以表示a直接指示b,例如b可以通过a获取;也可以表示a间接指示b,例如a指示c,b可以通过c获取;还可以表示a和b之间具有关联关系。
44.在本技术实施例的描述中,术语“对应”可表示两者之间具有直接对应或间接对应的关系,也可以表示两者之间具有关联关系,也可以是指示与被指示、配置与被配置等关系。
45.本技术实施例中,“预定义”可以通过在设备(例如,包括终端设备和网络设备)中
预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本技术对于其具体的实现方式不做限定。
46.图1是根据一示例性实施例示出的一种主机调度系统的结构示意图。如图1所示,该系统包括:jenkins pipeline框架模块、主机调度模块及前端显示页面;
47.该jenkins pipeline框架模块,用于基于jenkins pipeline构建目标任务,并获取该目标任务对应的任务创建信息,将该任务创建信息发送至该主机调度模块;该任务创建信息包括执行该目标任务所需的驱动程序版本信息;
48.该主机调度模块,用于根据该任务创建信息,获取与该目标任务具有相同驱动程序版本的预选主机;
49.该jenkins pipeline框架模块,还用于根据该预选主机的主机设备信息,从该预选主机中选择出该目标任务相匹配的目标主机,以通过该目标主机执行该目标任务;
50.该前端显示页面,用于对各个主机的主机状态信息及驱动程序版本信息进行动态监控及显示。
51.可选的,该主机调度模块采用golang语言(一种静态强类型、编译型语言),且基于gin框架(使用go语言开发的web框架)实现,该主机调度模块统从该jenkins pipeline框架模块中接收到目标任务对应的任务创建信息,并根据任务创建信息进行主机的自动匹配和调度。
52.可选的,该jenkins pipeline框架模块调用该前端显示页面提供的api接口,从而将目标任务对应的任务创建信息发送到后端的主机调度模块中,并接收主机调度模块返回的预选主机的主机设备信息;在选择出相应的目标主机,并在目标任务执行结束后,再通知该主机调度模块,释放该目标主机。
53.可选的,为了方便展示和统筹,本技术还为主机调度系统设计了一个前端显示页面。该前端显示页面使用vue(一款用于构建用户界面的javascript框架)实现;该前端显示页面可以动态展示各个主机状态(是空闲还是有任务在运行中)、主机驱动程序版本等信息。
54.可选的,该前端显示页面上设置有可供用户配置的选项单元,例如主机管理、自定义分配规则等,以便用户能够对各个主机的使用和分配情况进行更加细致和个性化的配置和控制。
55.可选的,该前端显示页面还包括任务展示单元和查询功能单元,可用于查看到当前所有正在运行的任务信息(包括任务名称、提交人信息、依赖的驱动程序版本、运行任务的主机等),也可查看到已运行结束任务的状态(成功、失败、不稳定、中断)。
56.可选的,该前端显示页面还包括全面数据统计功能单元,方便团队对资源进行更加合理的分配,也方便随时掌握各项目组代码提交情况从而进行更加合理的人员安排,该全面数据统计功能单元可以包括:
57.a)任务趋势子单元:可查看每天、每月、每年、每小时的任务提交数量。
58.b)任务数量统计子单元:可查看各项目组、各员工每天提交代码情况。
59.c)驱动程序使用情况统计子单元:查看各个驱动程序版本的使用情况。
60.d)任务时长子单元:查看各jenkins pipeline的平均任务时长,方便效能人员对任务进行针对性的优化。
61.通过对接口的监听,实现任务排队情况的统计;当资源不足时(任务太多,所有服务器繁忙),新运行的任务将进入排队状态,每3秒轮询一次主机状态,当出现可用节点时,再优先将资源分配给最先进入排队状态的任务,确保在ci/cd任务数量巨大的情况下所有任务都能有序运行;其中,ci为持续集成(continuous intergration);cd为持续部署(continuous deployment)。
62.综上所述,上述方案通过主机调度模块的gin框架提供接口,使用pipeline互斥功能避免资源竞争,能够根据每个任务所需的驱动程序版本信息,自动选择可用的主机并进行驱动程序版本的匹配,使得驱动程序版本管理变得更加智能化和自动化,完全无需人工干预,避免了手动更新驱动程序带来的繁琐工作,提高了任务执行的效率和稳定性,从而提高软件开发和测试的效率和准确性。
63.图2是根据一示例性实施例示出的一种主机调度方法的方法流程图。该方法应用于一种主机调度系统中,该主机调度系统可以是如图1中所示的主机调度系统。如图2所示,该方法可以包括如下步骤:
64.步骤s201、获取目标任务,并获取该目标任务对应的任务创建信息;该任务创建信息包括执行该目标任务所需的驱动程序版本信息。
65.在一种可能的实施方式中,当执行目标任务时,需要对具有目标任务所需的驱动程序版本的主机进行调度,以通过该主机执行该目标任务;因此,在对具有目标任务所需的驱动程序版本的主机进行调度时,需要获取该目标任务对应的任务创建信息,该任务创建信息应至少包括该目标任务所需的驱动程序版本信息,从而使得可以根据该任务创建信息中的驱动程序版本信息,获取与该目标任务具有相同驱动程序版本的预选主机,在从该预选主机中选择出目标主机,以通过该目标主机执行该目标任务。
66.示例性的,该目标任务可以是拼接编译节点、编译、单测、覆盖率扫描等。其中,编译:是指将开发人员提交的源代码编译成可执行的二进制文件;拼接编译节点:例如主机调度模块将该目标任务分配到2号主机运行,则通过字符串拼接的方式,拼接出“build_node_2”,“build_node_2”则为2号主机上创建的一个docker容器,该目标任务就会在“build_node_2”这个容器里运行。运行的任务内容则包括编译、单测(单元测试的缩写,指对软件中的最小可测试单元进行检查和验证)、覆盖率扫描(指覆盖率检测,为了确保单元测试的测试用例足够覆盖到足够多的源代码,需要在每次任务中检测单元测试覆盖率)、代码静态检测等。
67.步骤s202、根据该任务创建信息,获取与该目标任务具有相同驱动程序版本的预选主机。
68.在一种可能的实施方式中,由于该任务创建信息中至少包括该目标任务所需的驱动程序版本信息,因此,可以根据该任务创建信息中的驱动程序版本信息,获取与该目标任务具有相同驱动程序版本的预选主机,该预选主机的选择条件就是与该目标任务具有相同驱动程序版本。
69.可选的,为了保证稳定执行该目标任务,该预选主机还应该是没有被独占,并且允许并行的主机。
70.步骤s203、根据该预选主机的主机设备信息,从该预选主机中选择出该目标任务相匹配的目标主机,以通过该目标主机执行该目标任务。
71.在一种可能的实施方式中,在选择出与该目标任务具有相同驱动程序版本的预选主机后,需要获取该预选主机的主机设备信息,根据该预选主机的主机设备信息,确定该预选主机是否可以作为与该目标任务相匹配的目标主机,如果该预选主机不符合要求,就对下一个预选主机进行判别,直至选择出符合要求的目标主机,以保证可以通过该目标主机执行该目标任务。
72.综上所述,上述方案通过主机调度模块的gin框架提供接口,使用pipeline互斥功能避免资源竞争,能够根据每个任务所需的驱动程序版本信息,自动选择可用的主机并进行驱动程序版本的匹配,使得驱动程序版本管理变得更加智能化和自动化,完全无需人工干预,避免了手动更新驱动程序带来的繁琐工作,提高了任务执行的效率和稳定性,从而提高软件开发和测试的效率和准确性。
73.图3是根据一示例性实施例示出的一种主机调度方法的方法流程图。该方法应用于一种主机调度系统中,该主机调度系统可以是如图1中所示的主机调度系统。该系统包括jenkins pipeline框架模块及主机调度模块;如图3所示,该方法可以包括如下步骤:
74.步骤s301、jenkins pipeline框架模块基于jenkins pipeline构建目标任务,并获取该目标任务对应的任务创建信息,将该任务创建信息发送至该主机调度模块;该任务创建信息包括执行该目标任务所需的驱动程序版本信息。
75.在一种可能的实施方式中,该主机调度模块采用golang语言,且基于gin框架实现。本实施例通过主机调度模块的gin框架提供接口,使用pipeline互斥功能避免资源竞争,也避免因多个任务同时申请主机导致的主机状态异常和任务失败。
76.进一步的,该任务创建信息还包括该目标任务对应的任务标签(build_tag)及执行人信息(owner);请参照图4示出的一种主机调度方法的方法流程图;首先,目标任务放在该jenkins pipeline框架模块中进行构建,该主机调度模块从jenkins pipeline框架模块中接收到该目标任务对应的任务标签(build_tag)、执行人信息、执行该目标任务所需的驱动程序版本信息等信息,并根据这些信息进行主机的自动匹配和调度;或者,在该jenkins pipeline框架模块中调用前端提供的api接口,将该目标任务对应的任务标签(build_tag)、执行人信息、执行该目标任务所需的驱动程序版本信息等信息发送到后端的主机调度模块中,并接收后端返回的主机设备信息。
77.其中,任务标签(build_tag)可以理解为该任务的全名,例如某个pipeline名为“pipeline_test”,则首次运行该任务时,build_tag为“pipeline_test-1”,第二次运行该任务时,build_tag为“pipeline_test-2”。
78.步骤s302、该主机调度模块获取现有主机列表,并根据该任务创建信息及目标分配规则从该现有主机列表中选取与该目标任务具有相同驱动程序版本的预选主机。
79.在一种可能的实施方式中,在该主机调度模块进行主机的自动匹配和调度时,该主机调度模块需要先查询现有主机列表,根据预设的目标分配规则找到一个相同驱动版本的现有主机,并且该现有主机是没有被独占,并且允许并行的主机;此时,将该的主机设备信息返回给该jenkins pipeline框架模块,该主机设备信息包括该预选主机的主机号和主机类型。
80.该目标分配规则可根据实际需要进行设置,示例性的,规则1:当任务名称包含test_task时,只能使用3号和4号主机。也就是说,配置了规则1后,即使有其他空闲主机满
足驱动版本一致的条件,test_task-1这个任务只能被分配到3号和4号主机。
81.规则2:当任务名称包含test_primary_task时,不能使用4号主机。也就是说,配置了规则2后,test_primary_task-2这个任务不能被分配到4号主机。
82.规则3:任务test_op_task、test_dn_task不能同时运行在同一主机。也就是说,配置了规则3后,如果test_op_task-1已经在2号主机上运行,则所有任务名包含test_dn_task的任务都不能再被分配到2号主机运行,直至test_op_task-1运行结束。
83.规则4:当任务驱动程序版本为:0.10.0时,只能使用8号主机。也就是说,配置了规则4后,如果某个任务需要依赖的驱动版本为0.10.0,则这个任务只能被分配到8号主机,如果8号主机正被其他任务独占,则会排队等待其他任务结束。
84.进一步的,主机调度模块在实现调度过程中,会限制多个任务在同一主机运行,例如任务a和任务b都会用到同一个文件,为了避免2个任务同时对文件进行读写造成混乱,可通过pipeline互斥功能限制,当任务a在2号主机上运行时,任务b只能被分配到其他主机。因此,在根据预设的目标分配规则选择具有相同驱动版本的现有主机时,被选择的现有主机是没有被独占,并且允许并行的主机。
85.步骤s303、当该现有主机列表中没有与该目标任务具有相同驱动程序版本的现有主机时,该主机调度模块从满足该目标分配规则的空闲主机中选取出预选主机。
86.在一种可能的实施方式中,在该主机调度模块从满足目标分配规则的空闲主机中选取出预选主机之后,该主机调度模块还需要在目标数据库中更新该预选主机的驱动程序信息和任务占用信息;此外,该主机调度模块在该预选主机上安装与该目标任务对应的驱动程序版本。
87.进一步的,如果没有满足条件的现有主机,将会从满足目标分配规则的空闲主机中选择一台,作为预选主机,并将其主机设备信息返回给jenkins pipeline框架模块,并在目标数据库中更新该预选主机的驱动程序信息和任务占用信息,将该预选主机标记为使用中。如果也没有符合条件的空闲主机,如图4所示,返回主机号0,表示暂无可用的主机。
88.进一步的,当该jenkins pipeline框架模块获取到该主机调度模块返回的预选主机的主机设备信息后,解析平台的响应结果,从而判断该预选主机中是否有可用的主机号,如果没有可用的主机号则等待目标时间(示例性的,该目标时间可以为10秒),再次通过主机调度模块进行主机的调度,直至得到可用的主机号(host-id),在得到可用的主机号后,确定该预选主机为目标主机,对该目标主机的主机类型(host-type)进行判断,确定该目标主机是否需要重新安装驱动程序(如果是具有与目标任务相同驱动程序版本的主机,则不需要重新安装;如果是空闲主机,则先安装需要的驱动程序版本),安装完成后即可通过该目标主机执行该目标任务,该目标任务可以是图4中的拼接编译节点、编译、单侧、覆盖率等。
89.进一步的,pipeline和主机调度模块可以通过超文本传输协议(hyper text transfer protocol,http)通信,其响应结果为一个json字符串,json(javascript object notation,js对象简谱),其格式为:{"code":1000,"host_id":2,"host_type":1},其中,code 1000表示分配成功,host_id 2表示分配到2号主机,host_type 1表示主机类型1是相同驱动版本的主机,2是空闲的主机。因此,解析平台的响应结果,就可以判断出该预选主机中是否有可用的主机号。
90.进一步的,该可用的主机号可以根据需要进行设置,示例性的,可用的主机号是指不为0的主机号,如果是0,则表示没有可用的主机号,其他数字表示可以直接用,例如数字1,表示1号主机,数字2表示2号主机。
91.步骤s304、该jenkins pipeline框架模块根据该预选主机的主机设备信息,从该预选主机中选择出该目标任务相匹配的目标主机,以通过该目标主机执行该目标任务。
92.在一种可能的实施方式中,在该目标主机执行完该目标任务之后,对该目标主机进行释放。
93.进一步的,在该目标主机执行完相应的目标任务后,即图4中的post阶段,该jenkins pipeline框架模块再通知主机调度模块,使该主机调度模块基于任务标签(build_tag)及执行结果(result)释放该目标主机。
94.进一步的,可以通过curl(一种文件传输工具)命令向主机调度模块发送http请求来分配主机,这个curl的过程中每个pipeline都要重复写,此时,就可以将其写到jenkins共享库中。可以将一些经常需要重复使用的步骤写进该jenkins共享库中,下次使用时直接引用(类似函数调用),避免每次都重新写,提高效率。
95.进一步的,为了方便展示和统筹,在该主机调度系统中还包括前端显示页面,在进行主机调度时,通过该前端显示页面对各个主机的主机状态信息及驱动程序版本信息进行动态监控及显示。该前端显示页面使用vue(一款用于构建用户界面的javascript框架)实现,动态展示主机状态(是空闲还是有任务在运行中)、主机驱动程序版本等信息。同时,该前端显示页面提供一些可供用户配置的选项,例如主机管理、自定义分配规则等,以便用户能够对主机的使用和分配进行更加细致和个性化的配置和控制。
96.进一步的,当目标任务出现异常时,若该前端显示页面没有及时更新数据,可能会导致主机一直被占用,此时可通过手动停止任务的方式及时释放主机。
97.综上所述,上述方案通过主机调度模块的gin框架提供接口,使用pipeline互斥功能避免资源竞争,能够根据每个任务所需的驱动程序版本信息,自动选择可用的主机并进行驱动程序版本的匹配,使得驱动程序版本管理变得更加智能化和自动化,完全无需人工干预,避免了手动更新驱动程序带来的繁琐工作,提高了任务执行的效率和稳定性,从而提高软件开发和测试的效率和准确性。
98.上述方案通过目标分配规则的设置,使得用户可以根据自身需求对主机的使用和分配进行更加细致和个性化的配置和控制,用户可以根据自己的实际情况,对哪些任务可以使用哪些主机、哪些任务不能同时运行在同一主机等方面进行自定义规则的设置,从而更加精细地管理和控制系统的运行和使用,具有更高的普适性和适应性,可以满足不同用户的不同需求和场景。
99.上述方案使用jenkins共享库完成目标主机获取和主机的驱动程序版本更新功能,避免多个任务需要编写重复的脚本。
100.上述方案使用灵活的规则配置功能,可根据jenkins pipeline构建的目标任务及其驱动程序版本信息分配不同主机,通过多种方式限制主机并行,可轻松应对各种复杂的研发测试环境。
101.上述方案提供pipeline互斥功能,可限制一个或多个由jenkins pipeline构建的任务在同一主机并行,此功能可避免运行在同一容器的任务相互影响,导致任务失败。
102.请参阅图5,其是根据本技术一示例性实施例提供的一种计算机设备示意图,所述计算机设备包括存储器和处理器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的一种主机调度方法。
103.其中,处理器可以为中央处理器(central processing unit,cpu)。处理器还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
104.存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本技术实施方式中的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施方式中的方法。
105.存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
106.在一示例性实施例中,还提供了一种计算机可读存储介质,用于存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行以实现上述方法中的全部或部分步骤。例如,该计算机可读存储介质可以是只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、只读光盘(compact disc read-only memory,cd-rom)、磁带、软盘和光数据存储设备等。
107.本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求指出。
108.应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求来限制。
技术特征:
1.一种主机调度方法,其特征在于,所述方法应用于一种主机调度系统中,所述方法包括:获取目标任务,并获取所述目标任务对应的任务创建信息;所述任务创建信息包括执行所述目标任务所需的驱动程序版本信息;根据所述任务创建信息,获取与所述目标任务具有相同驱动程序版本的预选主机;根据所述预选主机的主机设备信息,从所述预选主机中选择出所述目标任务相匹配的目标主机,以通过所述目标主机执行所述目标任务。2.根据权利要求1所述的方法,其特征在于,所述系统包括jenkins pipeline框架模块及主机调度模块;所述获取目标任务,并获取所述目标任务对应的任务创建信息,包括:所述jenkins pipeline框架模块基于jenkins pipeline构建目标任务,并获取所述目标任务对应的任务创建信息,将所述任务创建信息发送至所述主机调度模块;所述任务创建信息还包括所述目标任务对应的任务标签及执行人信息。3.根据权利要求2所述的方法,其特征在于,所述主机调度模块采用golang语言,且基于gin框架实现。4.根据权利要求3所述的方法,其特征在于,所述根据所述任务创建信息,获取与所述目标任务具有相同驱动程序版本的预选主机,包括:所述主机调度模块获取现有主机列表,并根据所述任务创建信息及目标分配规则从所述现有主机列表中选取与所述目标任务具有相同驱动程序版本的预选主机。5.根据权利要求4所述的方法,其特征在于,所述主机调度模块获取现有主机列表,并根据所述任务创建信息及目标分配规则从所述现有主机列表中选取与所述目标任务具有相同驱动程序版本的预选主机,包括:当所述现有主机列表中没有与所述目标任务具有相同驱动程序版本的现有主机时,所述主机调度模块从满足所述目标分配规则的空闲主机中选取出预选主机。6.根据权利要求5所述的方法,其特征在于,在所述主机调度模块从满足目标分配规则的空闲主机中选取出预选主机之后,所述方法还包括:所述主机调度模块在目标数据库中更新所述预选主机的驱动程序信息和任务占用信息。7.根据权利要求5或6所述的方法,其特征在于,在所述主机调度模块从满足目标分配规则的空闲主机中选取出预选主机之后,所述方法还包括:所述主机调度模块在所述预选主机上安装与所述目标任务对应的驱动程序版本。8.根据权利要求1所述的方法,其特征在于,在所述目标主机执行所述目标任务之后,所述方法还包括:对所述目标主机进行释放。9.根据权利要求1所述的方法,其特征在于,所述系统还包括前端显示页面;所述前端显示页面,用于对各个主机的主机状态信息及驱动程序版本信息进行动态监控及显示。10.一种主机调度系统,其特征在于,所述系统包括:jenkins pipeline框架模块、主机调度模块及前端显示页面;所述jenkins pipeline框架模块,用于基于jenkins pipeline构建目标任务,并获取
所述目标任务对应的任务创建信息,将所述任务创建信息发送至所述主机调度模块;所述任务创建信息包括执行所述目标任务所需的驱动程序版本信息;所述主机调度模块,用于根据所述任务创建信息,获取与所述目标任务具有相同驱动程序版本的预选主机;所述jenkins pipeline框架模块,还用于根据所述预选主机的主机设备信息,从所述预选主机中选择出所述目标任务相匹配的目标主机,以通过所述目标主机执行所述目标任务;所述前端显示页面,用于对各个主机的主机状态信息及驱动程序版本信息进行动态监控及显示。
技术总结
本申请提供了一种主机调度方法及系统,该方法包括:获取目标任务,并获取该目标任务对应的任务创建信息;根据该任务创建信息,获取与该目标任务具有相同驱动程序版本的预选主机;根据该预选主机的主机设备信息和该预选主机的驱动程序版本信息,从该预选主机中选择出该目标任务相匹配的目标主机,以使该目标主机执行该目标任务。上述方案能够自动选择可用的主机并进行驱动程序版本的匹配,使得驱动程序版本管理变得更加智能化和自动化,完全无需人工干预,避免了手动更新驱动程序带来的繁琐工作,提高了任务执行的效率和稳定性。提高了任务执行的效率和稳定性。提高了任务执行的效率和稳定性。
技术研发人员:赵玲 赵磊 周诚淇 杨嘉晨 赵怡婷 吕金花 夏锦春
受保护的技术使用者:太初(无锡)电子科技有限公司
技术研发日:2023.05.25
技术公布日:2023/10/8

版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/