CN115129484A - 集群的扩缩容方法、装置、存储介质及电子装置 - Google Patents
集群的扩缩容方法、装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN115129484A CN115129484A CN202211068528.3A CN202211068528A CN115129484A CN 115129484 A CN115129484 A CN 115129484A CN 202211068528 A CN202211068528 A CN 202211068528A CN 115129484 A CN115129484 A CN 115129484A
- Authority
- CN
- China
- Prior art keywords
- current
- cluster
- current cluster
- idle
- preset
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例提供了一种集群的扩缩容方法、装置、存储介质及电子装置,其中,该集群的扩缩容方法包括:获取当前集群内当前工作节点的当前数量;根据当前数量、当前集群的当前参数,对当前集群进行第i次扩缩容,其中,i大于1,当前参数包括:当前集群中未处理完的分片的数量、当前集群的当前内存利用率。通过本发明,解决了相关技术中存在的在执行应用任务时,由于资源分配不合理会影响应用任务的执行效率或造成资源浪费的问题。
Description
技术领域
本发明实施例涉及大数据计算资源管理领域,具体而言,涉及一种集群的扩缩容方法、装置、存储介质及电子装置。
背景技术
对于大数据应用来说,资源(包括cpu,内存和磁盘)是影响应用执行效率的一个重要因素。当一个长期运行的应用,若分配给大量资源,可是却只有少量甚至没有任务分配给它,而此时有其他的应用却资源紧张,这就造成了很大的资源浪费和资源不合理的调度。
Trino是一个高度并行和分布式的查询引擎,Trino 服务有两种类型:协调器节点和工作节点。协调器负责解析语句、计划查询和管理工作节点,工作节点负责执行任务和处理数据。目前,在使用Trino作业计算时,启动固定工作节点的数量(单个工作节点为资源的基本分配单位),使得在Trino在资源配置过小时容易导致内存溢出或者执行速度过慢,或者资源配置过大时导致资源浪费。因此在执行应用任务时,由于资源分配不合理会影响应用任务的执行效率或造成资源浪费。
针对相关技术中存在的在执行应用任务时,由于资源分配不合理会影响应用任务的执行效率或造成资源浪费的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种集群的扩缩容方法、装置、存储介质及电子装置,以至少解决相关技术中存在的在执行应用任务时,由于资源分配不合理会影响应用任务的执行效率或造成资源浪费的问题。
根据本发明的一个实施例,提供了一种集群的扩缩容方法,包括:获取当前集群内当前工作节点的当前数量;根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,其中,所述i大于1,所述当前参数包括:所述当前集群中未处理完的分片的数量、所述当前集群的当前内存利用率。
在一个示例性实施例中,根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,包括:根据所述当前集群中未处理完的分片的数量确定所述当前集群需要的工作节点的第一最大数量;在所述第一最大数量大于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容;在所述第一最大数量小于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行缩容。
在一个示例性实施例中,在所述第一最大数量大于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容,包括:根据所述当前数量和第一预设增加数量确定第一调整数量;将所述第一调整数量与所述第一最大数量之间的最小值,确定为所述当前集群实际需要增加的工作节点的第一目标数量;将所述当前集群中当前工作节点的数量调整为所述第一目标数量。
在一个示例性实施例中,在所述将所述当前集群中当前工作节点的数量调整为所述第一目标数量之后,所述方法还包括:在所述第一目标数量小于所述第一最大数量的情况下,将所述第一预设增加数量调整为第二预设增加数量,其中,所述第二预设增加数量大于所述第一预设增加数量,所述第二预设增加数量用于下一次对所述当前集群进行扩容。
在一个示例性实施例中,在所述第一最大数量小于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行缩容,包括:获取所述当前集群内处于空闲状态的工作节点,以及所述空闲状态的工作节点的空闲时长;
在所述空闲时长大于或等于第一空闲时长阈值的情况下,删除所述当前集群中所述空闲状态的工作节点,其中,所述第一空闲时长阈值与所述当前集群的扩缩容频率相关,所述当前集群的扩缩容频率越大所述第一空闲时长阈值越大。
在一个示例性实施例中,在所述删除所述当前集群中所述空闲状态的工作节点之后,所述方法还包括:获取对所述当前集群进行上一次扩容与第i次扩缩容的时间间隔;根据所述时间间隔和所述第一空闲时长阈值的大小,对所述第一空闲时长阈值进行调整。
在一个示例性实施例中,所述根据所述时间间隔和所述第一空闲时长阈值的大小,对所述第一空闲时长阈值进行调整,包括:根据所述第一空闲时长阈值与预设参数的乘积确定目标阈值;在所述时间间隔小于或等于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第二空闲时长阈值,其中,所述第二空闲时长阈值大于所述第一空闲时长阈值;在所述时间间隔大于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第三空闲时长阈值,其中,所述第三空闲时长阈值小于所述第一空闲时长阈值;其中,所述第二空闲时长阈值或所述第三空闲时长阈值用于下一次对所述当前集群进行缩容。
在一个示例性实施例中,根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,还包括:获取所述当前集群的所述当前内存利用率;在所述当前内存利用率大于或等于预设内存利用率阈值的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容。
在一个示例性实施例中,在所述当前内存利用率大于或等于预设内存利用率阈值的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容,包括:根据所述当前数量、所述当前内存利用率确定所述当前集群需要的工作节点的第二最大数量;根据所述当前数量和第三预设增加数量确定第二调整数量;将所述第二调整数量与所述第二最大数量之间的最小值,确定为所述当前集群实际需要增加的工作节点的第二目标数量;将所述当前集群中当前工作节点的数量调整为所述第二目标数量。
在一个示例性实施例中,在所述将所述当前集群中当前工作节点的数量调整为所述第二目标数量之后,所述方法还包括: 在所述第二目标数量小于所述第二最大数量的情况下,将所述第三预设增加数量调整为第四预设增加数量,其中,所述第四预设增加数量大于所述第三预设增加数量,所述第四预设增加数量用于下一次对所述当前集群进行扩容。
根据本发明的又一个实施例,还提供了一种集群的扩缩容装置,包括:获取模块,用于获取当前集群内当前工作节点的当前数量;扩缩容模块,用于根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,其中,所述i大于1,所述当前参数包括:所述当前集群中未处理完的分片的数量、所述当前集群的当前内存利用率。
根据本发明的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,通过根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行扩缩容,因此可以根据当前集群中的负载情况,实时的增加或减少工作节点的数量,从而实现为当前执行的应用任务合理的分配资源,解决了现有技术中在执行应用任务时,由于资源分配不合理会影响应用任务的执行效率或造成资源浪费的问题,达到了在保证应用任务的执行效率的情况下也不会造成资源浪费的效果。
附图说明
图1是本发明实施例的集群的扩缩容方法方法的移动终端硬件结构框图;
图2是根据本发明实施例的集群的扩缩容方法的流程图;
图3是根据本发明具体实施例的Trino集群初始启动流程示意图;
图4(a)是根据本发明具体实施例的定时任务1中扩容的流程示意图;
图4(b)是根据本发明具体实施例的定时任务1中缩容的流程示意图;
图5是根据本发明具体实施例的定时任务2的流程示意图;
图6是根据本发明实施例的集群的扩缩容装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明的实施例。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的集群的扩缩容方法的移动终端硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的集群的扩缩容方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种集群的扩缩容方法,图2是根据本发明实施例的集群的扩缩容方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,获取当前集群内当前工作节点的当前数量;
其中,上述当前集群内当前工作节点的数量为curNumWorkers。
步骤S204,根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,其中,所述i大于1,所述当前参数包括:所述当前集群中未处理完的分片的数量、所述当前集群的当前内存利用率;
在本实施例中,集群指一组相互独立的计算机组成的一个较大的计算机服务***,每个计算机即集群中的节点,都是运行各自服务的独立服务器,服务器之间可以互相通信,集群中的计算机服务器合作完成同一任务。
可选的,当前集群可以为在使用Trino执行应用任务时的Trino集群,当前工作节点为Trino集群负责执行任务和处理数据的工作节点。
在执行应用任务时,将单一应用任务按特定逻辑切分为多个独立子任务,将多个独立子任务下部署至集群中的不同节点,由不同的节点执行子任务,多个节点共同完成上述单一应用任务,提高应用任务的执行效率。上述一个独立子任务可以被划分成一个或多个分片进行处理,以提高任务的处理效率。
单个工作节点为计算资源的基本分配单位,因此集群中工作节点的数量多少可以用来表示为应用任务分配的计算资源的多少,当前工作节点的当前数量表示当前为当前待执行的应用任务分配的计算资源的多少。
当前集群的当前参数是包括当前集群中未处理完的分片的数量、所述当前集群的当前内存利用率。根据当前集群中未处理完的分片的数量可以判断出当前集群的繁忙程度,在当前集群较繁忙的时候,增加集群中的工作节点即对当前集群进行扩容,提高应用任务的执行效率,在当前集群空闲的时候,减少集群中的工作节点,释放空闲的工作节点即对当前集群进行缩容,使得资源的利用率增加。
通过上述步骤,通过根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行扩缩容,因此可以根据当前集群中的负载情况,实时的增加或减少工作节点的数量,从而实现为当前执行的应用任务合理的分配资源,解决了现有技术中在执行应用任务时,由于资源分配不合理会影响应用任务的执行效率或造成资源浪费的问题,达到了在保证应用任务的执行效率的情况下也不会造成资源浪费的效果。
在一个可选的实施例中,根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,包括:根据所述当前集群中未处理完的分片的数量确定所述当前集群需要的工作节点的第一最大数量;在所述第一最大数量大于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容;在所述第一最大数量小于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行缩容。
在本实施例中,未处理完的分片的数量可以表示集群的繁忙程度,根据未处理完的分片的数量计算集群最大需要的工作节点数量,即上述第一最大数量。
可选的,上述未处理完的分片的数量可以通过如下公式得到:
numAllSplits = numPendingSplits+numRunningSplits+blockedSplits
其中,numAllSplits为当前集群所有未处理完的分片的数量,numPendingSplits为待处理的分片数量,numRunningSplits为正在运行的分片的数量,blockedSplits为阻塞的分片的数量。
可选的,第一最大数量可以通过以下公式计算得到:
maxNeedWorkers = Math.ceil(numAllSplits * allocationRatio/ task.max-worker-threads)
其中,maxNeedWorkers为第一最大数量,numAllSplits为未处理完的分片的数量,allocationRatio是一个系数,范围为[0,1],可以根据实际情况设置,也可以设置为默认值,默认值可以通过以下公式得到:
task.max-worker-threads/node-scheduler.max-splits-per-node
其中,node-scheduler.max-splits-per-node为配置参数(可以预先进行配置),表示每个工作节点可以运行的分片的总数,task.max-worker-threads为配置参数(可以预先进行配置),表示每个工作节点处理分片的最大线程数,Math.ceil表示取大于或等于表达式的最小整数。
可选的上述配置参数:node-scheduler.max-splits-per-node和task.max-worker-threads均为预先设置的Trino集群中工作节点的配置参数。
在第一最大数量大于当前数量的情况下,说明当前集群处于繁忙状态,即就当前数量的当前工作节点而言,处理掉当前集群中未处理完的分片时耗时会比较或者会在处理过程中出现内存溢出的情况,也就是说为未处理完的分片分配的资源较少,需要分配更多资源,即需要在当前集群中添加工作节点,即将所述第i次扩缩容确定为对所述当前集群进行扩容;
在第一最大数量小于当前数量的情况下,说明当前集群处于空闲状态,即处理掉当前集群中未处理完的分片并不需要当前数量的当前工作节点而言,也就是说为未处理完的分片分配的资源太多,造成了资源的浪费,需要减少分配的资源,即需要在当前集群中释放一些工作节点,即将所述第i次扩缩容确定为对所述当前集群进行缩容。
在一个可选的实施例中,在所述第一最大数量大于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容,包括:根据所述当前数量和第一预设增加数量确定第一调整数量;将所述第一调整数量与所述第一最大数量之间的最小值,确定为所述当前集群实际需要的工作节点的第一目标数量;将所述当前集群中当前工作节点的数量调整为所述第一目标数量。
在本实施例中,在对当前集群进行扩容时,首先需要确定在当前集群中扩容后集群中的工作节点的第一目标数量,在确定第一目标数量后调用资源管理器的应用程序编码接口(yarn service api)增加工作节点,将当前集群中的工作节点数量调整至第一目标数量。
由于在调用yarn service api扩容工作节点存在秒级的延迟,在新的工作节点运行时可能已经不需要第一最大数量这么多的工作节点,因此实际需要的工作节点并不一定等于第一最大数量。
可选的,Apache Yarn是Hadoop的集群资源管理***,具有足够的通用性,同样可以支持其它的分布式计算模式,不同计算组件通过Yarn可以共享集群资源,按需分配,这样可以提升整个资源的利用率,Spark、Flink等计算框架可作为Yarn应用运行在集群计算层。但是目前Trino不支持部署在yarn上,无法与hadoop 生态***的其它组件实现统一资源分配,通过上述调用yarn service api扩容工作节点可以实现Trino与其他大数据组件共享资源,统一调度。
第一预设增加数量为预设的在对集群扩容时实际需要增加的工作节点数量,根据当前集群的当前数量与第一预设增加数量的和确定第一调整数量;比较第一调整数量和第一最大数量的大小,将两者中较小的数量确定为集群中的最终工作节点的数量(对应于上述第一目标数量)。
需要说明的是,第一预设增加数量并不是固定不变的,在每次扩容后,可以根据第一调整数量和第一最大数量的大小选择是否对第一预设增加数量进行调整。
如果第一最大数量(maxNeedWorkers)大于当前数量(curNumWorkers),则最大需要工作节点数量大于当前工作节点数量(表示当前集群繁忙状态)。则计算集群实际需要的工作节点个数(第一目标数量,targetNums),具体地可以通过如下公式计算上述第一目标数量:
targetNums = Math.min(curNumWorkers+ addNumsBySplits,maxNeedWorkers)
其中,上述curNumWorkers为上述当前数量,addNumsBySplits为上述第一预设增加数量,上述第一调整数量为当前数量curNumWorkers与第一预设增加数量addNumsBySplits的和,maxNeedWorkers为上述第一最大数。将上述curNumWorkers+addNumsBySplits(第一调整数量)与maxNeedWorkers(第一最大数量)之间的最小值确定为集群实际需要的工作节点个数(第一目标数量,targetNums)。
在一个可选的实施例中,在所述将所述当前集群中当前工作节点的数量调整为所述第一目标数量之后,所述方法还包括:在所述第一目标数量小于所述第一最大数量的情况下,将所述第一预设增加数量调整为第二预设增加数量,其中,所述第二预设增加数量大于所述第一预设增加数量,所述第二预设增加数量用于下一次对所述当前集群进行扩容。
在本实施例中,由于调用yarn service api扩容工作节点存在秒级的延迟,在新的工作节点运行时可能已经不需要第一最大数量这么多的工作节点。
第一最大数量(maxNeedWorkers)大于当前数量(curNumWorkers)基础上,在第一目标数量(targetNums)小于第一最大数量(maxNeedWorkers)的情况下,不需要把工作节点的数量直接调整至第一最大数量,但是为了扩容时增加的工作节点数量不够,将实际需要增加的工作节点数量进行适当扩大,将第一预设增加数量调整为第二预设增加数量,调整后的第二预设增加数量大于第一预设增加数量,具体地,可以将第二预设增加数量确定为第一预设增加数量的n倍(n大于1,可以根据实际情况而定,例如第二预设增加数量是第一预设增加数量的2倍),即:
addNumsBySplits’= addNumsBySplits*n
其中,addNumsBySplits’为上述第二预设增加数量,addNumsBySplits为第一预设增加数量。
也可以将第二预设增加数量确定为第一预设增加数量与预设参数W的和(预设参数W可以根据实际情况而定,例如可以是2、5、8等),即:
addNumsBySplits’= addNumsBySplits+W
在上述实施例中,调整后的第二预设增加数量用于对当前集群进行下一次的扩容。
作为另一个可选的实施方式,可以设置循环检测当前集群是否需要进行扩缩容的循环检测时间,例如可以是1秒,该循环检测可以通过定时任务实现,例如定时任务设置为1秒循环一次检测是否需要对当前集群进行扩缩容。如果在本次循环(第i次扩缩容对应的循环)中第一最大数量(maxNeedWorkers)等于当前数量(curNumWorkers)则结束本次循环。如果本次循环中第一最大数量(maxNeedWorkers)小于当前数量(curNumWorkers)则将第一预设增加数量addNumsBySplits调整为预设值(例如,令addNumsBySplits = 1),并对当前集群进行缩容。
在本实施例中,由于调用yarn service api扩容工作节点存在秒级的延迟,在新的工作节点运行时可能已经不需要第一最大数量这么多的工作节点。但为避免每次扩容的工作节点数量不够,可以在下一次扩容时折中取上次扩容数量的两倍与maxNeedWorkers的较小值,也就是第i次扩缩容为扩容的情况下,若第i+1次扩缩容也是扩容,可以在第i+1次扩缩容中将集群中工作节点的数量扩容至第一目标数量与第一最大数量之间的最小值。
在一个可选的实施例中,在所述第一最大数量小于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行缩容,包括:获取所述当前集群内处于空闲状态的工作节点,以及所述空闲状态的工作节点的空闲时长;在所述空闲时长大于或等于第一空闲时长阈值的情况下,删除所述当前集群中所述空闲状态的工作节点,其中,所述第一空闲时长阈值与所述当前集群的扩缩容频率相关,所述当前集群的扩缩容频率越大所述第一空闲时长阈值越大。
在本实施例中,在对当前集群进行缩容时,要释放当前集群中处于空闲状态的工作节点。但是由于处于空闲状态的工作节点可能只是在处理分片的过程中暂时处于空闲状态,如果将这工作节点也删除掉,可能会剩下的工作节点数量较少,不足以完成处理未处理完的切片任务,因此在删除空闲节点的时候,需要删除掉长时间空闲的工作节点,即在空闲工作节点的空闲时长大于或等于第一空闲时长阈值的情况下,删除该工作节点。
可选的,遍历当前集群中所有的工作节点,如果当前遍历的工作节点被标记为空闲状态,则该工作节点为空闲状态的节点。
如果当前遍历的节点没有被标记为空闲状态,再判断该工作节点是否有任务正在处理,若没有任务正在处理则标记该工作节点为空闲状态,并记录当前时间,更新当前工作节点数量curNumWorker(减去空闲状态的工作节点的数量)。
对于已标记为空闲状态的工作节点, idleIntervalTime为该空闲状态的工作节点被标记为空间状态时记录的时间与当前时间的时间间隔(空闲状态的工作节点的空闲时长),如果curNumWorkers大于minGlobalWorkers(预先设置的集群内工作节点的最小数量,可以根据实际情况设置,例如1、3、5、10等),且idleIntervalTime大于outTime(第一空闲时长阈值),则在集群中删除该工作节点容器。
上述outTime可以配置取值范围为[outMinTime,outMaxTime],outMinTime、outMaxTime 可以根据实际情况设置,例如:3秒、5秒、3分钟、5分钟等。outTime与集群扩缩容的频率相关,初始值可以设置为outMinTime。
需要说明的是,第一空闲时长阈值outTime也不是固定不变的,在每次扩容后,可以根据当前集群的扩缩容频率选择是否对第一空闲时长阈值进行调整。当前集群的扩缩容频率由上一次扩容与本次缩容(第i次缩容)的时间间隔确定。
在一个可选的实施例中,在所述删除所述当前集群中所述空闲状态的工作节点之后,所述方法还包括:获取对所述当前集群进行上一次扩容与第i次缩容的时间间隔;根据所述时间间隔和所述第一空闲时长阈值的大小,对所述第一空闲时长阈值进行调整。
在本实施例中,本次(第i次)扩缩容被确定为对当前集群进行缩容,获取上一次对当前集群进行扩容的时间和本次缩容的时间,从而获取当前集群进行上一次扩容与第i次扩缩容的时间间隔。
其中,上一次对当前集群进行扩容的时间为最后一次进行扩容的时间,例如,第i-1次扩缩容为对当前集群进行扩容的情况下,上一次对当前集群进行扩容的时间为第i-1次扩缩容的时间,第i-1次扩缩容为对当前集群进行缩容、第i-2次扩缩容为对当前集群进行扩容的情况下,则上一次对当前集群进行扩容的时间为第i-2次扩缩容的时间。
在一个可选的实施例中,所述根据所述时间间隔和所述第一空闲时长阈值的大小,对所述第一空闲时长阈值进行调整,包括:根据所述第一空闲时长阈值与预设参数的乘积确定目标阈值;在所述时间间隔小于或等于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第二空闲时长阈值,其中,所述第二空闲时长阈值大于所述第一空闲时长阈值;在所述时间间隔大于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第三空闲时长阈值,其中,所述第三空闲时长阈值小于所述第一空闲时长阈值;其中,所述第二空闲时长阈值或所述第三空闲时长阈值用于下一次对所述当前集群进行缩容。
在本实施例中,上述时间间隔可以用exConIntervalTime表示,预设参数可以根据实际情况设置,例如可以是2、3、5等。以上述预设参数是2为例,目标阈值为2倍的outTime。如果上一次扩容与本次缩容时间间隔exConIntervalTime小于等于2倍的outTime,代表频繁扩缩容的情景,说明扩缩容频率过于频繁,此时需要将第一空闲时长阈值增大到第二空闲时长阈值,降低扩缩容频率,例如另outTime’=2*outTime,其中,outTime’为第二空闲时长阈值,outTime为第一空闲时长阈值;在时间间隔大于目标阈值时,说明扩缩容频率较低,需要需要将第一空闲时长阈值减小到第三空闲时长阈值,例如,另outTime’’=outTime/2,其中,outTime’’为第三空闲时长阈值,outTime为第一空闲时长阈,以此增大扩缩容频率。
第一空闲时长阈值增大到第二空闲时长阈值可以是将第一空闲时长阈值扩大到原来的两倍,第一空闲时长阈值降低至第三空闲时长可以是将第一空闲时长阈值缩小到原来的一半,也可以通过其他的调整方式调整,此处不作限定。
第二空闲时长阈值或所述第三空闲时长阈值用于在下一次对当前集群进行缩容时判断是否删除空闲工作节点,也可以通过其他的调整方式,此处不作限定。
作为一个可选的实施方式,还可以预先设置当前集群全局最大工作节点数量maxGlobalWorkers,在当前集群的工作节点的当前数量curNumWorkers小于上述maxGlobalWorkers的情况下,对当前集群进行扩缩容。
在一个可选的实施例中,根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,还包括:获取所述当前集群的所述当前内存利用率;在所述当前内存利用率大于或等于预设内存利用率阈值的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容。
在本实施例中,在工作节点处理任务时,需要利用工作节点对应服务器的内存,为了节省资源和工作高效,工作节点整体的内存利用率需要保持在一定的范围内,在内存利用率大于或等于预设内存利用率阈值时,需要对当前集群进行扩容,以扩大当前集群的整体内存,降低内存利用率,同时要保证内存利用率大于预设最低内存利用率。上述预设内存利用率阈值可以根据实际情况设置,例如90%、80%等。以上述预设内存利用率阈值为90%为例,当前集群整体内存利用率m%,如果m%大于等于 90%,则需要对当前集群进行扩容。
在一个可选的实施例中,在所述当前内存利用率大于或等于预设内存利用率阈值的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容,包括:根据所述当前数量、所述当前内存利用率确定所述当前集群需要的工作节点的第二最大数量;根据所述当前数量和第三预设增加数量确定第二调整数量;将所述第二调整数量与所述第二最大数量之间的最小值,确定为所述当前集群实际需要增加的工作节点的第二目标数量;将所述当前集群中当前工作节点的数量调整为所述第二目标数量。
在本实施例中,根据当前工作节点的当前数量和当前内存利用率计算出最大需要的工作节点数量,即上述第二最大数量。
可选的,第二最大数量可以通过以下公式计算得到:
maxNeedWorkers=curNumWorkers*(m%+0.4)
其中,m%为当前内存利用率。
使用该公式计算得到的第二最大数量可以使扩容后的内存利用率在小于预设内存利用率阈值的同时,也不会使内存利用率降低至预设最低内存利用率(可以预先设置,例如60%)之下。可选的,上述第二最大数量不可超过全局最大工作节点数量maxGlobalWorkers。
在对当前集群进行扩容时,确定在当前集群中扩容后集群中的工作节点的第二目标数量,可以通过如下公式计算上述第二目标数量:targetNums = Math.min(curNumWorkers+addNumsByMem,maxNeedWorkers)
其中,targetNums为第二目标数量,addNumsByMem为第三预设增加数量,curNumWorkers+addNumsByMem为第二调整数量,第二目标数量为curNumWorkers+addNumsByMem和maxNeedWorkers之间的最小值。
第三预设增加数量为预设的在对集群扩容时实际需要增加的工作节点数量,根据当前集群的当前数量与第三预设增加数量的和确定第二调整数量;比较第二调整数量和第二最大数量的大小,将两者中较小的数量确定为集群中的最终工作节点的数量(对应于上述第二目标数量)。在确定第二目标数量后调用资源管理器的应用程序编码接口(yarnservice api)增加工作节点,将当前集群中的工作节点数量调整至第二目标数量。
需要说明的是,第三预设增加数量并不是固定不变的,在每次扩容后,可以根据第二调整数量和第二最大数量的大小选择是否对第一预设增加数量进行调整。
在一个可选的实施例中,在所述将所述当前集群中当前工作节点的数量调整为所述第二目标数量之后,所述方法还包括: 在所述第二目标数量小于所述第二最大数量的情况下,将所述第三预设增加数量调整为第四预设增加数量,其中,所述第四预设增加数量大于所述第三预设增加数量,所述第四预设增加数量用于下一次对所述当前集群进行扩容。
在本实施例中,在第二目标数量小于第二最大数量的情况下,表示扩容时增加的工作节点数量不够,将实际需要增加的工作节点数量进行适当扩大,可以将第三预设增加数量调整为第四预设增加数量,调整后的第四预设增加数量用于下一次的扩容过程中。
例如可以使取第四预设增加数量为第三预设增加数量的2倍,第二目标数量targetNums小于第二最大数量maxNeedWorkers,那么令addNumsByMem’= addNumsByMem*2,其中,addNumsByMem’为第四预设增加数量,addNumsByMem为第三预设增加数量。
也可以由其他方式将第三预设增加数量调整至第四预设增加数量,例如将第三预设增加数量与预设参数之间的和确定为第四预设增加数量,预设参数可以根据实际情况而定,例如3、5等。
可选的,在所述当前内存利用率小于预设内存利用率阈值的情况下,则不需要对当前集群进行扩容操作,则将第三预设增加数量addNumsByMem调整为预设值(例如,令addNumsByMem = 1)。
可选的,在第i次扩缩容任务结束之后,间隔预设时间后进行第i+1次扩缩容任务。
显然,上述所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。
下面结合实施例对本发明进行具体说明:
图3是根据本发明具体实施例的Trino集群初始启动流程示意图,如图3所示,包括以下步骤:
步骤301:设置配置参数,给工作节点数量设置一个合理的区间[minGlobalWorkers,maxGlobalWorkers],动态扩缩容后的工作节点数量需要在该区间内,minGlobalWorkers表示集群中的工作节点数量最小数量,maxGlobalWorkers表示集群中的工作节点数量最大数量,其中配置参数包括每个工作节点可以运行的分片的总数node-scheduler.max-splits-per-node、每个工作节点处理分片的最大线程数task.max-worker-threads等;
步骤302:设置协调器节点数量设置为1,工作节点数量为minGlobalWorkers,同时为协调器和工作节点设置cpu数量、内存大小等;
步骤303:将以上设置封装成json格式,并调用yarn service api 拉起初始化Trino集群;
步骤304:协调器启动定时任务1和定时任务2,通过定时任务1和定时任务2对Trino集群进行扩缩容,其中定时任务1对应于上述根据当前集群中未处理完的分片的数量进行扩缩容,定时任务2对应于上述根据当前集群的当前内存利用率进行扩缩容;
定时任务1的流程包括图4(a)和图4(b)中所示的步骤,图4(a)是一种扩容的流程示意图,图4(b)是一种缩容的流程示意图,其中图4(a)提供了根据当前集群中未处理完的分片的数量进行扩容的流程步骤,图4(b)提供了根据当前集群中未处理完的分片的数量进行缩容的流程步骤,如图所示,定时任务1中根据当前集群中未处理完的分片的数量进行扩缩容的流程步骤,包括以下步骤:
步骤401:获取当前工作节点数量curNumWorkers(对应于当前数量);
步骤402:计算当前集群所有的分片数量numAllSplits(对应于未处理完的分片的数量):
numAllSplits = numPendingSplits+numRunningSplits+blockedSplits
其中,numAllSplits为当前集群所有未处理完的分片的数量,numPendingSplits为待处理的分片数量,numRunningSplits为正在运行的分片的数量,blockedSplits为阻塞的分片的数量;
步骤403:根据集群所有的分片数量计算最大需要的工作节点数量maxNeedWorkers(对应于第一最大数量);
步骤404:最大需要的工作节点数量maxNeedWorkers不可超过全局最大工作节点数量maxGlobalWorkers:
即maxNeedWorkers= Math.min(maxNeedWorkers, maxGlobalWorkers);
步骤405:判断最大需要的工作节点数量maxNeedWorkers与当前工作节点数量curNumWorkers大小,在maxNeedWorkers大于curNumWorkers时执行如图4(a)中所示步骤406至步骤409,在maxNeedWorkers小于或等于curNumWorkers时执行如图4(b)中所示步骤409至步骤421;
步骤406:计算扩容工作节点后的指定数量targetNums,对应于第一目标数量,addNumsBySplit对应于第一预设增加数量:
targetNums=Math.min(curNumWorkers+addNumsBySplits,maxNeedWorkers)
步骤407:调用yarn service api将工作节点扩容到指定数量targetNums,并记录此次扩容的时间;
步骤408:判断指定数量targetNums和最大需要的工作节点数量maxNeedWorkers的大小,如果targetNums小于maxNeedWorkers,执行步骤409;如果targetNums大于或等于maxNeedWorkers,执行步骤422;
步骤409:令addNumsBySplits= addNumsBySplits*2,对应于将第一预设增加数量调整为第二预设增加数量,然后执行步骤422;
步骤410:判断最大需要的工作节点数量maxNeedWorkers是否小于当前工作节点数量curNumWorkers,在maxNeedWorkers小于curNumWorkers时执行步骤411,在maxNeedWorkers等于curNumWorkers时执行步骤422;
步骤411,令addNumsBySplits=1,对应于第一预设增加数量减少为第五预设增加数量,并循环遍历每一个工作节点;
步骤412,取出一个工作节点;
步骤413,判断该工作节点是否被标记为空闲状态,如果是执行步骤414,如果不是则执行步骤421;
步骤414,判断当前工作节点数量curNumWorkers是否大于全局最小工作节点数量maxGlobalWorkers,如果是则执行步骤415,如果不是则执行步骤417;
步骤415,判断空闲时长idleIntervalTime是否大于第一空闲时长阈值outTime,如果是则执行步骤416,如果不是则执行步骤417;其中空闲时长idleIntervalTime为该工作节点被标记为空间状态时记录的时间与当前时间的时间间隔;
步骤416,删除该空闲节点;
步骤417,判断是否已经遍历全部工作节点;如果是则执行步骤418,如果不是则执行步骤412,取出下一个工作节点;
步骤418,判断上一次扩容与本次缩容的时间间隔exConIntervalTime是否小于或等于2倍的outTime,如果是执行步骤419,如果不是执行步骤420;
步骤419,调整outTime=2*outTime,对应于将所述第一空闲时长阈值调整为第三空闲时长阈值;
步骤420,调整outTime=outTime/2,对应于第三空闲时长阈值小于所述第一空闲时长阈值;需要说明的是(outTime始终保持在配置值[outMinTime,outMaxTime]范围内);
步骤421,如果该工作节点没有任务正在处理则标记该节点为空闲状态,并记录当前时间,然后执行步骤417;
步骤422,定时任务1本次循环结束,返回等下一次循环。
图5是根据本发明具体实施例的定时任务2的流程示意图,如图5所示,提供了根据当前集群的当前内存利用率进行扩缩容的流程步骤,包括以下步骤:
步骤501:获取当前工作节点数量curNumWorkers;
步骤502:判断当前工作节点数量curNumWorkers是否小于最大工作节点数量maxGlobalWorkers;如果是执行步骤503,如果不是则执行步骤12;
步骤503:判断当前集群整体内存利用率m%是否大于等于 90%(对应于上述预设内存利用率阈值),如果是,执行步骤504,如果不是执行步骤510;
步骤504:计算最大需要的工作节点数量(对应于上述第二最大数量)为:maxNeedWorkers=curNumWorkers*(m%+0.4),该算法使扩容后不会将内存利用率降低至60%(对应于预设最低内存利用率)以下,其中0.4对应于n;
步骤505:maxNeedWorkers值不可超过全局最大工作节点数量maxGlobalWorkers:
maxNeedWorkers= Math.min(maxNeedWorkers, maxGlobalWorkers) ;
步骤506:计算扩容工作节点后的指定数量targetNums(对应于第二目标数量),addNumsByMem对应于第三预设增加数量:
targetNums = Math.min(curNumWorkers+addNumsByMem,maxNeedWorkers)。其中addNumsByMem初始化为1。
步骤507:调用yarn service api将集群扩容到指定数量targetNums;
步骤508:判断指定数量targetNums和最大需要的工作节点数量maxNeedWorkers的大小,如果targetNums小于maxNeedWorkers,执行步骤509;如果targetNums大于或等于maxNeedWorkers,执行步骤511;
步骤509:令addNumsByMem = addNumsByMem*2,对应于将所述第三预设增加数量调整为第四预设增加数量,然后执行步骤511;
步骤510:令addNumsByMem =1,对应于将第三预设增加数量减少为第六预设增加数量,然后执行步骤511;
步骤511:定时任务2本次循环结束,返回等下一次循环。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种集群的扩缩容装置,图6是根据本发明实施例的集群的扩缩容装置的结构框图,如图6所示,该装置包括:
获取模块602,用于获取当前集群内当前工作节点的当前数量;
扩缩容模块604,用于根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,其中,所述i大于1,所述当前参数包括:所述当前集群中未处理完的分片的数量、所述当前集群的当前内存利用率。
在一个可选的实施例中,所述装置还用于,根据所述当前集群中未处理完的分片的数量确定所述当前集群需要的工作节点的第一最大数量;在所述第一最大数量大于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容;在所述第一最大数量小于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行缩容。
在一个可选的实施例中,所述装置还用于,根据所述当前数量和第一预设增加数量确定第一调整数量;将所述第一调整数量与所述第一最大数量之间的最小值,确定为所述当前集群实际需要增加的工作节点的第一目标数量;将所述当前集群中当前工作节点的数量调整为所述第一目标数量。
在一个可选的实施例中,所述装置还用于,在所述将所述当前集群中当前工作节点的数量调整为所述第一目标数量之后,在所述第一目标数量小于所述第一最大数量的情况下,将所述第一预设增加数量调整为第二预设增加数量,其中,所述第二预设增加数量大于所述第一预设增加数量,所述第二预设增加数量用于下一次对所述当前集群进行扩容。
在一个可选的实施例中,所述装置还用于,获取所述当前集群内处于空闲状态的工作节点,以及所述空闲状态的工作节点的空闲时长;在所述空闲时长大于或等于第一空闲时长阈值的情况下,删除所述当前集群中所述空闲状态的工作节点,其中,所述第一空闲时长阈值与所述当前集群的扩缩容频率相关,所述当前集群的扩缩容频率越大所述第一空闲时长阈值越大。
在一个可选的实施例中,所述装置还用于,在所述删除所述当前集群中所述空闲状态的工作节点之后,获取对所述当前集群进行上一次扩容与第i次扩缩容的时间间隔;根据所述时间间隔和所述第一空闲时长阈值的大小,对所述第一空闲时长阈值进行调整。
在一个可选的实施例中,所述装置还用于,根据所述第一空闲时长阈值与预设参数的乘积确定目标阈值;在所述时间间隔小于或等于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第二空闲时长阈值,其中,所述第二空闲时长阈值大于所述第一空闲时长阈值;在所述时间间隔大于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第三空闲时长阈值,其中,所述第三空闲时长阈值小于所述第一空闲时长阈值;其中,所述第二空闲时长阈值或所述第三空闲时长阈值用于下一次对所述当前集群进行缩容。
在一个可选的实施例中,所述装置还用于,获取所述当前集群的所述当前内存利用率;在所述当前内存利用率大于或等于预设内存利用率阈值的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容。
在一个可选的实施例中,所述装置还用于,根据所述当前数量、所述当前内存利用率确定所述当前集群需要的工作节点的第二最大数量;根据所述当前数量和第三预设增加数量确定第二调整数量;将所述第二调整数量与所述第二最大数量之间的最小值,确定为所述当前集群实际需要增加的工作节点的第二目标数量;将所述当前集群中当前工作节点的数量调整为所述第二目标数量。
在一个可选的实施例中,所述装置还用于,在所述将所述当前集群中当前工作节点的数量调整为所述第二目标数量之后,在所述第二目标数量小于所述第二最大数量的情况下,将所述第三预设增加数量调整为第四预设增加数量,其中,所述第四预设增加数量大于所述第三预设增加数量,所述第四预设增加数量用于下一次对所述当前集群进行扩容。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种集群的扩缩容方法,其特征在于,包括:
获取当前集群内当前工作节点的当前数量;
根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,其中,所述i大于1,所述当前参数包括:所述当前集群中未处理完的分片的数量、所述当前集群的当前内存利用率。
2.根据权利要求1所述的方法,其特征在于,根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,包括:
根据所述当前集群中未处理完的分片的数量确定所述当前集群需要的工作节点的第一最大数量;
在所述第一最大数量大于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容;
在所述第一最大数量小于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行缩容。
3.根据权利要求2所述的方法,其特征在于,在所述第一最大数量大于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容,包括:
根据所述当前数量和第一预设增加数量确定第一调整数量;
将所述第一调整数量与所述第一最大数量之间的最小值,确定为所述当前集群实际需要增加的工作节点的第一目标数量;
将所述当前集群中当前工作节点的数量调整为所述第一目标数量。
4.根据权利要求3所述的方法,其特征在于,在所述将所述当前集群中当前工作节点的数量调整为所述第一目标数量之后,所述方法还包括:
在所述第一目标数量小于所述第一最大数量的情况下,将所述第一预设增加数量调整为第二预设增加数量,其中,所述第二预设增加数量大于所述第一预设增加数量,所述第二预设增加数量用于下一次对所述当前集群进行扩容。
5.根据权利要求2所述的方法,其特征在于,在所述第一最大数量小于所述当前数量的情况下,将所述第i次扩缩容确定为对所述当前集群进行缩容,包括:
获取所述当前集群内处于空闲状态的工作节点,以及所述空闲状态的工作节点的空闲时长;
在所述空闲时长大于或等于第一空闲时长阈值的情况下,删除所述当前集群中所述空闲状态的工作节点,其中,所述第一空闲时长阈值与所述当前集群的扩缩容频率相关,所述当前集群的扩缩容频率越大所述第一空闲时长阈值越大。
6.根据权利要求5所述的方法,其特征在于,在所述删除所述当前集群中所述空闲状态的工作节点之后,所述方法还包括:
获取对所述当前集群进行上一次扩容与第i次扩缩容的时间间隔;
根据所述时间间隔和所述第一空闲时长阈值的大小,对所述第一空闲时长阈值进行调整。
7.根据权利要求6所述的方法,其特征在于,所述根据所述时间间隔和所述第一空闲时长阈值的大小,对所述第一空闲时长阈值进行调整,包括:
根据所述第一空闲时长阈值与预设参数的乘积确定目标阈值;
在所述时间间隔小于或等于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第二空闲时长阈值,其中,所述第二空闲时长阈值大于所述第一空闲时长阈值;
在所述时间间隔大于所述目标阈值的情况下,将所述第一空闲时长阈值调整为第三空闲时长阈值,其中,所述第三空闲时长阈值小于所述第一空闲时长阈值;
其中,所述第二空闲时长阈值或所述第三空闲时长阈值用于下一次对所述当前集群进行缩容。
8.根据权利要求1所述的方法,其特征在于,根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,还包括:
获取所述当前集群的所述当前内存利用率;
在所述当前内存利用率大于或等于预设内存利用率阈值的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容。
9.根据权利要求8所述的方法,其特征在于,在所述当前内存利用率大于或等于预设内存利用率阈值的情况下,将所述第i次扩缩容确定为对所述当前集群进行扩容,包括:
根据所述当前数量、所述当前内存利用率确定所述当前集群需要的工作节点的第二最大数量;
根据所述当前数量和第三预设增加数量确定第二调整数量;
将所述第二调整数量与所述第二最大数量之间的最小值,确定为所述当前集群实际需要增加的工作节点的第二目标数量;
将所述当前集群中当前工作节点的数量调整为所述第二目标数量。
10.根据权利要求9所述的方法,其特征在于,在所述将所述当前集群中当前工作节点的数量调整为所述第二目标数量之后,所述方法还包括:
在所述第二目标数量小于所述第二最大数量的情况下,将所述第三预设增加数量调整为第四预设增加数量,其中,所述第四预设增加数量大于所述第三预设增加数量,所述第四预设增加数量用于下一次对所述当前集群进行扩容。
11.一种集群的扩缩容装置,其特征在于,包括:
获取模块,用于获取当前集群内当前工作节点的当前数量;
扩缩容模块,用于根据所述当前数量、所述当前集群的当前参数,对所述当前集群进行第i次扩缩容,其中,所述i大于1,所述当前参数包括:所述当前集群中未处理完的分片的数量、所述当前集群的当前内存利用率。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至10任一项中所述的方法的步骤。
13.一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至10任一项中所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211068528.3A CN115129484B (zh) | 2022-09-02 | 2022-09-02 | 集群的扩缩容方法、装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211068528.3A CN115129484B (zh) | 2022-09-02 | 2022-09-02 | 集群的扩缩容方法、装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115129484A true CN115129484A (zh) | 2022-09-30 |
CN115129484B CN115129484B (zh) | 2022-11-29 |
Family
ID=83387025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211068528.3A Active CN115129484B (zh) | 2022-09-02 | 2022-09-02 | 集群的扩缩容方法、装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115129484B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101010A1 (zh) * | 2012-12-26 | 2014-07-03 | 华为技术有限公司 | 一种虚拟机***的资源管理方法、虚拟机***和装置 |
CN108469989A (zh) * | 2018-03-13 | 2018-08-31 | 广州西麦科技股份有限公司 | 一种基于集群性能的反馈式自动扩缩容方法及*** |
CN109343965A (zh) * | 2018-10-31 | 2019-02-15 | 北京金山云网络技术有限公司 | 资源调整方法、装置、云平台和服务器 |
CN112925607A (zh) * | 2021-02-22 | 2021-06-08 | 深圳前海微众银行股份有限公司 | 一种***扩缩容方法及装置、电子设备 |
CN113986475A (zh) * | 2021-11-16 | 2022-01-28 | 招商局金融科技有限公司 | 容器集群的负载均衡方法、计算机设备及存储介质 |
CN114356558A (zh) * | 2021-12-21 | 2022-04-15 | 北京穿杨科技有限公司 | 一种基于集群的缩容处理方法及装置 |
CN114675933A (zh) * | 2022-03-29 | 2022-06-28 | 浪潮云信息技术股份公司 | 一种容器集群调度方法、装置、设备、存储介质 |
CN114816753A (zh) * | 2022-04-26 | 2022-07-29 | 金蝶软件(中国)有限公司 | 一种数据集群计算节点扩缩方法、装置、设备及介质 |
-
2022
- 2022-09-02 CN CN202211068528.3A patent/CN115129484B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014101010A1 (zh) * | 2012-12-26 | 2014-07-03 | 华为技术有限公司 | 一种虚拟机***的资源管理方法、虚拟机***和装置 |
CN108469989A (zh) * | 2018-03-13 | 2018-08-31 | 广州西麦科技股份有限公司 | 一种基于集群性能的反馈式自动扩缩容方法及*** |
CN109343965A (zh) * | 2018-10-31 | 2019-02-15 | 北京金山云网络技术有限公司 | 资源调整方法、装置、云平台和服务器 |
CN112925607A (zh) * | 2021-02-22 | 2021-06-08 | 深圳前海微众银行股份有限公司 | 一种***扩缩容方法及装置、电子设备 |
CN113986475A (zh) * | 2021-11-16 | 2022-01-28 | 招商局金融科技有限公司 | 容器集群的负载均衡方法、计算机设备及存储介质 |
CN114356558A (zh) * | 2021-12-21 | 2022-04-15 | 北京穿杨科技有限公司 | 一种基于集群的缩容处理方法及装置 |
CN114675933A (zh) * | 2022-03-29 | 2022-06-28 | 浪潮云信息技术股份公司 | 一种容器集群调度方法、装置、设备、存储介质 |
CN114816753A (zh) * | 2022-04-26 | 2022-07-29 | 金蝶软件(中国)有限公司 | 一种数据集群计算节点扩缩方法、装置、设备及介质 |
Non-Patent Citations (2)
Title |
---|
IVY PENG∗: "On the Memory Underutilization: Exploring Disaggregated Memory on HPC Systems", 《 2020 IEEE 32ND INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE AND HIGH PERFORMANCE COMPUTING (SBAC-PAD)》 * |
王晓钰等: "基于云平台的弹性Web集群扩缩容机制的研究", 《软件》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115129484B (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190116128A1 (en) | Dynamic allocation of edge computing resources in edge computing centers | |
CN101345652B (zh) | 数据采集方法及数据采集设备 | |
CN104239150B (zh) | 一种硬件资源调整的方法及装置 | |
CN112965817B (zh) | 资源管理方法、装置和电子设备 | |
US20240202024A1 (en) | Thread processing methods, scheduling component, monitoring component, server, and storage medium | |
CN103488538B (zh) | 云计算***中的应用扩展装置和应用扩展方法 | |
Wu et al. | Dynamically adjusting scale of a kubernetes cluster under qos guarantee | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN112486642A (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
WO2020108337A1 (zh) | 一种cpu资源调度方法及电子设备 | |
CN109388501B (zh) | 基于人脸识别请求的通信匹配方法、装置、设备及介质 | |
CN114661482A (zh) | 一种gpu算力管理方法、介质、设备及*** | |
CN113268310B (zh) | 一种Pod资源配额调整方法、装置、电子设备及存储介质 | |
CN111459676A (zh) | 一种节点资源管理方法、装置及存储介质 | |
CN114461385A (zh) | 线程池调度方法、装置、设备以及可读存储介质 | |
CN110569129A (zh) | 资源分配方法及装置、存储介质、电子装置 | |
CN114816709A (zh) | 任务调度方法、装置、服务器及可读存储介质 | |
CN115129484B (zh) | 集群的扩缩容方法、装置、存储介质及电子装置 | |
CN111831452A (zh) | 任务执行方法、装置、存储介质及电子装置 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN108667920B (zh) | 一种雾计算环境业务流量加速***及其业务流量加速方法 | |
CN113302593A (zh) | 任务处理方法、装置、***、电子设备及存储介质 | |
CN115712572A (zh) | 任务的测试方法、装置、存储介质及电子装置 | |
CN113434256B (zh) | 一种云资源横向扩展方法、可读存储介质 | |
CN113127289B (zh) | 一种基于yarn集群的资源管理方法、计算机设备和存储介质 |
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 |