首页 / 调度方法、调度装置和调度系统

调度方法、调度装置和调度系统有效专利 发明

技术领域

[0001] 本发明涉及计算机技术领域,具体涉及一种调度方法、调度装置和调度系统。

相关背景技术

[0002] 调度是一种向处理资源分配工作载荷的方式。在大规模的容器集群中,容器创建后需要进行选择一个合适的节点进行调度,从而在某个节点上创建成为容器。调度的时候需要考虑的是节点上已经分配了的容器和资源情况,以及剩余的资源情况,从而在集群中若干个节点上选择出一个合适的节点将容器分配过去。
[0003] 目前主流的调度方法是以kubernetes为典型的单体调度器。单体调度器是单个进程实体,进行调度决策并完成需要被调度的容器部署。为了调度任务的决策,单体调度器的一般工作流程为:
[0004] 1.获取待调度容器101;
[0005] 2.获取各个节点的资源信息,观察集群中各个节点资源的可用性(例如CPU、内存等);
[0006] 3.筛选符合该容器资源需求的节点,获得初选后的节点列表103;
[0007] 4.从筛选后的节点中对各个节点进行打分排序,获得节点排序后的列表104;
[0008] 5.根据排序结果调度容器,即将该容器调度至该节点105;
[0009] 6.更新节点信息中心106的可用资源。
[0010] 单体调度器的优势在于有效防止了资源信息冲突。因为只有一个调度器工作,因此该调度器获取的都是准确而有效的资源信息。而如果是多个调度器同时工作,就可能会发生调度器A将容器调度到了节点M上。而调度器B并没有及时获知该信息,从而误以为节点M有更多的资源。但是,单体调度器在同一时间只能一个在执行,从而限制了系统性能和任务吞吐量。由于只有单个的进程实例,因此当有大量容器同时等待被调度时,则会造成调度的平均调度时间被延长。假设容器a1,a2,a3…an。同时创建并等待被调度,假设每个调度的时间均为t,则a1调度时间为t,a2因为需要等待a1调度完毕才能调度,因此调度时间为2*t,而a3的调度为3*t,以此类推,那么an的调度时间为n*t。即将所有容器全部调度完毕需要的时间为n*t。而且随着同时等待调度容器数量n的增多,平均调度时间会增长。由于每次调度需要对所有节点进行计算,那么随着集群中节点数量的增加,调度的时间会更长。

具体实施方式

