CN112783613B - 一种单元调度的方法和装置 - Google Patents

一种单元调度的方法和装置 Download PDF

Info

Publication number
CN112783613B
CN112783613B CN201911083580.4A CN201911083580A CN112783613B CN 112783613 B CN112783613 B CN 112783613B CN 201911083580 A CN201911083580 A CN 201911083580A CN 112783613 B CN112783613 B CN 112783613B
Authority
CN
China
Prior art keywords
scheduling
transaction
node
scheduled
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911083580.4A
Other languages
English (en)
Other versions
CN112783613A (zh
Inventor
韩利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Wodong Tianjun Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201911083580.4A priority Critical patent/CN112783613B/zh
Publication of CN112783613A publication Critical patent/CN112783613A/zh
Application granted granted Critical
Publication of CN112783613B publication Critical patent/CN112783613B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

本发明公开了一种单元调度的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:获取待调度单元,并为待调度单元创建调度事务;通过执行调度事务来获取待调度单元的待绑定节点,并提交调度事务,其中,执行调度事务来获取待调度单元的待绑定节点包括:在调度事务内执行调度流程以获取待调度单元对应的候选节点集合;依次对候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,判断包括判断候选节点在调度事务的执行过程中是否发生变更,若未发生变更,则将候选节点作为待绑定节点;将待调度单元与待绑定节点进行绑定以完成单元调度。该实施方式实现了对计算单元的事务型并行调度,使得系统整体调度性能得到了大幅提升。

Description

一种单元调度的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种单元调度的方法和装置。
背景技术
在kubernetes(kubernetes:是一个开源的容器编排系统)系统中,目前调度器执行的是串行调度的算法。在调度过程中,调度器首先从调度队列中取出一个待调度的Pod(是kubernetes系统中,最小粒度的调度计算单元,Pod中可运行计算程序),根据Pod所申请的资源量以及调度时的一些限制,首先去筛选出一批满足调度条件的、可调度的计算节点(计算节点:是指一台物理机或者虚拟机,通过部署一个kubernetes的代理agent,可以在其上运行Pod计算单元),然后根据这些可调度计算节点的资源剩余量、Pod均衡程度(指的是各个计算节点上部署的Pod计算单元的资源消耗的均衡程度)等因素,对这些计算节点进行一个综合打分,最终,选择出分数最高的计算节点作为该Pod目标调度的计算节点,将该计算节点与Pod进行绑定之后,再调度下一个Pod。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有的对Pod计算单元的调度方案为一种串行调度算法,每次调度一个Pod,调度器的调度速度受限于单个Pod的调度时间,如果调度过程中有一个Pod的调度耗时比较长,则会影响到Kubernetes集群的后续调度,导致Kubernetes整体的调度性能较差。
发明内容
有鉴于此,本发明实施例提供一种单元调度的方法和装置,能够实现对计算单元的事务型并行调度,使得Kubernetes的整体调度性能得到了大幅提升。
为实现上述目的,根据本发明实施例的一个方面,提供了一种单元调度的方法。
一种单元调度的方法,包括:获取待调度单元,并为所述待调度单元创建调度事务;通过执行所述调度事务来获取所述待调度单元的待绑定节点,并提交所述调度事务,其中,执行所述调度事务来获取所述待调度单元的待绑定节点包括:在所述调度事务内执行调度流程以获取所述待调度单元对应的候选节点集合;依次对所述候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,所述判断包括判断所述候选节点在所述调度事务的执行过程中是否发生变更,若未发生变更,则将所述候选节点作为待绑定节点;将所述待调度单元与所述待绑定节点进行绑定以完成单元调度。
可选地,判断所述候选节点在所述调度事务的执行过程中是否发生变更包括:获取所述候选节点的版本号以及所述调度事务的开始标识,所述版本号和所述开始标识为单调递增序列;若所述候选节点的版本号大于所述调度事务的开始标识,则所述候选节点在所述调度事务的执行过程中已发生变更;否则,所述候选节点在所述调度事务的执行过程中未发生变更。
可选地,提交所述调度事务包括:使用所述调度事务的提交标识来变更所述候选节点的版本号。
可选地,所述候选节点的版本号以及所述调度事务的开始标识和提交标识为通过计数器生成的单调递增的数字序列,或通过时间序列生成器生成的单调递增的时间序列。
可选地,还包括:若获取的候选节点集合为空,则所述单元调度失败;若对所述候选节点集合中的每个候选节点都进行判断后仍未能获取待绑定节点,则所述单元调度失败。
根据本发明实施例的另一方面,提供了一种单元调度的装置。
一种单元调度的装置,包括:事务创建模块,用于获取待调度单元,并为所述待调度单元创建调度事务;事务处理模块,用于通过执行所述调度事务来获取所述待调度单元的待绑定节点,并提交所述调度事务,其中,执行所述调度事务来获取所述待调度单元的待绑定节点包括:在所述调度事务内执行调度流程以获取所述待调度单元对应的候选节点集合;依次对所述候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,所述判断包括判断所述候选节点在所述调度事务的执行过程中是否发生变更,若未发生变更,则将所述候选节点作为待绑定节点;调度绑定模块,用于将所述待调度单元与所述待绑定节点进行绑定以完成单元调度。
可选地,所述事务处理模块还用于:获取所述候选节点的版本号以及所述调度事务的开始标识,所述版本号和所述开始标识为单调递增序列;若所述候选节点的版本号大于所述调度事务的开始标识,则所述候选节点在所述调度事务的执行过程中已发生变更;否则,所述候选节点在所述调度事务的执行过程中未发生变更。
可选地,所述事务处理模块还用于:使用所述调度事务的提交标识来变更所述候选节点的版本号。
可选地,所述候选节点的版本号以及所述调度事务的开始标识和提交标识为通过计数器生成的单调递增的数字序列,或通过时间序列生成器生成的单调递增的时间序列。
可选地,还包括调度判定模块,用于:若获取的候选节点集合为空,则所述单元调度失败;若对所述候选节点集合中的每个候选节点都进行判断后仍未能获取待绑定节点,则所述单元调度失败。
根据本发明实施例的又一方面,提供了一种单元调度的电子设备。
一种单元调度的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例所提供的单元调度的方法。
根据本发明实施例的再一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例所提供的单元调度的方法。
上述发明中的一个实施例具有如下优点或有益效果:通过获取待调度单元,并为待调度单元创建调度事务;通过执行调度事务来获取待调度单元的待绑定节点,并提交调度事务,其中,执行调度事务来获取待调度单元的待绑定节点包括:在调度事务内执行调度流程以获取待调度单元对应的候选节点集合;依次对候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,判断包括判断候选节点在调度事务的执行过程中是否发生变更,若未发生变更,则将候选节点作为待绑定节点;将待调度单元与所述待绑定节点进行绑定以完成单元调度,实现了基于事务进行计算单元的调度,并在事务提交时,基于事务对即将绑定的候选计算节点进行冲突监测,避免了多个并行调度的计算单元被同时调度到同一个计算节点上的可能,从而实现了对计算单元的事务型并行调度,使得Kubernetes的整体调度性能得到了大幅提升。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的单元调度的方法的主要步骤示意图;
图2是本发明第一实施例的对一个计算单元进行调度的流程示意图;
图3是本发明第二实施例的对多个计算单元进行并行调度的流程示意图;
图4是根据本发明实施例的单元调度的装置的主要模块示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
为了在不影响现有调度策略及公平性的前提下,提高Kubernetes集群的调度速度,本发明将数据库系统中的事务处理引入到调度系统中,将针对单个计算单元Pod的调度当做一次事务处理,并将事务处理并行化。在并行调度结束时,如果同时存在多个调度结束的事务,在事务提交时,也就是将Pod与计算节点进行绑定时,会进行事务的冲突监测。这里的事务冲突主要是指,在同一时间有多个Pod被调度到同一个计算节点上去。如果不进行冲突检测,所有Pod都与同一个计算节点绑定成功,则很有可能会有部分Pod在实际运行过程中会因为缺少资源(计算节点资源不足)而无法启动,此时就需要重新创建一个Pod来弥补这个运行失败的Pod,极大地浪费系统资源,影响了调度效率。本发明在事务型并行调度策略下,Kubernetes的整体调度速度可以得到大幅提升。
图1是根据本发明实施例的单元调度的方法的主要步骤示意图。如图1所示,本发明实施例的单元调度的方法主要包括如下的步骤S101至步骤S103。
步骤S101:获取待调度单元,并为待调度单元创建调度事务;
步骤S102:通过执行调度事务来获取待调度单元的待绑定节点,并提交调度事务,其中,执行调度事务来获取待调度单元的待绑定节点包括:在调度事务内执行调度流程以获取待调度单元对应的候选节点集合;依次对候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,判断包括判断候选节点在调度事务的执行过程中是否发生变更,若未发生变更,则将候选节点作为待绑定节点;
步骤S103:将待调度单元与待绑定节点进行绑定以完成单元调度。
本发明通过为待调度单元创建调度事务,并在事务内进行调度处理,可以避免使用锁来进行计算节点的资源调度,使得Kubernetes的整体调度性能得到了很大的提升。
根据本发明的实施例,在判断候选节点在调度事务的执行过程中是否发生变更时,例如可以是通过以下方式来实现的:
获取候选节点的版本号以及调度事务的开始标识,版本号和开始标识为单调递增序列;
若候选节点的版本号大于调度事务的开始标识,则候选节点在调度事务的执行过程中已发生变更;
否则,候选节点在调度事务的执行过程中未发生变更。
根据本发明的实施例,提交调度事务时,具体可以是:使用调度事务的提交标识来变更候选节点的版本号。其中,候选节点的版本号以及调度事务的开始标识和提交标识为通过计数器生成的单调递增的数字序列,或通过时间序列生成器生成的单调递增的时间序列。
根据本发明的其他实施例,若获取的候选节点集合为空,则单元调度失败;以及,若对候选节点集合中的每个候选节点都进行判断后仍未能获取待绑定节点,则单元调度失败。
在本发明的一个实施例中,在Kubernetes的调度器中实现了一个基于内存的事务型Key-Value数据库,Key-Value数据库中的每个Key都支持一个版本号。并在该事务内实现一个单调递增的时间序列生成器,该生成器保证所生成的时间序列是单调递增的。其中,在Kubernetes的调度器中实现一个基于内存的事务型Key-Value数据库,具体实现过程如下:
首先,如果将数据库抽象为一种数据存取的能力,那么要实现一个简单的数据库,只需要实现两种最简单的能力,存储与读取。使用golang语言定义的话,可以按如下方式表述:
即:通过实现上述接口的能力,就可以实现一个简单的数据库,可以存储<key,value>类型的数据对,并根据key获取value。本发明中所实现的数据库其数据是被存储在内存中的。
其次,通过对上述的数据库接口进行扩展,为每条数据对添加一个版本号的元数据。代码例如是:
即:每次存储一个<key,value>数据对时,都会为该key指定一个版本号。例如,对key=“abc”进行了两次存储,第一次存储为:key=“abc”,version=1,value=“xxx”;第二次存储为:key=“abc”,version=2,value=“xxx”。其中,version即为key的版本号。本发明的实施例中使用微秒级的时间戳作为key的版本号。在进行事务的冲突监测时即是使用key的版本号来进行的。
由于计算节点的时钟可能是不准确的,一般都有网络校时程序在不断的与一个时间服务器进行时间校准。如果在校准时,本地计算节点上的时间是超前的,则会根据远程时间服务器上的时间重新设置本地计算节点上的时间。此时时间就会发生回退。譬如,本地时间为103,而远程服务器上的时间为100,时间校准程序就会把本地时间重置为100,本地时间就会发生时间回退,从103回退到100。这样产生的一个问题就是,之前使用过的100,101,102,103等时间戳,在发生时间回退时,会再次出现,不能保证单调递增。这样对于事务的准确性产生影响。
如果在程序运行过程中,计算节点的时钟被修改发生时间回退,则时间序列生成器会根据情况进行处理,具体是根据回退时长来判断,如果回退时长较短,如在1秒以内,则时间序列生成器会等待与回退时长相等的时间(1秒钟)后,重新生成一个递增的时间序列;如果回退时长较长(如超过1秒),则会抛出异常,导致整个调度程序退出,此时该调度程序负责的调度任务会被其他备份的调度程序接管。在实际运行过程中,因为调度程序所在的服务器上一般都由crond(一种定时同步服务器时间的程序)进行时间微调,如果发生时间回退,最多只需要等待200ms左右就可以重新生成递增的时间序列。该时间序列会被用作事务ID及Key-Value数据库中的数据记录版本号。
在调度过程中,将每一个计算节点的ID作为Key,Value为空值。在调度一个Pod时,启动一个事务,当调度一个Pod到一台计算节点上时,将该计算节点对应的Key-Value数据对在事务中进行更新,如果更新成功,则说明该计算节点在本次调度过程中,并没有其他Pod被调度上来,可以将这个Pod安全的调度到这台计算节点上。如果更新失败,则说明该计算节点在本次调度过程中,已经有其他Pod被调度到该计算节点上了,当前所调度的Pod不能被调度到这个计算节点上了。
由于本发明使用带有版本号的key-value类型数据库进行数据存储,要更新的是在调度中选出来的可用计算节点的key-value版本号。事务开始时,记录开始时的时间戳,开始进行调度处理,在选出一个候选的计算节点后,根据该计算节点的ID(即:Key)来更新数据库中对应数据记录的版本号,也即是进行事务提交。
图2是本发明第一实施例的对一个计算单元进行调度的流程示意图。如图2所示,在对一个计算单元Pod进行调度时,主要包括以下步骤:1、调度器从调度队列中取出一个待调度的Pod;
2、调度器向事务管理器申请开始一个事务;
3、事务管理器向时间序列生成器申请一个当前时间的时间序列,该时间序列表示事务开始时间,并向调度器返回一个事务;
4、调度器在该事务内开始正常的调度流程(为调度器原始的调度流程);
5、调度结束(指的是:已经根据Pod选择出一组最佳的计算节点,可以用来运行该Pod,但此时该Pod还未实际与某个计算节点发生绑定关系)后会返回一个或多个调度分数(调度分数通过Kubernetes调度程序原有的逻辑来计算)相同的候选计算节点ID。如果本地调度过程中没有可选的计算节点(例如:一个Pod需要16核的计算CPU,但是目前所有的计算节点中均未有16核的CPU可供使用,所以最终会无法选出一个计算节点),则调度流程直接结束;
6、调度器向事务管理器提交该事务,提交的事务信息中,会包括步骤5中选出的候选计算节点集合(也可以是列表);
7、事务管理器向时间序列生成器申请一个当前的时间序列,调度器以该时间序列作为事务提交的时间;
8、事务管理器尝试使用事务开始时间、事务提交时间及计算节点ID为参数,去修改Key-Value数据库中以计算节点ID为Key的Value,如果此时以该计算节点ID为Key的Value不存在或者对应的数据记录的版本号小于事务开始的时间,则Key-Value数据库修改该Value及版本号,本次事务提交成功,返回该计算节点ID;如果此时该计算节点ID对应的数据记录的版本号大于事务开始时间,则说明该计算节点ID在本次事务开始后,已经被修改过了(也就是绑定过其他Pod了),本次事务不能提交;此时如果还有其他候选计算节点ID,则继续尝试,直到能够提交为止;
9、如果事务管理器提交事务成功,调度器则将该待调度Pod与提交的计算节点进行绑定,表示本地调度成功完成;如果事务管理器在所有候选节点上都未能成功进行事务提交,则表示本地调度失败。
图3是本发明第二实施例的对多个计算单元进行并行调度的流程示意图。如图3所示,假设有4个Pod在进行并行调度,分别为pod1、pod2、pod3、pod4,对这4个Pod进行并行调度的主要流程如下:
1、pod1调度事务1开始的时间为t1,pod2调度事务2开始的时间为t3,pod3调度事务3开始的时间为t2,pod4调度事务4开始的时间为t9;
2、pod1调度事务1提交的时间为t8,pod2调度事务2提交的时间为t7,pod3调度事务3提交的时间为t10,pod4调度事务4提交的时间为t11;
3、其中,pod1在调度过程中候选的计算节点列表为(node1,node2),pod2在调度过程中候选的计算节点为(node1),pod3在调度过程中候选的计算节点(node3),pod4在调度过程中候选的计算节点(node1);
4、在进行事务提交时,因为t7的时间靠前,先发生,pod2的调度事务2将node1作为选中的计算节点进行提交,因为node1在pod2调度过程中并未被更新,因此调度事务2可以提交,并更新node1的版本号为t7,pod2被调度到node1上去;
5、其次,时间t8达到,pod1的调度事务1在提交node1时,因为node1在t7时已经被pod2的调度事务2提交,此时node1的版本号大于调度事务1开始的时间(t7>t1),所以pod1不能再调度到node1上去,提交失败;此时pod1的调度事务1继续尝试提交node2,因为此时node2未被修改,因此调度事务1可以提交,并更新node2的版本号为t8,pod1被调度到node2上去;
6、再次,t10发生,pod3的调度事务3将node3进行提交,因为node3在pod3调度过程中并未被更新,因此调度事务3可以提交,并更新node3的版本号为t10,pod3被调度到node3上去;
7、最后,t11发生,pod4的调度事务4将node1进行提交,虽然node1在pod2调度过程中被更新过一次,但是pod4的调度事务4开始的时间t11要晚于pod2的调度事务2提交的时间t7(t7<t11),因此调度事务4可以提交,并更新node1的版本号为t11,pod4被调度到node1上去。
通过本发明实施例的事务并行提交的技术方案进行计算单元的调度,可以使得集群整体的调度速度从每秒不超过300个Pod提升到每秒超过750个Pod,提升了将近150%,使得集群整体的调度效率大幅提升。
图4是根据本发明实施例的单元调度的装置的主要模块示意图。如图4所示,本发明实施例的单元调度的装置400主要包括事务创建模块401、事务处理模块402和调度绑定模块403。
事务创建模块401,用于获取待调度单元,并为所述待调度单元创建调度事务;
事务处理模块402,用于通过执行所述调度事务来获取所述待调度单元的待绑定节点,并提交所述调度事务,其中,执行所述调度事务来获取所述待调度单元的待绑定节点包括:在所述调度事务内执行调度流程以获取所述待调度单元对应的候选节点集合;依次对所述候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,所述判断包括判断所述候选节点在所述调度事务的执行过程中是否发生变更,若未发生变更,则将所述候选节点作为待绑定节点;
调度绑定模块403,用于将所述待调度单元与所述待绑定节点进行绑定以完成单元调度。
根据本发明的一个实施例,事务处理模块401还可以用于:
获取所述候选节点的版本号以及所述调度事务的开始标识,所述版本号和所述开始标识为单调递增序列;
若所述候选节点的版本号大于所述调度事务的开始标识,则所述候选节点在所述调度事务的执行过程中已发生变更;
否则,所述候选节点在所述调度事务的执行过程中未发生变更。
根据本发明的另一个实施例,事务处理模块401还可以用于:
使用所述调度事务的提交标识来变更所述候选节点的版本号。
根据本发明的又一个实施例,所述候选节点的版本号以及所述调度事务的开始标识和提交标识为通过计数器生成的单调递增的数字序列,或通过时间序列生成器生成的单调递增的时间序列。
根据本发明的再一个实施例,还包括调度判定模块(图中未示出),用于:
若获取的候选节点集合为空,则所述单元调度失败;
若对所述候选节点集合中的每个候选节点都进行判断后仍未能获取待绑定节点,则所述单元调度失败。
根据本发明实施例的技术方案,通过获取待调度单元,并为待调度单元创建调度事务;通过执行调度事务来获取待调度单元的待绑定节点,并提交调度事务,其中,执行调度事务来获取待调度单元的待绑定节点包括:在调度事务内执行调度流程以获取待调度单元对应的候选节点集合;依次对候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,判断包括判断候选节点在调度事务的执行过程中是否发生变更,若未发生变更,则将候选节点作为待绑定节点;将待调度单元与所述待绑定节点进行绑定以完成单元调度,实现了基于事务进行计算单元的调度,并在事务提交时,基于事务对即将绑定的候选计算节点进行冲突监测,避免了多个并行调度的计算单元被同时调度到同一个计算节点上的可能,从而实现了对计算单元的事务型并行调度,使得Kubernetes的整体调度性能得到了大幅提升。
图5示出了可以应用本发明实施例的单元调度的方法或单元调度的装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的单元调度的方法一般由服务器505执行,相应地,单元调度的装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备或服务器的计算机系统600的结构示意图。图6示出的终端设备或服务器仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括事务创建模块、事务处理模块和调度绑定模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,事务创建模块还可以被描述为“用于获取待调度单元,并为所述待调度单元创建调度事务的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取待调度单元,并为所述待调度单元创建调度事务;通过执行所述调度事务来获取所述待调度单元的待绑定节点,并提交所述调度事务,其中,执行所述调度事务来获取所述待调度单元的待绑定节点包括:在所述调度事务内执行调度流程以获取所述待调度单元对应的候选节点集合;依次对所述候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,所述判断包括判断所述候选节点在所述调度事务的执行过程中是否发生变更,若未发生变更,则将所述候选节点作为待绑定节点;将所述待调度单元与所述待绑定节点进行绑定以完成单元调度。
根据本发明实施例的技术方案,通过获取待调度单元,并为待调度单元创建调度事务;通过执行调度事务来获取待调度单元的待绑定节点,并提交调度事务,其中,执行调度事务来获取待调度单元的待绑定节点包括:在调度事务内执行调度流程以获取待调度单元对应的候选节点集合;依次对候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,判断包括判断候选节点在调度事务的执行过程中是否发生变更,若未发生变更,则将候选节点作为待绑定节点;将待调度单元与所述待绑定节点进行绑定以完成单元调度,实现了基于事务进行计算单元的调度,并在事务提交时,基于事务对即将绑定的候选计算节点进行冲突监测,避免了多个并行调度的计算单元被同时调度到同一个计算节点上的可能,从而实现了对计算单元的事务型并行调度,使得Kubernetes的整体调度性能得到了大幅提升。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种单元调度的方法,其特征在于,包括:
获取待调度单元,并为所述待调度单元创建调度事务;
通过执行所述调度事务来获取所述待调度单元的待绑定节点,并提交所述调度事务,其中,执行所述调度事务来获取所述待调度单元的待绑定节点包括:在所述调度事务内执行调度流程以获取所述待调度单元对应的候选节点集合;依次对所述候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,所述判断包括判断所述候选节点在所述调度事务的执行过程中是否发生变更,若未发生变更,则将所述候选节点作为待绑定节点;
将所述待调度单元与所述待绑定节点进行绑定以完成单元调度。
2.根据权利要求1所述的方法,其特征在于,判断所述候选节点在所述调度事务的执行过程中是否发生变更包括:
获取所述候选节点的版本号以及所述调度事务的开始标识,所述版本号和所述开始标识为单调递增序列;
若所述候选节点的版本号大于所述调度事务的开始标识,则所述候选节点在所述调度事务的执行过程中已发生变更;
否则,所述候选节点在所述调度事务的执行过程中未发生变更。
3.根据权利要求2所述的方法,其特征在于,提交所述调度事务包括:
使用所述调度事务的提交标识来变更所述候选节点的版本号。
4.根据权利要求3所述的方法,其特征在于,所述候选节点的版本号以及所述调度事务的开始标识和提交标识为通过计数器生成的单调递增的数字序列,或通过时间序列生成器生成的单调递增的时间序列。
5.根据权利要求1所述的方法,其特征在于,还包括:
若获取的候选节点集合为空,则所述单元调度失败;
若对所述候选节点集合中的每个候选节点都进行判断后仍未能获取待绑定节点,则所述单元调度失败。
6.一种单元调度的装置,其特征在于,包括:
事务创建模块,用于获取待调度单元,并为所述待调度单元创建调度事务;
事务处理模块,用于通过执行所述调度事务来获取所述待调度单元的待绑定节点,并提交所述调度事务,其中,执行所述调度事务来获取所述待调度单元的待绑定节点包括:在所述调度事务内执行调度流程以获取所述待调度单元对应的候选节点集合;依次对所述候选节点集合中的每个候选节点进行判断,直至获取待绑定节点,其中,所述判断包括判断所述候选节点在所述调度事务的执行过程中是否发生变更,若未发生变更,则将所述候选节点作为待绑定节点;
调度绑定模块,用于将所述待调度单元与所述待绑定节点进行绑定以完成单元调度。
7.根据权利要求6所述的装置,其特征在于,所述事务处理模块还用于:
获取所述候选节点的版本号以及所述调度事务的开始标识,所述版本号和所述开始标识为单调递增序列;
若所述候选节点的版本号大于所述调度事务的开始标识,则所述候选节点在所述调度事务的执行过程中已发生变更;
否则,所述候选节点在所述调度事务的执行过程中未发生变更。
8.根据权利要求7所述的装置,其特征在于,所述事务处理模块还用于:
使用所述调度事务的提交标识来变更所述候选节点的版本号。
9.根据权利要求8所述的装置,其特征在于,所述候选节点的版本号以及所述调度事务的开始标识和提交标识为通过计数器生成的单调递增的数字序列,或通过时间序列生成器生成的单调递增的时间序列。
10.根据权利要求6所述的装置,其特征在于,还包括调度判定模块,用于:
若获取的候选节点集合为空,则所述单元调度失败;
若对所述候选节点集合中的每个候选节点都进行判断后仍未能获取待绑定节点,则所述单元调度失败。
11.一种单元调度的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201911083580.4A 2019-11-07 2019-11-07 一种单元调度的方法和装置 Active CN112783613B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911083580.4A CN112783613B (zh) 2019-11-07 2019-11-07 一种单元调度的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911083580.4A CN112783613B (zh) 2019-11-07 2019-11-07 一种单元调度的方法和装置

Publications (2)

Publication Number Publication Date
CN112783613A CN112783613A (zh) 2021-05-11
CN112783613B true CN112783613B (zh) 2024-03-01

Family

ID=75748022

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911083580.4A Active CN112783613B (zh) 2019-11-07 2019-11-07 一种单元调度的方法和装置

Country Status (1)

Country Link
CN (1) CN112783613B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115576685A (zh) * 2022-09-26 2023-01-06 京东科技信息技术有限公司 容器的调度方法、装置及计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003067426A1 (en) * 2002-02-08 2003-08-14 Jpmorgan Chase Bank System and method for allocating computing resources
CN108027727A (zh) * 2016-05-25 2018-05-11 华为技术有限公司 内存访问指令的调度方法、装置及计算机系统
CN109324900A (zh) * 2012-09-12 2019-02-12 萨勒斯福斯通讯有限公司 用于按需服务环境中的消息队列的基于竞价的资源共享
CN109992359A (zh) * 2019-03-28 2019-07-09 深圳市创联时代科技有限公司 一种事务调度方法
CN110377395A (zh) * 2019-07-03 2019-10-25 无锡华云数据技术服务有限公司 一种Kubernetes集群中的Pod迁移方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US9396018B2 (en) * 2014-10-10 2016-07-19 Salesforce.Com, Inc. Low latency architecture with directory service for integration of transactional data system with analytical data structures

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003067426A1 (en) * 2002-02-08 2003-08-14 Jpmorgan Chase Bank System and method for allocating computing resources
CN109324900A (zh) * 2012-09-12 2019-02-12 萨勒斯福斯通讯有限公司 用于按需服务环境中的消息队列的基于竞价的资源共享
CN108027727A (zh) * 2016-05-25 2018-05-11 华为技术有限公司 内存访问指令的调度方法、装置及计算机系统
CN109992359A (zh) * 2019-03-28 2019-07-09 深圳市创联时代科技有限公司 一种事务调度方法
CN110377395A (zh) * 2019-07-03 2019-10-25 无锡华云数据技术服务有限公司 一种Kubernetes集群中的Pod迁移方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Prashanth Thinakaran 等.The Curious Case of Container Orchestration and Scheduling in GPU-based Datacenters.《SoCC '18: Proceedings of the ACM Symposium on Cloud Computing》.2018,全文. *
应用感知的容器资源调度优化方法;陆志刚;吴悦文;顾泽宇;吴启德;;计算机系统应用(03);全文 *

Also Published As

Publication number Publication date
CN112783613A (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
US11762697B2 (en) Method and apparatus for scheduling resource for deep learning framework
CN110402431B (zh) 使用有向无环图进行事件驱动的调度
CA3000422C (en) Workflow service using state transfer
US8370802B2 (en) Specifying an order for changing an operational state of software application components
CN110825535B (zh) 一种作业调度的方法和系统
EP3195117B1 (en) Automated configuration of log-coordinated storage groups
CN109032796B (zh) 一种数据处理方法和装置
TW201229795A (en) Web service patterns for globally distributed service fabric
US20190042149A1 (en) Writing composite objects to a data store
US8612597B2 (en) Computing scheduling using resource lend and borrow
CN111784318A (zh) 数据处理方法、装置、电子设备及存储介质
CN110737510B (zh) 块设备管理系统
CN113760488A (zh) 调度任务的方法、装置、设备和计算机可读介质
US20210149709A1 (en) Method and apparatus for processing transaction
CN112783613B (zh) 一种单元调度的方法和装置
CN113127564B (zh) 一种参数同步方法和装置
CN111611479A (zh) 用于网络资源推荐的数据处理方法及相关装置
US10728323B2 (en) Method and apparatus for operating infrastructure layer in cloud computing architecture
CN111782373B (zh) 作业调度方法及装置
US11817091B1 (en) Fault-tolerance techniques for dialog-driven applications
CN111245909B (zh) 分布式动态调度方法、装置、电子设备及存储介质
CN115129438A (zh) 任务分布式调度的方法和装置
CN112182003A (zh) 一种数据同步方法和装置
CN110677497A (zh) 一种网络介质分发方法及装置
CN117076096A (zh) 任务流程的执行方法、装置、计算机可读介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant