CN113778617B - 容器水平伸缩方法、装置、电子设备及存储介质 - Google Patents

容器水平伸缩方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113778617B
CN113778617B CN202110916250.XA CN202110916250A CN113778617B CN 113778617 B CN113778617 B CN 113778617B CN 202110916250 A CN202110916250 A CN 202110916250A CN 113778617 B CN113778617 B CN 113778617B
Authority
CN
China
Prior art keywords
task processing
task
processing unit
processing units
tasks
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
CN202110916250.XA
Other languages
English (en)
Other versions
CN113778617A (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.)
Wanyi Technology Co Ltd
Original Assignee
Wanyi 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 Wanyi Technology Co Ltd filed Critical Wanyi Technology Co Ltd
Priority to CN202110916250.XA priority Critical patent/CN113778617B/zh
Publication of CN113778617A publication Critical patent/CN113778617A/zh
Application granted granted Critical
Publication of CN113778617B publication Critical patent/CN113778617B/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种容器水平伸缩方法、装置、电子设备及存储介质。该容器水平伸缩方法包括:检测任务队列中的任务数量;利用所述任务数量计算期望任务处理单元数量;基于所述期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,所述任务处理单元用于处理所述任务队列中的任务。使得每个任务都有任务处理单元来处理,有效的根据业务需求对任务处理单元数量进行扩容和缩容。

Description