[0069] 以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。另外,本文中的第一、第二、……仅用于指示不同事物,而不用于指示重要性和/或优先级的区别。
[0070] 图2是本发明第一实施例的调度方法的流程图。具体包括以下步骤。
[0071] 在步骤S201中,并行多个第一类调度器,每个第一类调度器根据调度算法为待调度容器进行预调度,根据预调度结果生成第一列表。
[0072] 在步骤S202中,采用第二类调度器,采用一个第二类调度器,所述第二类调度器基于多个第一列表为待调度容器分配节点。
[0073] 为了解决背景技术中单体调度器在处理调度时,具有性能差、吞吐量低的缺点,在本发明实施例中,提供一种调度方法,该调度方法涉及多个第一类调度器和一个第二类调度器,每个第一类调度器接收待调度容器,为待调度容器按照调度算法进行预调度,所述预调度会进行节点筛选,将选出的至少一个节点组成第一列表,并传送给第二类调度器。第二类调度器执行实际调度,根据多个第一列表为待调度容器实际分配节点。
[0074] 在本发明实施例中,通过并行多个第一类调度器,将初步筛选节点的步骤放在第一类调度器中执行,从而提供了整体调度的性能,在预调度之后,再使用第二类调度器进行实际的调度,从而保证调度的准确性。
[0075] 图3是本发明第二实施例的调度方法的流程图。具体包括该调度方法涉及多个第一类调度器100、一个第二类调度器200和节点信息中心300。
[0076] 节点信息中心300存储多个节点的节点信息。节点信息中心300例如是一个全局的独立数据库,节点信息以数据表形式存储,其他节点能够通过用户名和密码登录并访问其中的节点信息。
[0077] 多个第一类调度器100分别接收待调度容器400,并从节点信息中心300获得实时节点信息,根据实时节点信息和调度算法对接收到的待调度容器进行预调度,根据预调度结果生成第一列表。
[0078] 在一个实施例中,如图所示,上述第一类调度器包括步骤S31-S35。
[0079] 在步骤S31中,接收待调度容器400。
[0080] 在步骤S32中,从节点信息中心300获取节点信息。
[0081] 在步骤S33中,根据节点信息筛选出符合该容器的资源需求的节点,获得初选后的节点列表101。
[0082] 在步骤S34中,对通过初选的各个节点进行打分,获得节点打分后的列表102中。
[0083] 在步骤S35中,将节点打分后的列表102传送给第二类调度器200。
[0084] 待调度容器容器的资源需求例如要求节点是2核处理器,空闲内存至少为2G,其上已经部署的容器不超过3个等等。在本实施例中,每接收到一个待调度容器,根据待调度容器的资源需求对所有的节点进行初步筛选,得到符合资源需求的节点列表101,根据对资源的满足程度对节点列表101中的每个节点进行打分,分值记录在输出的节点打分后的列表102中,并将列表102传送给第二类调度器200。
[0085] 在一个实施例中,如图所示,上述第二类调度器包括步骤S36-S41。
[0086] 在步骤S36中,获取打分后的节点列表和最新的节点信息。
[0087] 在步骤S37中,根据最新的节点信息,将列表中与最新节点信息一致的节点进入第二列表,不一致的进入第三列表。
[0088] 在步骤S38中,对第三列表中的节点进行初选,将通过初选的节点进入第四列表。
[0089] 在步骤S39中,对第四列表中的节点进行打分,并将分值记录在第四列表中。
[0090] 在步骤S40中,对第四列表和第二列表中的节点根据打分进行排序。
[0091] 在步骤S41中,根据排序结果选择调度节点并进行调度。
[0092] 在本实施例中,第二类调度器获取最新的节点信息,逐一处理每个接收到的列表,将列表中的节点信息和最新的节点信息逐一进行比较,将相同的节点信息放在第二列表中,将不同的节点信息放在第三列表中,并且对放在第三列表中的节点基于容器的资源需求重新进行筛选,将通过筛选的节点信息放在第四列表中,并对第四列表的每个节点重新进行打分,得到打分后的第四列表,将四列表和第二列表中的节点根据分值进行排序,并基于排序结果进行调度。例如,第四列表中包含节点node3,node1,node2,则进行调度包括:首先尝试将待调度容器分配到node3上,如果失败,则尝试将该容器分配到node1,如果失败,则尝试将该容器分配到node2。以此类推。如果一个容器在第四列表中的所有节点上都分配失败,则将其重新记录到待调度容器的列表中,等待重新分配节点。
[0093] 在一个实施例中,在执行完步骤S41之后,还包括步骤S42的更新相应节点的节点信息。例如,对于包含node3,node1,node2三个节点信息的列表,如果最后成功地将容器分配到节点node1上,则更新节点信息中心300上的node1的节点信息。
[0094] 应该理解,为待调度容器分配节点的调度算法主要包括两个部分,[0095] 节点初选和节点打分,节点初选是从所有节点中选出满足待调度容器的资源需求的节点列表,节点打分是对节点列表中的每个节点进行打分。在调度中对大量的节点进行筛选、打分会极为消耗时间。从而,本发明将节点初选和节点打分的步骤放在第一类调度器中并行实现,从而提高了系统性能和数据吞吐量。而在第二类调度器中,只需要重新计算少量的节点的筛选和打分,大大加快了调度的速度和并行度。
[0096] 假设容器a1,a2,a3…an。同时创建,等待被调度。而每个容器的预调度时间均为t。单体调度的时间为r。第一类调度器有n个。
[0097] 则对于a1来说,调度时间为t+r。对于a2来说,时间为t+2*r。对于an的调度时间为t+n*r。将n个容器全部调度完毕需要的时间为t+n*r。而由于相对来说,第二类调度器需要处理的计算量很小,因此所需的调度的时间r远远小于预调度的时间t。
[0098] 在实际的项目中,例如,以100个待调度容器同时进入调度队列,单个容器调度时间为200ms使用原先的单体调度器,则完成全部调度需要100*200=20000ms。而同样100个待调度容器同时进入调度队列,使用本方法假设第一类调度器为100个,单个待调度容器的预调度时间为200ms,单个待调度容器的汇总调度时间为50ms,则将100个容器全部调度完需要200+50*100=5200ms。(汇总调度中如果没有冲突,调度时间会在5ms内)。随着同时进入容器个数的增加,使用本方法后调度效率的提升将更为明显。
[0099] 由此可见,上述实施例可以有效提升调度器的整体性能和吞吐量。而且随着第一类调度器的数量的增加,调度的整体性能也会提升。第一类调度器的数量最大为同时创建的待调度容器的个数。
[0100] 当然,第一类调度器也可以只包含节点初选,节点打分部分放在第二类调度器中进行,或者,第二类调度器中也只将接收到的列表进行汇总而并不进行打分。
[0101] 在一个实施例中,多个第一类调度器输出的列表存储在先进先出的消息队列中。由此,第二类调度器从消息队列中顺序读一个列表并基于上述实施例进行处理。
[0102] 在一个实施例中,上述实施例中涉及的第一列表至第四列表包含的每个节点信息采用以下结构进行描述,见表格1。
[0103] 表格1
[0104]
[0105] 其中,Version为一个自增量。由此,第二类调度器对相应节点修改后,会将version的数值加1,则第二类调度器通过判断Version的数值能够判断出该节点信息是否有变化。例如,第一类调度器读取node10的节点信息时获得version为10,则第二类调度器读取最新的节点信息获得node10的version为12,则可以判断node10的节点信息在此期间进行了两次修改,即在此期间,有两次调度发生在node10上。可见,本发明实施例在节点信息中心中采用自增的版本号记录节点信息的更新次数,基于版本号进行节点信息是否更新的判断,能够简化该判断步骤,提高调度器的处理效率。
[0106] 图4是本发明第三实施例的调度系统的结构图。具体包括多个预调度节点402和汇总节点401。预调度节点402和汇总节点402通过局域网或者互联网连接。
[0107] 每个预调度节点402上部署有一个第一类调度器。第一类调度器从外部接收待调度容器,获得实时节点信息,根据实时节点信息对接收到的待调度容器进行预调度。
[0108] 汇总节点401上部署一个第二类调度器。所述第二类调度器从第一类调度器接收预调度结果,根据预调度结果实现真实的节点调度。
[0109] 在一个实施例中,每个第一类调度器402包括以下步骤:获取一个待调度容器和当前节点信息;根据当前节点信息为待调度容器获得初选节点列表;对初选节点列表中的节点进行打分获得第一列表,第一列表包括当前的节点信息。
[0110] 在一个实施例中,第二类调度器401包括以下步骤:获取最新的节点信息;判断最新的节点信息和第一列表包含的节点信息是否一致,并将信息一致的节点信息放在第二列表中,消息不一致的节点信息放在第三列表中;对第三列表中的节点信息进行初选,得到第四列表;对第四列表中的节点进行打分,并将打分结果记录在第四列表中;将第二列表和所述第四列表根据打分结果进行排序;以及根据排序结果进行节点分配。
[0111] 在一个实施例中,调度系统还包括一个节点信息中心,用于存储所有节点的节点信息。
[0112] 在一个实施例中,所述第二类调度器还包括:进行节点分配之后,更新相应节点的节点信息。
[0113] 图5是根据本发明实施例的调度仿真装置的结构图。图5示出的设备仅仅是一个示例,不应对本发明实施例的功能和使用范围构成任何限制。
[0114] 参考图5,该装置包括通过总线连接的处理器501、存储器502和输入输出设备503。存储器502包括只读存储器(ROM)和随机访问存储器(RAM),存储器502内存储有执行系统功能所需的各种计算机指令和数据,处理器501从存储器502中读取各种计算机指令以执行各种适当的动作和处理。输入输出设备包括键盘、鼠标等的输入部分;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分;包括硬盘等的存储部分;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分。存储器502还存储有以下的计算机指令以完成本发明实施例的装置规定的操作:并行多个第一类调度器,每个第一类调度器根据调度算法为待调度容器进行预调度,根据预调度结果生成第一列表;采用一个第二类调度器,所述第二类调度器基于多个第一列表为待调度容器分配节点。
[0115] 相应地,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令被执行时实现上述方法所规定的操作。
[0116] 附图中的流程图、框图图示了本发明实施例的系统、方法、装置的可能的体系框架、功能和操作,流程图和框图上的方框可以代表一个模块、程序段或仅仅是一段代码,所述模块、程序段和代码都是用来实现规定逻辑功能的可执行指令。也应当注意,所述实现规定逻辑功能的可执行指令可以重新组合,从而生成新的模块和程序段。因此附图的方框以及方框顺序只是用来更好的图示实施例的过程和步骤,而不应以此作为对发明本身的限制。
[0117] 系统的各个模块或单元可以通过硬件、固件或软件实现。软件例如包括采用JAVA、C/C++/C#、SQL等各种编程语言形成的编码程序。虽然在方法以及方法图例中给出本发明实施例的步骤以及步骤的顺序,但是所述步骤实现规定的逻辑功能的可执行指令可以重新组合,从而生成新的步骤。所述步骤的顺序也不应该仅仅局限于所述方法以及方法图例中的步骤顺序,可以根据功能的需要随时进行调整。例如将其特征在于的某些步骤并行或按照相反顺序执行。
[0118] 根据本发明的系统和方法可以部署在单个或多个服务器上。例如,可以将不同的模块分别部署在不同的服务器上,形成专用服务器。或者,可以在多个服务器上分布式部署相同的功能单元、模块或系统,以减轻负载压力。所述服务器包括但不限于在同一个局域网以及通过Internet连接的多个PC机、PC服务器、刀片机、超级计算机等。
[0119] 以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页 第1页 第2页 第3页