CN113342463B - 计算机程序模块的容量调整方法、装置、设备和介质 - Google Patents

计算机程序模块的容量调整方法、装置、设备和介质 Download PDF

Info

Publication number
CN113342463B
CN113342463B CN202110669222.2A CN202110669222A CN113342463B CN 113342463 B CN113342463 B CN 113342463B CN 202110669222 A CN202110669222 A CN 202110669222A CN 113342463 B CN113342463 B CN 113342463B
Authority
CN
China
Prior art keywords
capacity
computer program
container
adjustment
program module
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
CN202110669222.2A
Other languages
English (en)
Other versions
CN113342463A (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110669222.2A priority Critical patent/CN113342463B/zh
Publication of CN113342463A publication Critical patent/CN113342463A/zh
Application granted granted Critical
Publication of CN113342463B publication Critical patent/CN113342463B/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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/5072Grid computing
    • 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

Abstract

本公开公开了一种计算机程序模块的容量调整方法,涉及计算机领域,尤其涉及云计算领域。具体实现方案为:获取物理机集群中的多个容器的容量状态,其中,每个容器中部署有微服务进程;确定多个容器中所部署的微服务进程属于计算机程序模块的至少一个容器;根据至少一个容器的容量状态,生成针对计算机程序模块的容量调整触发事件;以及根据容量调整触发事件调整至少一个容器的数量和/或容量。本公开还公开了一种计算机程序模块的容量调整装置、电子设备和存储介质。

Description

计算机程序模块的容量调整方法、装置、设备和介质
技术领域
本公开涉及计算机技术领域,尤其涉及云计算技术。更具体地,本公开提供了一种计算机程序模块的容量调整方法、装置、电子设备和存储介质。
背景技术
随着计算机业界的云计算架构技术发展,计算机程序的部署从物理机逐渐转到虚拟容器内部署。云计算架构带来计算机程序模块数量上的倍数级增长,计算机程序模块的服务容量问题,给整体计算机系统带来稳定性风险。
发明内容
本公开提供了一种计算机程序模块的容量调整方法、装置、设备以及存储介质。
根据第一方面,提供了一种计算机程序模块的容量调整方法,该方法包括:获取物理机集群中的多个容器的容量状态,其中,每个容器中部署有微服务进程;确定多个容器中所部署的微服务进程属于计算机程序模块的至少一个容器;根据至少一个容器的容量状态,生成针对计算机程序模块的容量调整触发事件;以及根据容量调整触发事件调整至少一个容器的数量和/或容量。
根据第二方面,提供了一种计算机程序模块的容量调整装置,该装置包括:获取模块,用于获取物理机集群中的多个容器的容量状态,其中,每个容器中部署有微服务进程;确定模块,用于确定多个容器中所部署的微服务进程属于计算机程序模块的至少一个容器;生成模块,用于根据至少一个容器的容量状态,生成针对计算机程序模块的容量调整触发事件;以及第一调整模块,用于根据容量调整触发事件调整至少一个容器的数量和/或容量。
根据第三方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开提供的方法。
根据第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行根据本公开提供的方法。
根据第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据本公开提供的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开的一个实施例的可以应用计算机程序模块的容量调整方法和装置的示例性系统架构示意图;
图2是根据本公开的一个实施例的计算机程序模块的容量调整方法的流程图;
图3是根据本公开的另一个实施例的计算机程序模块的容量调整方法的流程图;
图4是根据本公开的一个实施例的计算机程序模块的容量调整方法的系统原理图;
图5是根据本公开的另一个实施例的计算机程序模块的容量调整方法的流程图;
图6是根据本公开的另一个实施例的计算机程序模块的容量调整方法的流程图;
图7是根据本公开的一个实施例的计算机程序模块的容量调整装置的框图;
图8是根据本公开的一个实施例的计算机程序模块的容量调整方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
随着计算机业界的云原生架构技术发展,计算机程序的部署从物理机器逐渐转到虚拟化部署。业务负责人员将业务程序改造成微服务化程序,并将业务程序的微服务进程封装在虚拟容器内部署,使得在云上创建和运行微服务成为一种云端服务端程序的主流部署解决方案,微服务技术被业务内广泛应用。在业务进行复杂系统的微服务化改造中,微服务架构带来计算机程序模块数量上的倍数级增长,依靠人工仅能对少量的模块做到熟练运维,这样大量模块对模块自身状态感知慢,存在长期不主动释放冗余资源造成浪费,同时局部热点模块节点带来容量超用隐患,对整体系统带来稳定性风险。
目前云端服务针对计算机程序的扩缩容技术普遍采用的方案有以下几种。
通过业务的监控系统来获取指标数据,对计算机程序服务进行数据获取,得到实时的监控与业务指标数据,建立扩容和缩容的计算方案与规则,直接作用于云调度系统的扩缩容操作接口。但是这种方式需要借助一套监控系统,获取业务指标的方式比较单一,根据不同的模块服务构建的零散规则方案,形成独立的多种不同决策机制,无统一的扩缩容模型和机制,为后续维护迭代带来人力和资源高成本消耗。
从云端服务的资源维度考虑计算机程序应用的扩容与缩容,在虚拟资源管理调度层面提供对外扩容与缩容的实现,使用外部的消息队列积压和消费速度来控制云端服务上的资源,通过不断扩展外部的扩缩容组件支持来进行支持更多业务场景。从资源容器角度出发的考虑,能给出云端服务端的资源层面功能,需要业务使用方去扩展实现外部多种计算组件,常常依赖消息队列等外部系统和资源,并且对业务要求暴露细节过多,实现针对特定扩缩容场景成本高,决策逻辑与业务耦合严重,不利于业务使用方的大量展开应用。
使用计算机程序所在的虚拟化容器通用数据,采用容器资源消耗资源数据,计算和识别为容器的自身性能指标,采用统一的规则或预训练模型来进行扩容与缩容的评判和操作。这种方式可以实现宽泛的扩缩容标准,但是对于一些业务特性应用场景无法很好地实现细粒度容量的扩缩容,无法满足业务定制的极致扩缩容需求。
图1是根据本公开一个实施例的可以应用计算机程序模块的容量调整方法和装置的示例性系统架构示意图。需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的系统架构100可以包括多个物理机101、网络102和计算设备103。物理机101的数量可以是任意的,例如,多个物理机101可以是物理机集群内的部分物理机,也可以是组成物理机集群的所有物理机。网络102用以在物理机101与计算设备103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线和/或无线通信链路等等。
物理机101中可以设置有一个或多个容器,每个容器中部署有微服务进程,可以称为一个实例,例如,用于访问某个网址的网站可以作为一个实例,各个容器内可以部署不同的实例。计算机程序模块是由一组用于执行相同功能的实例组成的,这一组实例可以分布在不同的物理机101中的容器内。在网络流量比较大时,组成计算机程序模块的实例的数量也是比较庞大的,例如,一万个实例组成了计算机程序模块A,这一万个实例可以分布在不同的物理机101中的容器内。
对于大型的计算机系统,是由成百上千个计算机程序模块组成的。例如,计算机程序模块A、计算机程序模块B……等等。针对每个计算机程序模块的服务容量问题,需要提供一种容量调整方法,来实现计算机程序模块的自适应扩缩容,以促进复杂计算机系统的整体稳定性提升。
本公开实施例所提供的计算机程序模块的容量调整方法一般可以由计算设备103执行。相应地,本公开实施例所提供的计算机程序模块的容量调整装置一般可以设置于计算设备103中。本公开实施例所提供的计算机程序模块的容量调整方法也可以由不同于计算设备103且能够与物理机101和/或计算设备103通信的服务器或服务器集群执行。相应地,本公开实施例所提供的计算机程序模块的容量调整装置也可以设置于不同于计算设备103且能够与物理机101和/或计算设备103通信的服务器或服务器集群中。
图2是根据本公开的一个实施例的计算机程序模块的容量调整方法的流程图。
如图2所示,该计算机程序模块的容量调整方法200可以包括操作S210~操作S240。
在操作S210,获取物理机集群中的多个容器的容量状态。
例如,物理机集群可以是为大型的计算机系统或云计算系统提供服务的基础设施。物理机集群包括多个物理机,每个物理机可以设置有一个或多个容器。物理机可以为其内部的每个容器分配CPU资源和内存资源,例如,某个物理机共有8000核CPU,512G内存,可以为其内部的某个容器分配150核CPU和25G内存,该容器具有的资源为150核CPU和25G内存,可以称为该容器的容量。物理机也可以为其内部的其他容器分配相同或不同的资源。每个容器中部署有微服务进程,可以称为一个实例,例如,用于访问某个网址的网站可以作为一个实例,各个容器内可以部署不同的实例。
可以在每个物理机内设置一个节点采集装置,该节点采集装置可以采集该物理机内部所有容器的容量状态。例如,容量状态每个容器的CPU使用率和内存使用率等等。
在操作S220,确定多个容器中所部署的微服务进程属于计算机程序模块的至少一个容器。
大型的计算机系统是由成百上千个计算机程序模块组成的,计算机程序模块是由一组用于执行相同功能的微服务进程组成的,这一组微服务进程可以分布在不同的物理机中的容器内。多个容器中所部署的微服务进程属于计算机程序模块的至少一个容器,可以称为针对该计算机程序模块的容器。
例如,在物理机集群的多个容器中,存在300个容器内部署的微服务进程属于计算机程序模块A,该300个容器为针对计算机程序模块A的容器,可以将该300个容器的容量状态进行汇总,作为计算机程序模块A的容量状态指标集合。同理,还可以得到针对计算机程序模块B的至少一个容器以及计算机程序模块B的容量状态指标集合等等。
在操作S230,根据至少一个容器的容量状态,生成针对计算机程序模块的容量调整触发事件。
例如,针对计算机程序模块A,可以根据计算机程序模块A的容量状态指标集合中的整体容量状态以及预设的目标容量状态来确定计算机程序模块A扩缩容需求。例如,计算机程序模块A的容量状态指标集合中的整体容量状态可以通过综合至少一个容器的CPU使用率的平均值以及内存使用率的平均值来得到。预设的目标容量状态可以是期望达到的CPU使用率和内存使用率(例如,50%)。如果计算机程序模块A的容量状态指标集合中的整体容量状态高于目标容量状态,且高于20%,则可以确定计算机程序模块A有扩容需求。如果计算机程序模块A的容量状态指标集合中的整体容量状态高于目标容量状态,且低于10%,则可以确定计算机程序模块A有缩容需求。如果计算机程序模块A的容量状态指标集合中的整体容量状态与目标容量状态之间的差异小于5%,则可以确定计算机程序模块A没有扩缩容需求。
例如,在确定计算机程序模块A有扩缩容需求的情况下,可以根据计算机程序模块A的容量状态指标集合中的整体容量状态以及预设的目标容量状态之间的差异来计算需要调整的容量的大小。
基于计算机程序模块A的扩缩容需求以及需要调整的容量的大小,可以生成针对计算机程序模块A的容量调整触发事件。该容量调整触发事件可以包括计算机程序模块A的ID、调整类型(扩容或缩容)以及需要调整的容量的大小。
在操作S240,根据容量调整触发事件调整至少一个容器的数量或容量。
例如,响应于针对计算机程序模块A的容量调整触发事件,可以通过调整至少一个容器的数量和/或大小来实现计算机程序模块A容量的调整。调整至少一个容器的数量可以称为水平伸缩,调整至少一个容器的容量可以称为垂直伸缩。
根据本公开的实施例,根据针对计算机程序模块的至少一个容器的容量状态生成针对计算机程序模块的容量调整触发事件,基于事件驱动来进行计算机程序模块的容量的调整,能够实现计算机程序模块的自适应扩缩容,提高计算机体统的稳定性。
图3是根据本公开的另一个实施例的计算机程序模块的容量调整方法的流程图。
如图3所示,该方法包括操作S310~操作S360。
在操作S310,判断至少一个容器的容量状态是否满足预设条件。若满足,则执行操作S320;若不满足,则执行操作S330。
例如,至少一个容器内部署的微服务进程属于计算机程序模块A,该至少一个容器的容量状态汇总为针对该计算机程序模块A的容量状态指标集合。可以判断容量状态指标集合中的CPU使用率的平均值和/或内存使用率的平均值是否大于预设阈值(例如60%),如果大于预设阈值,说明该至少一个容器的容量状态处于紧急状态,可能会带来容量超用隐患。如果不大于预设阈值,说明该至少一个容器的容量状态处于健康使用状态,不会带来容量超用隐患。
在操作S320,实时生成针对计算机程序模块的容量调整触发事件。
例如,在至少一个容器的容量状态满足预设条件的情况下,说明该至少一个容器的容量状态处于紧急状态。因此,实时对该至少一个容器的容量状态进行计算,生成针对计算机程序模块A的容量调整触发事件,以便实时触发容量调整,避免造成容量超用隐患。
在操作S330,将至少一个容器的容量状态进行存储。
例如,在至少一个容器的容量状态不满足预设条件的情况下,说明该至少一个容器的容量状态处于健康使用状态。因此,针对计算机程序模块A的容量调整的实时性要求不高,可以先将至少一个容器的容量状态进行存储,例如保存在数据库中。
在操作S340,按照预设时间间隔获取所存储的至少一个容器的容量状态。
在操作S350,根据所获取的至少一个容器的容量状态,生成针对计算机程序模块的容量调整触发事件。
例如,周期性(例如每间隔2小时)获取数据库中的针对计算机程序模块A的容量状态指标集合(即至少一个容器的容量状态集合),根据周期性获取的容量状态指标集合计算计算机程序模块A的扩缩容需求,以生成针对计算机程序模块A的容量调整触发事件。
在操作S360,根据容量调整触发事件调整至少一个容器的数量和/或容量。
例如,增加100个容器用于运行计算机程序模块A的微服务进程,或者将至少一个容器中的100个容器的容量从25GB调整为50GB。
根据本公开的实施例,根据至少一个容器的容量状态实时或周期性生成计算机程序模块的容量调整触发事件,能够快速响应处于容量超用紧急状态的计算机程序模块的扩容,避免容量超用风险,提高计算机体统的稳定性。
图4是根据本公开的一个实施例的计算机程序模块的容量调整方法的系统原理图。
如图4所示,该计算机程序模块的容量调整方法的系统400包括第一采集模块410、第二采集模块420、收集模块430、存储模块440、计算模块450、事件产出模块460、容器控制模块470、辅助模块480和外部触发模块490。
各模块的功能以及计算机程序模块的容量调整方法的实现原理如下。
第一采集模块410中的第一采集子模块411可以是设置在物理机集群中的各个物理机上的采集装置,可以用于采集物理机内的多个容器的容量状态指标,容量状态指标可以包括CPU使用率和内存使用率等等。第一采集模块410将采集到的容量状态指标发送给收集模块430。
第二采集模块420包括监控子模块421和第二采集子模块422,监控子模块421用于对应用程序模块进行监控,获取应用程序运行时长等指标。第二采集子模块422用于获取物理机内各个容器中的微服务进程与计算机程序模块的对应关系。监控子模块421和第二采集子模块422分别将采集到的信息发送给收集模块430。
收集模块430中的汇聚子模块431用于将接收到的物理机集群的多个容器的容量状态指标进行整理、筛选和过滤。例如,将属于同一计算机程序模块的微服务进程所在的容器的容量状态指标汇聚在一起,并进行数据过滤、清洗等处理,得到针对该计算机程序模块的指标集合。针对每个计算机程序模块的指标集合,根据指标集合中整体容量状态是否满足预设条件(例如大于60%,不同计算机程序模块的阈值可以调整)来采取不同的处理方式。具体地,针对满足预设条件的计算机程序模块,通过实时触发子模块432将该计算机程序模块的指标集合直接发送给计算模块450,以便进行实时触发;针对不满足预设条件的计算机程序模块,通过持久化子模块433将该计算机程序模块的指标集合进行持久化处理并保存至存储模块440中。
存储模块440可以包括多个数据库子模块441,各个数据库子模块441可以用于存储针对不同计算机程序模块的容量状态指标集合。
计算模块450可以实时接收收集模块430发送过来的针对计算机程序模块的指标集合,也可以周期性获取存储在数据库子模块441中的容量状态指标集合。针对实时接收到的容量状态指标集合以及周期性获取到的容量状态指标集合,可以通过计算和分析来确定相应的计算机程序模块是否存在扩缩容需求。例如,根据容量状态指标集合中的容量状态以及预设的目标状态来确定是否存在扩缩容需求。根据扩缩容需求确定调整策略,调整策略例如包括调整类型(扩容或缩容)、调整方式(水平扩缩或垂直扩缩)、需要调整的容器的数量和/或大小等。根据调整策略生成容量调整触发事件,容量调整触发事件可以包括该扩缩容事件所针对的计算机程序模块的ID、以及调整策略中的信息。计算模块450可以生成针对多个计算机程序模块的容量调整触发事件,并将多个容量调整触发事件发送给事件产出模块460。
事件产出模块460用于对接收到的多个容量调整触发事件分发给消息队列,进行容量调整触发事件的流转和处理,将满足扩缩容策略条件的容量调整触发事件发布给容器控制模块470。
容器控制模块470可以将发布过来的容量调整触发事件汇总在事件总线上,事件调度子模块471用于对容量调整触发事件进行优先级的排序和调权,从事件总线订阅容量调整触发事件的变化,将事件描述中的目标计算程序模块进行对应的扩容和缩容操作,最终实现计算机程序模块的容量调整。
辅助模块480可以包括元数据采集子模块481、事件注册子模块482和事件审计子模块等辅助性子模块,这些子模块可以获取容量调整触发事件中的信息来满足不同需求。
外部触发模块490可以包括多个外部应用子模块491,用于通过外部服务生成容量调整触发事件。
根据本公开的实施例,根据针对计算机程序模块的至少一个容器的容量状态生成针对计算机程序模块的容量调整触发事件,基于事件驱动来进行计算机程序模块的容量的调整,能够实现计算机程序模块的自适应扩缩容,提高计算机体统的稳定性。
图5是根据本公开的另一个实施例的计算机程序模块的容量调整方法的流程图。
如图5所示的流程图是以计算机程序模块为视角所描述的容量调整方法的流程。
如图5所示,包括操作510~操作540。
在操作S510,采集针对计算机程序模块的至少一个容器的容量状态。
例如,至少一个容器为300个,该300个容器中部署的微服务进行组成计算机程序模块A,则该300个容器为针对计算机程序模块A的至少一个容器。可以通过该300个容器所在的物理机内部的采集装置采集该300个容器中每个容器的CPU使用率和内存使用率等容量状态指标。
在操作S520,对至少一个容器的容量状态进行汇总、筛选和存储。
例如,将上述300个容器的容量状态指标进行汇总,并筛选出进行扩缩容所需要的数据,例如过滤掉由于容器本身故障造成容量异常的数据等等。若最终获得的容量状态指标大于预设数值(例如60%),则直接执行操作S530。否则,将汇总的容量状态指标数据进行存储,例如,存储到预设的数据库中,通过周期性从数据库中获取数据来执行操作S530。
在操作S530,根据至少一个容器的容量状态生成针对计算机程序模块的容量调整触发事件。
例如,可以根据计算机程序模块A的容量状态指标集合中的整体容量状态以及预设的目标容量状态之间的差异,来确定计算机程序模块A是否有扩缩容需求。在确定计算机程序模块A有扩缩容需求的情况下,可以根据差异进一步确定容量调整策略,容量调整策略包括需要调整的容量的大小、容量调整类型(扩容或缩容)和容量调整方式(水平伸缩或垂直伸缩)。根据容量调整策略生成容量调整事件,容量调整事件包括计算机程序模块A的标识以及上述容量调整策略中的信息。
在操作S540,根据容量调整触发事件调整至少一个容器的数量或容量。
例如,响应于针对计算机程序模块A的容量调整触发事件,可以确定针对计算机程序模块A的上述300个容器分别部署在哪个或哪些目标物理机中,根据容量调整触发事件中的策略信息可以通知目标物理机来增加(或减少)容器的数量、或者增加(或减少)每个容器的大小。
可以理解,响应于操作S540对计算机程序模块A的容量的调整,在操作S510对容量调整后的至少一个容器进行容量状态的采集时,得到的是更新的容量状态指标。
根据本公开的实施例,本公开以计算机程序模块的视角进行自适应的扩缩容的方法,相比于从资源容器整体出发进行扩缩容的方式,能够避免考虑不到计算机程序模块所在业务的自身特点,而造成的应用场景受限的问题。
图6是根据本公开的另一个实施例的计算机程序模块的容量调整方法的流程图。
如图6所示,包括操作610~操作640。
在操作610,设置计算机程序模块的容量调整周期。
例如,由于计算机程序模块自身的业务特点,计算机程序模块的流量可能呈现周期性规律。例如,计算机程序模块A在工作日流量较大,而在节假日流量较小。可以设置该计算机程序模块A的定时扩缩容周期,即容量调整周期。
例如,设置计算机程序模块A的容量调整周期为每周五晚八点开始,每周一早六点结束。
在操作620,在容量调整周期的开始时刻之前,保存至少一个容器的数量和容量,作为计算机程序模块的第一容量状态。
例如,在每周五晚八点之前,将计算机程序模块A当前运行的容量状态进行保存,作为第一容量状态。例如,保存的第一容量状态包括当前所启用的容器的数量(如1万个容器),容器的资源大小(如每个容器的大小为25GB)等。
在操作630,在容量调整周期内,按照预设的第二容量状态调整至少一个容器的数量和/或容量。
例如,预设的第二容量状态为允许达到的最大容量状态。在每周五晚八点到每周一早六点期间,允许开启的容器数量是5千,每个容器的最大容量是50G。则按照该预设的第二容量状态,可以在每周五晚八点到每周一早六点期间,进行自适应的容器容量和数量的调整。
例如,在每周五晚八点到每周一早六点期间,开启5000个容器,每个容器容量为25GB,会造成每个容器的资源使用率较低(例如20%),为避免资源浪费,可以自适应进行缩容处理,例如可以将开启的容器的数量调整为4000个。
在操作640,在容量调整周期的结束时刻,将计算机程序模块的容量状态调整回第一容量状态。
例如,在每周一早六点结束之后,由于计算机程序模块A在工作日的流量会上升,可以将计算机程序模块A的容量状态调整回第一容量状态。例如,将计算机程序模块A的容量状态调整回开启1万个容器,每个容器的容量为25GB。
根据本公开的实施例,针对计算机程序模块的业务特点进行定时扩缩容能够实现业务场景的精细化自动扩缩容,扩缩容响应速度快,且能够节约系统资源。
图7是根据本公开的一个实施例的计算机程序模块的容量调整装置的框图。
如图7所示,该计算机程序模块的容量调整700可以包括获取模块701、确定模块702、生成模块703和第一调整模块704。
获取模块701用于获取物理机集群中的多个容器的容量状态,其中,每个容器中部署有微服务进程。
确定模块702用于确定多个容器中所部署的微服务进程属于计算机程序模块的至少一个容器。
生成模块703用于根据至少一个容器的容量状态,生成针对计算机程序模块的容量调整触发事件。
第一调整模块704用于根据容量调整触发事件调整至少一个容器的数量和/或容量。
根据本公开的实施例,生成模块703包括需求确定单元、策略确定单元和事件生成单元。
需求确定单元用于根据至少一个容器的容量状态,确定计算机程序模块的容量调整需求。
策略确定单元用于根据计算机程序模块的容量调整需求,确定计算机程序模块的容量调整策略。
事件生成单元用于根据计算机程序模块的容量调整策略生成容量调整触发事件。
根据本公开的实施例,容量调整触发事件包括调整类型、调整数量和调整容量中的至少之一。
根据本公开的实施例,生成模块703包括第一生成单元、存储单元、获取单元和第二生成单元。
第一生成单元用于响应于至少一个容器的容量状态满足预设条件,实时生成针对计算机程序模块的容量调整触发事件。
存储单元用于响应于至少一个容器的容量状态不满足预设条件,将至少一个容器的容量状态进行存储。
获取单元用于按照预设时间间隔获取所存储的至少一个容器的容量状态。
第二生成单元,用于根据所获取的至少一个容器的容量状态,生成针对计算机程序模块的容量调整触发事件。
根据本公开的实施例,第一调整模块包括目标确定单元和调整单元。
目标确定单元用于确定物理机集群中部署有至少一个容器的一个或多个目标物理机。
调整单元用于通过一个或多个目标物理机调整至少一个容器的数量和/或容量。
根据本公开的实施例,计算机程序模块的容量调整700还包括设置模块、保存模块、第二调整模块和第三调整模块。
设置模块用于设置计算机程序模块的容量调整周期。
保存模块用于在容量调整周期的开始时刻之前,保存至少一个容器的数量和容量,作为计算机程序模块的第一容量状态。
第二调整模块用于在容量调整周期内,按照预设的第二容量状态调整至少一个容器的数量和/或容量。
第三调整模块用于在容量调整周期的结束时刻,将计算机程序模块的容量状态调整回第一容量状态。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如计算机程序模块的容量调整方法。例如,在一些实施例中,计算机程序模块的容量调整方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的计算机程序模块的容量调整方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行计算机程序模块的容量调整方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (14)

1.一种计算机程序模块的容量调整方法,包括:
获取物理机集群中的多个容器的容量状态,其中,每个容器中部署有微服务进程;
确定所述多个容器中所部署的微服务进程属于所述计算机程序模块的至少一个容器;
根据所述至少一个容器的容量状态,生成针对所述计算机程序模块的容量调整触发事件;以及
根据所述容量调整触发事件调整所述至少一个容器的数量和/或容量;
所述方法还包括:
设置所述计算机程序模块的容量调整周期;
在所述容量调整周期的开始时刻之前,保存所述至少一个容器的数量和容量,作为所述计算机程序模块的第一容量状态;
在所述容量调整周期内,按照预设的第二容量状态调整所述至少一个容器的数量和/或容量;以及
在所述容量调整周期的结束时刻,将所述计算机程序模块的容量状态调整回所述第一容量状态。
2.根据权利要求1所述的方法,其中,所述生成所述针对计算机程序模块的容量调整触发事件包括:
根据所述至少一个容器的容量状态,确定所述计算机程序模块的容量调整需求;
根据所述计算机程序模块的容量调整需求,确定所述计算机程序模块的容量调整策略;以及
根据所述计算机程序模块的容量调整策略生成所述容量调整触发事件。
3.根据权利要求2所述的方法,其中,所述容量调整触发事件包括调整类型、调整数量和调整容量中的至少之一。
4.根据权利要求1所述的方法,其中,所述生成所述针对计算机程序模块的容量调整触发事件包括:
响应于所述至少一个容器的容量状态满足预设条件,实时生成针对所述计算机程序模块的容量调整触发事件。
5.根据权利要求4所述的方法,其中,所述生成所述针对计算机程序模块的容量调整触发事件还包括:
响应于所述至少一个容器的容量状态不满足所述预设条件,将所述至少一个容器的容量状态进行存储;
按照预设时间间隔获取所存储的至少一个容器的容量状态;以及
根据所获取的至少一个容器的容量状态,生成针对所述计算机程序模块的容量调整触发事件。
6. 根据权利要求1所述的方法,其中,所述根据所述容量调整触发事件调整所述至少一个容器的数量和/或容量包括:
确定所述物理机集群中部署有所述至少一个容器的一个或多个目标物理机;以及
通过所述一个或多个目标物理机调整所述至少一个容器的数量和/或容量。
7.一种计算机程序模块的容量调整装置,包括:
获取模块,用于获取物理机集群中的多个容器的容量状态,其中,每个容器中部署有微服务进程;
确定模块,用于确定所述多个容器中所部署的微服务进程属于所述计算机程序模块的至少一个容器;
生成模块,用于根据所述至少一个容器的容量状态,生成针对所述计算机程序模块的容量调整触发事件;以及
第一调整模块,用于根据所述容量调整触发事件调整所述至少一个容器的数量和/或容量;
所述装置还包括:
设置模块,用于设置所述计算机程序模块的容量调整周期;
保存模块,用于在所述容量调整周期的开始时刻之前,保存所述至少一个容器的数量和容量,作为所述计算机程序模块的第一容量状态;
第二调整模块,用于在所述容量调整周期内,按照预设的第二容量状态调整所述至少一个容器的数量和/或容量;以及
第三调整模块,用于在所述容量调整周期的结束时刻,将所述计算机程序模块的容量状态调整回所述第一容量状态。
8.根据权利要求7所述的装置,其中,所述生成模块包括:
需求确定单元,用于根据所述至少一个容器的容量状态,确定所述计算机程序模块的容量调整需求;
策略确定单元,用于根据所述计算机程序模块的容量调整需求,确定所述计算机程序模块的容量调整策略;以及
事件生成单元,用于根据所述计算机程序模块的容量调整策略生成所述容量调整触发事件。
9.根据权利要求8所述的装置,其中,所述容量调整触发事件包括调整类型、调整数量和调整容量中的至少之一。
10.根据权利要求7所述的装置,其中,所述生成模块包括:
第一生成单元,用于响应于所述至少一个容器的容量状态满足预设条件,实时生成针对所述计算机程序模块的容量调整触发事件。
11.根据权利要求10所述的装置,其中,所述生成模块还包括:
存储单元,用于响应于所述至少一个容器的容量状态不满足所述预设条件,将所述至少一个容器的容量状态进行存储;
获取单元,用于按照预设时间间隔获取所存储的至少一个容器的容量状态;以及
第二生成单元,用于根据所获取的至少一个容器的容量状态,生成针对所述计算机程序模块的容量调整触发事件。
12. 根据权利要求7所述的装置,所述第一调整模块包括:
目标确定单元,用于确定所述物理机集群中部署有所述至少一个容器的一个或多个目标物理机;以及
调整单元,用于通过所述一个或多个目标物理机调整所述至少一个容器的数量和/或容量。
13. 一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至6中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1至6中任一项所述的方法。
CN202110669222.2A 2021-06-16 2021-06-16 计算机程序模块的容量调整方法、装置、设备和介质 Active CN113342463B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110669222.2A CN113342463B (zh) 2021-06-16 2021-06-16 计算机程序模块的容量调整方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110669222.2A CN113342463B (zh) 2021-06-16 2021-06-16 计算机程序模块的容量调整方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN113342463A CN113342463A (zh) 2021-09-03
CN113342463B true CN113342463B (zh) 2024-01-09

Family

ID=77475766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110669222.2A Active CN113342463B (zh) 2021-06-16 2021-06-16 计算机程序模块的容量调整方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113342463B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829649B1 (en) * 2000-11-10 2004-12-07 International Business Machines Corporation Method an congestion control system to allocate bandwidth of a link to dataflows
CN108268305A (zh) * 2017-01-04 2018-07-10 中国移动通信集团四川有限公司 用于虚拟机自动扩缩容的系统和方法
CN111522636A (zh) * 2020-04-03 2020-08-11 安超云软件有限公司 应用容器的调整方法、调整系统、计算机可读介质及终端设备
CN111865686A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 云产品扩容方法、装置、设备以及存储介质
CN112199150A (zh) * 2020-08-13 2021-01-08 北京航空航天大学 一种基于微服务调用依赖感知的在线应用动态扩缩容方法
CN112434938A (zh) * 2020-11-23 2021-03-02 中国建设银行股份有限公司 一种资源容量的管理方法和装置
CN112596995A (zh) * 2020-12-26 2021-04-02 中国农业银行股份有限公司 一种基于集群架构的容量确定方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8661182B2 (en) * 2011-05-26 2014-02-25 Vmware, Inc. Capacity and load analysis using storage attributes
US9547534B2 (en) * 2014-10-10 2017-01-17 International Business Machines Corporation Autoscaling applications in shared cloud resources
US20170371693A1 (en) * 2016-06-23 2017-12-28 Vmware, Inc. Managing containers and container hosts in a virtualized computer system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6829649B1 (en) * 2000-11-10 2004-12-07 International Business Machines Corporation Method an congestion control system to allocate bandwidth of a link to dataflows
CN108268305A (zh) * 2017-01-04 2018-07-10 中国移动通信集团四川有限公司 用于虚拟机自动扩缩容的系统和方法
CN111522636A (zh) * 2020-04-03 2020-08-11 安超云软件有限公司 应用容器的调整方法、调整系统、计算机可读介质及终端设备
CN111865686A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 云产品扩容方法、装置、设备以及存储介质
CN112199150A (zh) * 2020-08-13 2021-01-08 北京航空航天大学 一种基于微服务调用依赖感知的在线应用动态扩缩容方法
CN112434938A (zh) * 2020-11-23 2021-03-02 中国建设银行股份有限公司 一种资源容量的管理方法和装置
CN112596995A (zh) * 2020-12-26 2021-04-02 中国农业银行股份有限公司 一种基于集群架构的容量确定方法及装置

Also Published As

Publication number Publication date
CN113342463A (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
CN112506444A (zh) 基于Kubernetes集群的扩缩容控制方法和装置、电子设备
CN112559182B (zh) 资源分配方法、装置、设备及存储介质
CN107295090A (zh) 一种资源调度的方法和装置
CN113485792B (zh) 一种kubernetes集群内Pod调度方法、终端设备及存储介质
CN110430068A (zh) 一种特征工程编排方法及装置
CN113228574A (zh) 计算资源调度方法、调度器、物联网系统和计算机可读介质
CN108491255B (zh) 自助式MapReduce数据优化分配方法及系统
CN114448989B (zh) 调整消息分发的方法、装置、电子设备、存储介质及产品
CN111418187A (zh) 云网络中的可伸缩统计和分析机制
CN115291806A (zh) 一种处理方法、装置、电子设备及存储介质
CN111324644B (zh) 大型微服务架构下的数据库连接风暴的监控方法及装置
CN113835823A (zh) 资源调度方法和装置、电子设备、计算机可读存储介质
CN113342463B (zh) 计算机程序模块的容量调整方法、装置、设备和介质
CN110247854B (zh) 一种多等级业务调度方法和调度系统以及调度控制器
CN112887407A (zh) 用于分布式集群的作业流量控制方法和装置
CN112565391A (zh) 调整工业互联网平台中实例的方法、装置、设备和介质
CN116594563A (zh) 分布式存储扩容方法、装置、电子设备和存储介质
CN115952054A (zh) 一种仿真任务资源管理方法、装置、设备及介质
CN106713051A (zh) 一种网络管理系统
CN110493071B (zh) 消息系统资源均衡装置、方法及设备
CN115858309B (zh) 面向分布式系统的数据监控方法、装置和电子设备
CN116909757B (zh) 集群管理的控制系统、方法、电子设备和存储介质
CN116614379B (zh) 迁移服务的带宽调整方法、装置及相关设备
CN117148705B (zh) 基于数据监控分析的设备运行状态检测方法及系统
CN117421331A (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