容器水平伸缩方法、装置、电子设备及存储介质
技术领域
本申请涉及云技术平台领域,尤其涉及一种容器水平伸缩方法、装置、电子设备及存储介质。
背景技术
Kubernetes,简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,它提供了应用部署,规划,更新,维护的一种机制。Kubernetes的目标是让部署容器化的应用简单并且高效。Kubernetes资源调度的基本单位是容器组(Pod),Kubernetes可以根据CPU或内存的使用量对容器组的副本数自动进行增加或减少,从而实现扩容或缩容的调度。
容器水平伸缩(Horizontal Pod Autoscaler,HPA)可以根据中央处理器(CentralProcessing Unit,CPU)或内存的使用率进行容器组的副本数的动态的扩容与缩容,以便减轻各个容器组的压力。当容器组负载达到一定的阈值后,会根据扩缩容的策略生成更多新的副本来分担压力,当容器组的使用比较空闲时,在稳定空闲一段时间后,还会自动减少副本数量。CPU和内存的使用率不能代表实际业务需求,对于负载高但CPU和内存的使用率不高的应用来说,无法根据CPU和内存指标进行有效伸缩。
发明内容
鉴于上述现有技术的不足,本申请的目的在于提供一种容器水平伸缩方法、装置、电子设备及存储介质,旨在解决无法根据CPU和内存指标进行有效伸缩的问题。
第一方面,本申请实施例提供一种容器水平伸缩方法,包括:
检测任务队列中的任务数量;
利用所述任务数量计算期望任务处理单元数量;
基于所述期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,所述任务处理单元用于处理所述任务队列中的任务。
在本申请实施例中,利用任务队列记录未完成的任务的数量,以未完成的任务数量作为指标新增或删除任务处理单元,实现任务处理单元数量的动态扩容与缩容,使得每个任务都有任务处理单元来处理,有效的根据业务需求对任务处理单元数量进行扩容和缩容。
在一种可能实施方式中,所述方法还包括:
接收待处理任务;
将待处理任务放入所述任务队列中;
将所述待处理任务分派至目标任务处理单元中,所述目标任务处理单元属于第一任务处理单元集合,所述第一任务处理单元集合包含所述任务处理单元池中未超负荷的任务处理单元;
在所述目标任务处理单元完成所述待处理任务后,从所述任务队列中删除所述待处理任务。
在本申请实施例中,将任务处理单元池中未超负荷的任务处理单元确定为目标任务处理单元,将待处理任务分派至目标任务处理单元,由目标任务处理单元处理该待处理任务。解决任务处理单元处理的任务数不均衡的问题,提高了任务处理单元的利用效率。
在一种可能实施方式中,所述目标任务处理单元为所述第一任务处理单元集合中正在处理的任务数较少的任务处理单元。
在本申请实施例中,将第一任务处理单元集合中正在处理的任务数较少的任务处理单元确定为目标任务处理单元,将待处理任务分派至目标任务处理单元,由目标任务处理单元处理该待处理任务。解决任务处理单元处理的任务数不均衡的问题,避免出现旧任务处理单元并发大,新扩容的任务处理单元并发小的情况,提高了任务处理单元的利用效率。
在一种可能实施方式中,所述检测任务队列中的任务数量,包括:
以第一频率检测任务队列中的任务数量,所述第一频率与所述任务队列中的任务数量的变化率正相关。
在本申请实施例中,可以根据任务队列中的任务数量的变化率来控制检测任务队列中的任务数量的频率,从而控制任务处理单元数量的扩容和缩容的频率。任务队列中的任务数量变化率越大,任务处理单元数量的扩容或缩容的频率越高,可以根据任务需求调整容器水平伸缩延迟,提高容器水平伸缩的效率。
在一种可能实施方式中,所述基于所述期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,包括:
确定所述任务处理单元池中的实际任务处理单元数量;
计算所述实际任务处理单元数量与所述期望任务处理单元数量之差,得到差数量;
在所述实际任务处理单元数量大于所述期望任务处理单元数量的情况下,删除所述差数量的任务处理单元;
在所述实际任务处理单元数量小于所述期望任务处理单元数量的情况下,新增所述差数量的任务处理单元。
在一种可能实施方式中,所述方法还包括:
检测第一任务处理单元的状态,所述第一任务处理单元为任务处理单元池中的任一任务处理单元;
在所述第一任务处理单元状态异常的情况下,创建第二任务处理单元,所述第二任务处理单元用于处理所述第一任务处理单元正在处理的任务。
在本申请实施例中,检测第一任务处理单元的状态,在第一任务处理单元状态异常的情况下,创建第二任务处理单元,将第一任务处理单元正在处理的任务转移至第二任务处理单元中,保证任务队列中的各个任务能够正常执行。
第二方面,本申请实施例提供一种容器水平伸缩装置,包括:
第一检测单元,用于检测任务队列中的任务数量;
计算单元,用于利用所述任务数量计算期望任务处理单元数量;
伸缩单元,用于基于所述期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,所述任务处理单元用于执行所述任务队列中的任务。
在一种实施方式中,上述容器水平伸缩装置,还包括:
接收单元,用于接收待处理任务;
入队单元,用于将待处理任务放入所述任务队列中;
分派单元,用于将所述待处理任务分派至目标任务处理单元中,所述目标任务处理单元属于第一任务处理单元集合,所述第一任务处理单元集合包含所述任务处理单元池中未超负荷的任务处理单元;
出队单元,用于在所述目标任务处理单元完成所述待处理任务后,从所述任务队列中删除所述待处理任务。
在一种实施方式中,所述容器水平伸缩装置,还包括:
第二检测单元,用于检测第一任务处理单元的状态,所述第一任务处理单元为任务处理单元池中的任一任务处理单元;
创建单元,用于在所述第一任务处理单元状态异常的情况下,创建第二任务处理单元,所述第二任务处理单元用于处理所述第一任务处理单元正在处理的任务。
在一种实施方式中,所述第一检测单元用于以第一频率检测任务队列中的任务数量,所述第一频率与所述任务队列中的任务数量的变化率正相关。
在本申请实施例中,提供的装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。
第三方面,本申请实施例提供一种容器水平伸缩***,包括:
任务队列,用于记录未完成的任务数量;
任务处理单元池,用于管理任务处理单元,所述任务处理单元用于处理所述任务队列中的任务;
伸缩控制器,用于检测所述任务队列中的任务数量,利用所述任务数量计算期望任务处理单元数量;基于所述期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,所述任务处理单元用于处理所述任务队列中的任务。
第四方面,本申请实施例提供了一种电子设备,包括处理器以及存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,所述程序包括用于执行如本申请实施例第一方面中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如本申请实施例第一方面中所描述的部分或全部步骤。
在本申请实施例中,利用任务队列记录未完成的任务的数量,以未完成的任务数量作为指标新增或删除任务处理单元,实现任务处理单元数量的动态扩容与缩容,使得每个任务都有任务处理单元来处理,有效的根据业务需求对任务处理单元数量进行扩容和缩容。
附图说明
图1为本申请实施例提供的一种容器水平伸缩方法的流程示意图;
图2为本申请实施例提供的一种任务调度方法的流程示意图;
图3为本申请实施例提供的一种容器水平伸缩装置的结构示意图;
图4为本申请实施例提供的一种容器水平伸缩***的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的较佳实施方式。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本申请的公开内容理解的更加透彻全面。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本申请。
Kubernetes,简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,它提供了应用部署,规划,更新,维护的一种机制。Kubernetes的目标是让部署容器化的应用简单并且高效。Kubernetes资源调度的基本单位是容器组(Pod),Kubernetes可以根据CPU或内存的使用量对容器组的副本数自动进行增加或减少,从而实现扩容或缩容的调度。
容器水平伸缩(Horizontal Pod Autoscaler,HPA)可以根据中央处理器(CentralProcessing Unit,CPU)或内存的使用率进行容器组的副本数的动态的扩容与缩容,以便减轻各个容器组的压力。当容器组负载达到一定的阈值后,会根据扩缩容的策略生成更多新的副本来分担压力,当容器组的使用比较空闲时,在稳定空闲一段时间后,还会自动减少副本数量。CPU和内存的使用率不能代表实际业务需求,对于负载高但CPU和内存的使用率不高的应用来说,无法根据CPU和内存指标进行有效伸缩。且HPA伸缩延迟较高,默认30S,无法适应更快的伸缩需求。
容器组的副本动态扩容之后,需要客户端通过副本Service服务地址(下文称Service)进行访问,Service需要对客户端发送的任务请求进行调度。默认使用轮训策略进行调度,例如Service下有2个副本,依次为副本1和副本2,有三个任务,依次记为任务1、任务2和任务3,按照轮训策略,任务1分派给副本1处理,任务2分派个副本2处理,任务3分派个副本1处理。按照轮训策略进行调度容易出现分配不均的情况,造成旧副本并发大,新扩容的副本并发小,降低了副本利用效率。
基于此,本申请希望提供一种能够解决上述技术问题的方案,其详细内容将在后续实施例中得以阐述。
请参阅图1,图1为本申请实施例提供的一种容器水平伸缩方法的流程示意图。如图1所示,该容器水平伸缩方法包括如下步骤。
101,检测任务队列中的任务数量。
具体的,上述任务队列中记录应用程序未完成的任务,未完成的任务包括未分配的任务和已分配的、正在处理的任务,即任务队列中的队列元素为未完成的任务。任务队列中的任务数量即为未完成的任务数量。将未完成的任务放入任务队列中,使用任务队列来管理未完成的任务,通过监控任务队列中任务的数量可以得到未处理的任务的数量。
进一步的,上述检测任务队列中的任务数量,可以包括如下步骤:
以第一频率检测任务队列中的任务数量,所述第一频率与所述任务队列中的任务数量的变化率正相关。
在本申请实施例中,可以周期性检测任务队列中的任务数量,以周期性根据任务队列中的任务数量进行任务处理单元数量的扩容或缩容。通过控制检测任务队列中的任务数量的频率可以控制任务处理单元数量的扩容或缩容的延迟。上述第一频率与任务队列中的任务数量的变化率正相关,即任务队列中的任务数量的变化率越大,检测任务队列中的任务数量的频率越高。上述任务队列中的任务数量的变化率与任务请求的瞬时并发量相关,当任务请求的瞬时并发量越大,任务队列中的任务数量的变化率越大。上述第一频率与任务队列中的任务数量的变化率正相关,即第一频率与任务请求的瞬时并发量正相关。可以通过检测应用程序的任务请求的瞬时并发量确定第一频率,并以第一频率检测任务队列中的任务数量。
在本申请实施例中,可以根据任务队列中的任务数量的变化率来控制检测任务队列中的任务数量的频率,从而控制任务处理单元数量的扩容和缩容的频率。任务队列中的任务数量变化率越大,任务处理单元数量的扩容或缩容的频率越高,可以根据任务需求调整容器水平伸缩延迟,提高容器水平伸缩的效率。
102,利用任务数量计算期望任务处理单元数量。
具体的,上述任务处理单元用于处理任务队列中的任务,每个任务处理单元可以同时处理多个任务。期望任务处理单元数量为处理上述任务队列中的任务所需要的任务处理单元的数量。为了避免任务处理单元负载过大,可以设置每个任务处理单元可处理的任务数量上限。首先确定每个任务处理单元可处理的任务数量上限,再使用任务队列中的任务数量除以每个任务处理单元可处理的任务数量上限,即可得到期望任务处理单元数量。在各个任务处理单元可处理的任务数量上限不相同的情况下,检测各个任务处理单元可处理的任务数量上限,计算任务处理单元平均可处理的任务数量上限,再用任务队列中的任务数量除以任务处理单元平均可处理的任务数量上限,得到期望任务处理单元数量。
举例来说,设定任务处理单元平均可以处理n个任务,当任务队列中的任务数量为m时,则需要m/n个任务处理单元去处理任务队列中的任务,期望任务处理单元数量为m/n。当m/n不是整数时,则需要进1位取整数。例如当任务队列中的任务数量为7,设定任务处理单元平均可以处理3个任务时,则期望任务处理单元数量为3,即期望需要3个任务处理单元去处理这7个任务。
103,基于期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元。
具体的,从运行部署的角度来说,一个应用程序可以包含多个任务处理单元(实例),上述任务处理单元池指的是一个应用程序包含的多个任务处理单元的集合。在确定期望任务处理单元数量后,在任务处理单元池中新增或删除任务处理单元,使得任务处理单元池中的任务处理单元的数量为期望任务处理单元数量。
在本申请实施例中,上述任务处理单元可以是Kubernetes中的容器组(Pod),任务处理单元池可以是Kubernetes中部署集(deployment)。在Kubernetes中,Pod是Kubernetes的最小工作单元,表示的是一个部署单元,可以理解为Kubernetes中的应用程序的单个实例,它可能由单个容器组成,也可能由少量紧密耦合并共享资源的容器组成,Kubernetes通过部署集(deployment)对Pod副本数量进行管理。
具体的,使用Kubernetes对任务处理单元池中的任务处理容器Pod的集群管理时,可基于核心指标和自定义指标对容器进行弹性伸缩管理。一般核心指标包括节点(Node)、Pod的中央处理器(Central Processing Unit,CPU)、内存等。在本申请实施例中,可基于未完成的任务数量的自定义指标对容器进行弹性伸缩管理。在一种实施例中,自定义指标的定义可以在quantitycalc-metrics容器的内部程序中实现,具体实施方式为由quantitycalc-metrics容器读取共享存储卷volume内的指标文件,将指标文件的文件内容转换为prometheus指标格式。然后根据相应的prometheus指标进行容器的弹性伸缩管理,使得Kubernetes通过部署集(deployment)对Pod副本数量进行增加或删除。上述共享存储卷volume内的指标文件由任务处理容器Pod修改。当新增一个任务处理时,指标文件中的文件内容加1,反之减1。举例来说,指标文件的文件内容为0000,任务处理容器Pod新增一个任务处理时,指标文件内容加1就是0001,则将0001写入到指标文件中,任务处理结束时,指标文件的文件内容为0001,文件内容减1就是0000,则将0000写入到指标文件中。在该种实施方式中,quantitycalc-metrics容器与任务处理容器Pod相互独立,稳定性和维护性更好。
可选的,上述基于期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,可以包括如下步骤:
(11)确定任务处理单元池中的实际任务处理单元数量;
(12)计算实际任务处理单元数量与期望任务处理单元数量之差,得到差数量;
(13)在所述实际任务处理单元数量大于所述期望任务处理单元数量的情况下,删除所述差数量的任务处理单元;
(14)在所述实际任务处理单元数量小于所述期望任务处理单元数量的情况下,新增所述差数量的任务处理单元。
在本申请实施例中,通过计算任务处理单元池中的实际任务处理单元数量和期望任务处理单元数量的差,确定需要在任务处理单元池中新增或删除的任务处理单元的数量。在实际任务处理单元数量大于期望任务处理单元数量的情况下,删除差数量的任务处理单元;在实际任务处理单元数量小于期望任务处理单元数量的情况下,新增差数量的任务处理单元。
在实际任务处理单元数量大于期望任务处理单元数量的情况下,删除差数量的任务处理单元。在删除差数量的任务处理单元之前,为了保证数据的安全,需要进行安全缩容的配置。在删除任务处理单元之前,检测该任务处理单元处理的任务是否完成,若任务处理单元中的任务未处理完成,则等待该任务处理单元完成任务后再将其删除,且不会将新的任务分派给该任务处理单元。例如,假设期望任务处理单元数量为10,实际任务处理单元为15,则在任务处理单元池中删除5个任务处理单元。
在实际任务处理单元数量小于期望任务处理单元数量的情况下,新增差数量的任务处理单元。在新增差数量的任务处理单元之前,还需要判断期望任务处理单元数量是否大于任务处理单元数量阈值。任务处理单元数量阈值为上述任务处理单元池中最大可包含的任务处理单元的数量。在期望任务处理单元数量小于任务处理单元数量阈值的情况下,新增差数量的任务处理单元。在期望任务处理单元数量大于任务处理单元数量阈值的情况下,计算实际任务处理单元数量和任务处理单元数量阈值的差,新增的任务处理单元的数量为实际任务处理单元数量和数量阈值的差。例如,假设期望任务处理单元数量为10,任务处理单元数量阈值为7,实际任务处理单元为5,则在任务处理单元池中新增2个任务处理单元。
在本申请实施例中,利用任务队列记录未完成的任务的数量,以未完成的任务数量作为指标新增或删除任务处理单元,实现任务处理单元数量的动态扩容与缩容,使得每个任务都有任务处理单元来处理,有效的根据业务需求对任务处理单元数量进行扩容和缩容。
进一步的,基于任务队列中的任务数量对任务处理单元的数量进行缩容或扩容后,上述容器水平伸缩方法还包括对接收到的任务进行调度,使任务能被对应的任务处理单元处理。请参阅图2,图2为本申请实施例提供的一种任务调度方法的流程示意图。如图2所示,该任务调度方法包括如下步骤。
201,接收待处理任务。
具体的,接收客户端基于业务需要发送的任务请求,生成对应的待处理任务。
202,将待处理任务放入任务队列中。
具体的,接收到待处理任务后将待处理任务放入到任务队列中,由任务队列记录该待处理任务的处理状态。
203,将待处理任务分派至目标任务处理单元中。
具体的,上述目标任务处理单元属于第一任务处理单元集合,上述第一任务处理单元集合包含上述任务处理单元池中未超负荷的任务处理单元。
在本申请实施例中,可以按照任务处理单元的负荷情况将任务处理单元池中的任务处理单元分为超负荷任务处理单元和非超负荷任务处理单元。上述第一任务处理单元集合包含任务处理单元池中非超负荷任务处理单元。第一任务处理单元集合可以为任务处理单元池中所有非超负荷任务处理单元的集合,也可以为任务处理单元池中部分非超负荷任务处理单元的集合。目标任务处理单元为第一任务处理单元集合中的任一任务处理单元。
在任务处理单元池中的任务处理单元数量为0的情况下,延迟分派待处理任务,直至任务处理单元池中的任务处理单元的数量不为0,确定目标任务处理单元,将待处理任务分派至目标任务处理单元,使目标任务处理单元处理该待处理任务。
可选的,上述目标任务处理单元为上述第一任务处理单元集合中正在处理的任务数较少的任务处理单元。
具体的,上述第一任务处理单元集合中正在处理的任务数较少的任务处理单元具体可以为第一任务处理单元集合中正在处理的任务数少于第一阈值的任务处理单元。第一阈值可以是根据任务处理单元可处理的任务数量设置,如将第一阈值设置为任务处理单元可处理的任务数的二分之一。可以的按照任务处理单元的负荷状况进一步将第一任务处理单元集合分为轻负荷任务处理单元集合和重负荷任务处理单元集合。上述轻负荷任务处理单元集合为正在处理的任务数少于第一阈值的任务处理单元分的集合,上述重负荷任务处理单元集合为正在处理的任务数大于第一阈值的任务处理单元的集合。上述目标任务处理单元可以为轻负荷任务处理单元集合中的任一个。
优选的,上述目标任务处理单元为第一任务处理单元集合中正在处理的任务数量最少的一个任务处理单元。可以按照任务处理单元正在处理的任务数将第一任务处理单元集合中的任务处理单元进行排序,将一任务处理单元集合中正在处理的任务数量最少的一个任务处理单元确定为目标任务处理单元。
确定目标任务处理单元后,将待处理任务分派至目标任务处理单元中,由目标任务处理单元处理该待处理任务。
进一步的,将待处理任务分派至目标任务处理单元后,还包括检测待处理任务的处理状态。在待处理任务的处理状态异常的情况下,重新将待处理任务分派至目标任务处理单元,若目标任务处理单元仍无法处理该待处理任务,则将待处理任务处理单元分派至第二目标任务处理单元,第二目标任务处理单元为第一任务处理集合中的除了目标任务处理单元之外的任一任务处理单元。
在本申请实施例中,将第一任务处理单元集合中正在处理的任务数较少的任务处理单元确定为目标任务处理单元,将待处理任务分派至目标任务处理单元,由目标任务处理单元处理该待处理任务。解决任务处理单元处理的任务数不均衡的问题,避免出现旧任务处理单元并发大,新扩容的任务处理单元并发小的情况,提高了任务处理单元的利用效率。
204,在目标任务处理单元完成待处理任务后,从任务队列中删除所述待处理任务。
具体的,由于任务队列中记录的是应用程序未完成的任务,因此在目标任务处理单元完成上述待处理任务之后,需要将待处理任务从任务队列中删除。
在本申请实施例中,将任务处理单元池中未超负荷的任务处理单元确定为目标任务处理单元,将待处理任务分派至目标任务处理单元,由目标任务处理单元处理该待处理任务。避免任务处理单元压力过大,解决任务处理单元处理的任务数不均衡的问题,提高了任务处理单元的利用效率。
进一步的,上述容器水平伸缩方法还包括如下步骤:
(21)检测第一任务处理单元的状态,所述第一任务处理单元为任务处理单元池中的任一任务处理单元;
(22)在所述第一任务处理单元状态异常的情况下,创建第二任务处理单元,所述第二任务处理单元用于处理所述第一任务处理单元正在处理的任务。
具体的,检测第一任务处理单元的状态,所述第一任务处理单元为任务处理单元池中的任一任务处理单元。在第一任务处理单元状态异常(如进程退出),无法处理任务的情况下,创建第二任务处理单元,将第一任务处理单元中的任务转移至第二任务处理单元,由第二任务处理单元处理上述第一任务处理单元处理中的任务。将第一任务处理单元中正在处理的任务转移至第二任务处理单元之后,将第一任务处理单元从任务处理单元池中删除。
在本申请实施例中,检测第一任务处理单元的状态,在第一任务处理单元状态异常的情况下,创建第二任务处理单元,将第一任务处理单元正在处理的任务转移至第二任务处理单元中,保证任务队列中的各个任务能够正常执行。
请参阅图3,图3为本申请实施例提供的一种容器水平伸缩装置的结构示意图。如图3所示,该容器水平伸缩装置300包括第一检测单元301、计算单元302以及伸缩单元303。
上述第一检测单元301用于检测任务队列中的任务数量。
上述计算单元302用于利用所述任务数量计算期望任务处理单元数量;
上述伸缩单元303用于基于所述期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,所述任务处理单元用于处理所述任务队列中的任务。
在本申请实施例中,利用任务队列记录未完成的任务的数量,以未完成的任务数量作为指标新增或删除任务处理单元,实现任务处理单元数量的动态扩容与缩容,使得每个任务都有任务处理单元来处理,有效的根据业务需求对任务处理单元数量进行扩容和缩容。
在一种可能实施方式中,上述容器水平伸缩装置300还包括接收单元304、入队单元305、分派单元306以及出队单元307。
上述接收单元304用于接收待处理任务。
上述入队单元305用于将待处理任务放入任务队列中。
可上述分派单元306用于将待处理任务分派至目标任务处理单元中。
上述出队单元307用于在目标任务处理单元完成待处理任务后,从任务队列中删除所述待处理任务。
在本申请实施例中,将任务处理单元池中未超负荷的任务处理单元确定为目标任务处理单元,将待处理任务分派至目标任务处理单元,由目标任务处理单元处理该待处理任务。解决任务处理单元处理的任务数不均衡的问题,提高了任务处理单元的利用效率。
在一种可能实施方式中,上述容器水平伸缩装置300还包括:
第二检测单元308,用于检测第一任务处理单元的状态,所述第一任务处理单元为任务处理单元池中的任一任务处理单元;
创建单元309,用于在所述第一任务处理单元状态异常的情况下,创建第二任务处理单元,所述第二任务处理单元用于处理所述第一任务处理单元正在处理的任务。
在本申请实施例中,检测第一任务处理单元的状态,在第一任务处理单元状态异常的情况下,创建第二任务处理单元,将第一任务处理单元正在处理的任务转移至第二任务处理单元中,保证任务队列中的各个任务能够正常执行。
在一种可能实施方式中,上述第一检测单元301用于以第一频率检测任务队列中的任务数量,所述第一频率与所述任务队列中的任务数量的变化率正相关。
在本申请实施例中,可以根据任务队列中的任务数量的变化率来控制检测任务队列中的任务数量的频率,从而控制任务处理单元数量的扩容和缩容的频率。任务队列中的任务数量变化率越大,任务处理单元数量的扩容或缩容的频率越高,可以根据任务需求调整容器水平伸缩延迟,提高容器水平伸缩的效率。
请参阅图4,图4为本申请实施例提供的一种容器水平伸缩***的结构示意图。如图4所示,该容器水平伸缩***400包括任务队列401、任务处理单元池402以及伸缩控制器403。
上述任务队列401用于记录未完成的任务数量。
上述任务处理单元池402用于管理任务处理单元,所述任务处理单元用于处理所述任务队列中的任务;
上述伸缩控制器403用于检测所述任务队列中的任务数量,利用所述任务数量计算期望任务处理单元数量;基于所述期望任务处理单元数量在任务处理单元池中新增或删除任务处理单元,所述任务处理单元用于处理所述任务队列中的任务。
可选的,上述容器水平伸缩***400还包括网关404,用于接收待处理任务;将待处理任务放入所述任务队列中;将所述待处理任务分派至目标任务处理单元中,所述目标任务处理单元属于第一任务处理单元集合,所述第一任务处理单元集合包含所述任务处理单元池中未超负荷的任务处理单元;在所述目标任务处理单元完成所述待处理任务后,从所述任务队列中删除所述待处理任务。
在本申请实施例中,利用任务队列记录未完成的任务的数量,以未完成的任务数量作为指标新增或删除任务处理单元,实现任务处理单元数量的动态扩容与缩容,使得每个任务都有任务处理单元来处理,有效的根据业务需求对任务处理单元数量进行扩容和缩容。
请参阅图5,图5为本申请实施例提供的一种电子设备的结构示意图,如图5所示,该电子设备500包括处理器501和存储器502。处理器501、存储器502可以通过通信总线503相互连接。通信总线503可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。通信总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器502用于存储计算机程序,计算机程序包括程序指令,处理器501被配置用于调用程序指令,上述程序包括用于执行图1和图2所示的方法中的部分或全部步骤。
处理器501可以是通用中央处理器(CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
存储器502可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
该电子设备500还可以包括通信接口,该通信接口包括通用串行总线(UniversalSerial Bus,USB)接口,可以用于连接外部存储介质。
此外,该电子设备500还可以包括天线等通用部件,在此不再详述。
本申请实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述图1和图2所示的方法实施例中记载的任何一种容器水平伸缩方法的部分或全部步骤。
应当理解的是,本申请的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本申请所附权利要求的保护范围。

Claims (7)

1.一种容器水平伸缩方法,其特征在于,包括:
检测任务队列中的任务数量;
利用所述任务数量计算期望任务处理单元数量;
确定任务处理单元池中的实际任务处理单元数量;
计算所述实际任务处理单元数量与所述期望任务处理单元数量之差,得到差数量;
在所述实际任务处理单元数量大于所述期望任务处理单元数量的情况下,删除所述差数量的任务处理单元;所述任务处理单元用于处理所述任务队列中的任务;
在所述实际任务处理单元数量小于所述期望任务处理单元数量,且所述期望任务处理单元数量小于任务处理单元数量阈值的情况下,新增所述差数量的任务处理单元,所述任务处理单元用于处理所述任务队列中的任务;所述任务处理单元数量阈值为所述任务处理单元池中最大可包含的任务处理单元的数量;
在所述实际任务处理单元数量小于所述期望任务处理单元数量,且所述期望任务处理单元数量大于所述任务处理单元数量阈值的情况下,新增任务处理单元的数量至所述任务处理单元数量阈值;
接收待处理任务;
将待处理任务放入所述任务队列中;
将所述待处理任务分派至目标任务处理单元中,所述目标任务处理单元属于第一任务处理单元集合,所述第一任务处理单元集合包含所述任务处理单元池中未超负荷的任务处理单元;所述目标任务处理单元为所述第一任务处理单元集合中正在处理的任务数较少的任务处理单元;
在所述目标任务处理单元完成所述待处理任务后,从所述任务队列中删除所述待处理任务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测第一任务处理单元的状态,所述第一任务处理单元为任务处理单元池中的任一任务处理单元;
在所述第一任务处理单元状态异常的情况下,创建第二任务处理单元,所述第二任务处理单元用于处理所述第一任务处理单元正在处理的任务。
3.根据权利要求1所述的方法,其特征在于,所述检测任务队列中的任务数量,包括:
以第一频率检测任务队列中的任务数量,所述第一频率与所述任务队列中的任务数量的变化率正相关。
4.一种容器水平伸缩装置,其特征在于,包括:
第一检测单元,用于检测任务队列中的任务数量;
计算单元,用于利用所述任务数量计算期望任务处理单元数量;
确定单元,用于确定任务处理单元池中的实际任务处理单元数量;
所述计算单元,还用于计算所述实际任务处理单元数量与所述期望任务处理单元数量之差,得到差数量;
删除单元,用于在所述实际任务处理单元数量大于所述期望任务处理单元数量的情况下,删除所述差数量的任务处理单元;所述任务处理单元用于处理所述任务队列中的任务;
新增单元,用于在所述实际任务处理单元数量小于所述期望任务处理单元数量,且所述期望任务处理单元数量小于任务处理单元数量阈值的情况下,新增所述差数量的任务处理单元,所述任务处理单元用于处理所述任务队列中的任务;所述任务处理单元数量阈值为所述任务处理单元池中最大可包含的任务处理单元的数量;
所述新增单元,还用于在所述实际任务处理单元数量小于所述期望任务处理单元数量,且所述期望任务处理单元数量大于所述任务处理单元数量阈值的情况下,新增任务处理单元的数量至所述任务处理单元数量阈值;
接收单元,用于接收待处理任务;将待处理任务放入所述任务队列中;
分配单元,用于将所述待处理任务分派至目标任务处理单元中,所述目标任务处理单元属于第一任务处理单元集合,所述第一任务处理单元集合包含所述任务处理单元池中未超负荷的任务处理单元;所述目标任务处理单元为所述第一任务处理单元集合中正在处理的任务数较少的任务处理单元;
所述删除单元,还用于在所述目标任务处理单元完成所述待处理任务后,从所述任务队列中删除所述待处理任务。
5.一种容器水平伸缩***,其特征在于,包括:
任务队列,用于记录未完成的任务数量;
任务处理单元池,用于管理任务处理单元,所述任务处理单元用于处理所述任务队列中的任务;
伸缩控制器,用于检测所述任务队列中的任务数量;
以及利用所述任务数量计算期望任务处理单元数量;
以及确定所述任务处理单元池中的实际任务处理单元数量;
以及用于计算所述实际任务处理单元数量与所述期望任务处理单元数量之差,得到差数量;
以及用于在所述实际任务处理单元数量大于所述期望任务处理单元数量的情况下,删除所述差数量的任务处理单元;所述任务处理单元用于处理所述任务队列中的任务;
以及用于在所述实际任务处理单元数量小于所述期望任务处理单元数量,且所述期望任务处理单元数量小于任务处理单元数量阈值的情况下,新增所述差数量的任务处理单元,所述任务处理单元用于处理所述任务队列中的任务;所述任务处理单元数量阈值为所述任务处理单元池中最大可包含的任务处理单元的数量;
以及用于在所述实际任务处理单元数量小于所述期望任务处理单元数量,且所述期望任务处理单元数量大于所述任务处理单元数量阈值的情况下,新增任务处理单元的数量至所述任务处理单元数量阈值;
以及接收待处理任务;将待处理任务放入所述任务队列中;将所述待处理任务分派至目标任务处理单元中,所述目标任务处理单元属于第一任务处理单元集合,所述第一任务处理单元集合包含所述任务处理单元池中未超负荷的任务处理单元;所述目标任务处理单元为所述第一任务处理单元集合中正在处理的任务数较少的任务处理单元;在所述目标任务处理单元完成所述待处理任务后,从所述任务队列中删除所述待处理任务。
6.一种电子设备,其特征在于,包括处理器以及存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,所述程序包括用于执行如权利要求1~3任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1~3任一项所述的方法。
CN202110916250.XA 2021-08-10 2021-08-10 容器水平伸缩方法、装置、电子设备及存储介质 Active CN113778617B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110916250.XA CN113778617B (zh) 2021-08-10 2021-08-10 容器水平伸缩方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110916250.XA CN113778617B (zh) 2021-08-10 2021-08-10 容器水平伸缩方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113778617A CN113778617A (zh) 2021-12-10
CN113778617B true CN113778617B (zh) 2024-06-18

Family

ID=78837202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110916250.XA Active CN113778617B (zh) 2021-08-10 2021-08-10 容器水平伸缩方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113778617B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114301917A (zh) * 2021-12-27 2022-04-08 深圳市赛为智能股份有限公司 一种弹性伸缩的设备接入***及其工作方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078386A (zh) * 2019-12-30 2020-04-28 北京奇艺世纪科技有限公司 一种分布式调度***的控制方法及控制装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449614B1 (en) * 1999-03-25 2002-09-10 International Business Machines Corporation Interface system and method for asynchronously updating a share resource with locking facility
CN109471733A (zh) * 2018-11-22 2019-03-15 郑州云海信息技术有限公司 一种资源控制方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111078386A (zh) * 2019-12-30 2020-04-28 北京奇艺世纪科技有限公司 一种分布式调度***的控制方法及控制装置

Also Published As

Publication number Publication date
CN113778617A (zh) 2021-12-10

Similar Documents

Publication Publication Date Title
CN114138486B (zh) 面向云边异构环境的容器化微服务编排方法、***及介质
US5463776A (en) Storage management system for concurrent generation and fair allocation of disk space among competing requests
US7945913B2 (en) Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
US10356150B1 (en) Automated repartitioning of streaming data
CN104539708B (zh) 一种云平台资源的缩容方法、装置与***
CN103077197A (zh) 一种数据存储方法装置
CN104461673B (zh) 一种虚拟机迁移判定方法及装置
CN105446653A (zh) 一种数据合并方法和设备
CN105824705B (zh) 一种任务分配方法和电子设备
CN114168302A (zh) 任务调度方法、装置、设备及存储介质
CN113778617B (zh) 容器水平伸缩方法、装置、电子设备及存储介质
US20110153971A1 (en) Data Processing System Memory Allocation
CN114625533A (zh) 分布式任务调度方法、装置、电子设备及存储介质
CN101446906B (zh) 一种调度多批处理任务的方法及***
CN108694083B (zh) 一种服务器的数据处理方法和装置
CN106775975B (zh) 进程调度方法及装置
CN111158904A (zh) 一种任务调度方法、装置、服务器及介质
Shu-Jun et al. Optimization and research of hadoop platform based on fifo scheduler
CN109347982A (zh) 一种数据中心的调度方法及装置
CN117519930A (zh) 批量任务的执行方法、装置及电子设备
CN107797870A (zh) 一种云计算数据资源调度方法
CN104794000A (zh) 一种作业调度方法及***
CN1773458A (zh) 用于管理资源元素队列的方法和控制器
CN110308991A (zh) 一种基于随机任务的数据中心节能优化方法及***
CN114237902A (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