CN108366082B - 扩容方法及扩容装置 - Google Patents
扩容方法及扩容装置 Download PDFInfo
- Publication number
- CN108366082B CN108366082B CN201710061782.3A CN201710061782A CN108366082B CN 108366082 B CN108366082 B CN 108366082B CN 201710061782 A CN201710061782 A CN 201710061782A CN 108366082 B CN108366082 B CN 108366082B
- Authority
- CN
- China
- Prior art keywords
- service
- workload
- application
- services
- calling
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000004891 communication Methods 0.000 claims abstract description 12
- 238000005259 measurement Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 24
- 230000004044 response Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004205 dimethyl polysiloxane Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012067 mathematical method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/5061—Partitioning or combining of resources
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- 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]
-
- 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
-
- 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
- G06F9/5072—Grid computing
-
- 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
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- 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/5019—Workload prediction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供扩容方法及扩容装置,涉及通信技术领域,解决了现有技术中扩容的速率慢的问题。该方法包括:获取应用的第一服务的实测工作量和应用的应用模型;获取第一服务的每个上一级服务的实测工作量;根据第一服务的实测工作量、第一服务的每个上一级服务的实测工作量、以及与第一调用关系对应的第一工作量比例,确定第一服务的预测工作量;根据第一服务的预测工作量以及与第二调用关系对应的第二工作量比例,确定每个下级服务的预测工作量;根据所有目标服务中每个目标服务的预测工作量,对每个目标服务扩容。
Description
技术领域
本申请涉及通信技术领域,尤其涉及扩容方法及扩容装置。
背景技术
平台作为服务(Platform as a Service,PaaS)是以平台服务为主的一种云服务方式,包括对应用的部署、升级和扩容等能力。其中,PaaS中的扩容由弹性伸缩(AutoScaling)机制提供,现有的弹性伸缩机制以单个服务为控制对象。当应用运行在PaaS平台上时,每个服务的弹性伸缩控制器可以根据实际的工作量需求按照弹性伸缩机制动态地为该服务增加或释放资源。
然而,目前的软件开发逐渐采用微服务理念,微服务强调把一个应用按功能分解成很多个小型的服务,每个服务的开发和维护都是独立的。服务之间通过轻量的网络协议进行通讯。多个服务相互调用实现应用的功能。当把一个应用分解成多个微服务后,应用的整体复杂度降低了,但同时也对资源的弹性伸缩提出了新的要求。如图1所示,假设一个应用包括服务A、服务B、服务C、服务D和服务E,按照现有的弹性伸缩机制只能对应用的各个服务逐级进行资源扩容,当服务A出现大量的服务请求时,首先对服务A扩容,当服务A扩容完成之前,服务B无法感知需要扩容,大量的服务请求阻塞在服务B和服务C请求队列中,一段时间之后,随着服务B和服务C的资源使用率不断上升,弹性伸缩机制会为服务B和服务C扩容。但是应用的整体性能还是没有提升,因为服务D和服务E又变成了新的性能瓶颈。这种逐级扩容的方式需要很长时间才能完成对应用的整体扩容,进而导致用户请求应用服务的等待时间过长,甚至得不到应用的响应,用户体验较差。
因此,如何提高扩容的速率是目前亟待解决的问题。
发明内容
本申请的实施例提供扩容方法及扩容装置,解决了现有技术中逐级扩容的速率低的问题。
为达到上述目的,本申请的实施例采用如下技术方案:
一方面,提供一种扩容方法,该方法包括:获取应用的第一服务的实测工作量和该应用的应用模型,其中,该应用模型包括该应用的所有服务之间的调用关系以及与该调用关系中每个调用关系对应的工作量比例,该第一服务为该所有服务中的任意一个服务;根据该应用模型中该第一服务与该第一服务的每个上一级服务的第一调用关系,确定该第一服务的每个上一级服务;以及,根据该应用模型中该第一服务与该第一服务的每个下级服务的第二调用关系,确定该第一服务的每个下级服务;获取该第一服务的每个上一级服务的实测工作量;根据该第一服务的实测工作量、该第一服务的每个上一级服务的实测工作量、以及与该第一调用关系对应的第一工作量比例,确定该第一服务的预测工作量;根据该第一服务的预测工作量以及与该第二调用关系对应的第二工作量比例,确定该每个下级服务的预测工作量;根据所有目标服务中每个目标服务的预测工作量,对该每个目标服务扩容,其中,该所有目标服务包括该第一服务和该第一服务的每个下级服务。本申请实施例提供的扩容方法通过应用模型进行扩容,由于该应用模型可以表征该应用各个服务之间的调用关系以及与该调用关系对应的工作量比例,因此扩容装置可以根据该应用的应用模型预测该应用的任意一个服务的预测工作量,得到所有目标服务的预测工作量,进而可以根据所有目标服务的预测工作量,对所有目标服务同时扩容,相对于现有技术中只能对服务逐级扩容的方法,提高了扩容的速率,进而可在短时间内迅速提高该应用的整体性能,进一步保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,在该获取该应用模型之前,该方法还包括:获取该所有服务中每个服务的服务接口描述文件和该每个服务的配置文件,其中,该每个服务的服务接口描述文件包括该每个服务的名称,该每个服务的配置文件包括该每个服务和该每个服务的下一级服务之间的调用关系;根据该每个服务和该每个服务的下一级服务之间的调用关系,确定该所有服务之间的调用关系;根据该每个服务的名称获取该每个服务的工作量历史记录,根据该工作量历史记录和该所有服务之间的调用关系,确定与该每个调用关系对应的工作量比例;根据该所有服务之间的调用关系和与该每个调用关系对应的工作量比例,生成该应用模型。本申请实施例提供的应用模型生成的方法,通过服务的服务接口描述文件和配置文件确定该应用的所有服务的调用关系,并根据所有服务的调用关系和通过计算每个调用关系对应的工作量比例确定该应用的应用模型。也就是说,该应用模型可以表征该应用各个服务之间的调用关系以及与该调用关系对应的工作量比例,因此扩容装置可以根据该应用的应用模型预测该应用的任意一个服务的预测工作量,得到所有目标服务的预测工作量,进而可以根据所有目标服务的预测工作量,对所有目标服务同时扩容,从而提高了扩容的速率。进一步的,可在短时间内迅速提高该应用的整体性能,进一步保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,根据该每个服务的名称获取该每个服务的工作量历史记录,根据该工作量历史记录和该每个调用关系,更新该每个调用关系对应的工作量比例;根据该每个调用关系和该每个调用关系对应的更新后的工作量比例,更新该应用模型。本申请实施例提供的应用模型更新的方法,通过获取的每个服务的工作量历史记录更新应用模型中的每个调用关系对应的工作量比例,可以使应用模型更加准确的反映出服务之间的工作量比例的变化,进而当需要扩容时可以在快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,若更新后的该应用中增加了第三服务,获取该第三服务的服务接口描述文件和配置文件、以及至少一个第四服务中每个第四服务更新后的配置文件,其中,该第三服务的服务接口描述文件包括该第三服务的名称,该第三服务的配置文件包括该第三服务和至少一个第五服务中每个第五服务的第三调用关系,该每个第四服务更新后的配置文件包括该每个第四服务和该第三服务的第四调用关系,该第四服务为该第三服务的上一级服务,该第五服务为该第三服务的下一级服务;根据该应用模型、该第三调用关系和该第四调用关系,更新该所有服务之间的调用关系;根据更新后的该应用的所有服务中每个服务的名称获取该更新后的该应用的所有服务中每个服务的工作量历史记录,根据该更新后的该应用的所有服务中每个服务的工作量历史记录和更新后的该所有服务之间的调用关系确定与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例;根据该更新后的该所有服务之间的调用关系和与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例,更新该应用的应用模型。本申请实施例提供的模型更新方法,通过在应用增加服务时更新该应用的所有调用关系和工作量比例,可以使应用模型更加准确的反映出应用更新后调用关系和工作量比例的变化,进而当需要扩容时可以在快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,若更新后的该应用中删除了第六服务,获取至少一个第七服务中每个第七服务更新后的配置文件,其中,在该应用删除第六服务之前,该第七服务为该第六服务的上一级服务,在该应用删除第六服务之后,该每个第七服务更新后的配置文件中包括该每个第七服务和至少一个第八服务的第五调用关系,该第八服务为该第七服务的下一级服务;根据该应用模型和该第五调用关系,更新该所有服务之间的调用关系;根据更新后的该应用的所有服务中每个服务的名称获取该更新后的该应用的所有服务中每个服务的工作量历史记录,根据该更新后的该应用的所有服务中每个服务的工作量历史记录和更新后的该所有服务之间的调用关系确定与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例;根据该更新后的该所有服务之间的调用关系和与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例,更新该应用的应用模型。本申请实施例提供的模型更新方法,通过在应用删除服务时更新该应用的所有调用关系和工作量比例,可以使应用模型更加准确的反映出应用更新后调用关系和工作量比例的变化,进而当需要扩容时可以在快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,该根据该第一服务的实测工作量、该第一服务的每个上一级服务的实测工作量、以及与该第一调用关系对应的第一工作量比例,确定该第一服务的预测工作量,包括:根据预设公式确定该第一服务的预测工作量;该预设公式包括:f(vi)=max(d(vi),Σk∈Kf(k)*eki);其中,V表示该应用中所有服务的集合,K表示该应用中服务i的上一级服务k的集合,K∈V,vi表示该服务i,d(vi)表示该服务i的实测工作量,f(k)表示该服务i的上一级服务k的实测工作量,eki表示该服务k和该服务i的工作量比例,该服务i为该所有服务中的任意一个服务。本申请实施例提供了一种确定第一服务的预测工作量的具体实现。其中∑k∈Kf(k)*eki表示根据f(k)和eki计算得到的服务i的工作量,max(d(vi),∑k∈Kf(k)*eki)表示将∑k∈Kf(k)*eki和d(vi)中的较大值确定为服务i的预测工作量,由于考虑了基于第一服务的上一级服务的实测工作量确定的第一服务的工作量和第一服务的实测工作量两方面的因素,因此可以获得更准确的第一服务的预测工作量,进而可以获得更准确的扩容实例数,进一步的可以保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,该根据所有目标服务中每个目标服务的预测工作量,对该每个目标服务扩容,包括:根据该每个目标服务的预测工作量、以及预先存储的该每个目标服务的工作量和实例数的对应关系,确定为该每个目标服务扩容的第一实例数,并根据该第一实例数对该每个目标服务扩容。根据本申请实施例提供的扩容方法,通过预测工作量和预先存储的工作量和实例数的对应关系对比,进而可以更准确的确定扩容的实例数,进一步使该应用可以快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,在根据该第一实例数对该每个目标服务扩容之前,该方法还包括:获取该每个目标服务的资源利用率;若该每个目标服务的资源利用率超过预设阈值,根据预先存储的该每个目标服务的资源利用率和实例数的对应关系确定为该每个目标服务扩容的第二实例数;根据该第一实例数和该第二实例数确定为对该每个目标服务扩容的目标实例数,并根据该目标实例数对该每个目标服务扩容。根据本申请实施例提供的扩容方法,当对应用扩容时可以根据每个服务的资源利用率确定根据资源利用率获得的实例数,通过预测工作量确定的实例数和根据资源利用率获得的实例数可以获得更准确的目标扩容实例数,进一步使该应用可以根据更准确的扩容实例快速扩容,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
一种可能的实现方式中,该根据该第一实例数和该第二实例数确定为对该每个目标服务扩容的目标实例数包括:若该第一实例数大于该第二实例数,将确定该第一实例数为对该每个目标服务扩容的目标实例数;若该第一实例数不大于该第二实例数,将确定该第二实例数为对该每个目标服务扩容的目标实例数。本申请实施例中,通过两种方式确定扩容的目标实例数,可以满足多种条件触发的应用扩容,通过两种不同方式确定的目标实例数的比较,在可以快速扩容的前提下还可以获得更准确的扩容实例数,进一步使该应用可以快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
另一方面,提供一种扩容装置,该扩容装置包括:工作量估算器和伸缩控制器;该工作量估算器用于:获取应用的第一服务的实测工作量和该应用的应用模型,其中,该应用模型包括该应用的所有服务之间的调用关系以及与该调用关系中每个调用关系对应的工作量比例,该第一服务为该所有服务中的任意一个服务;根据该应用模型中该第一服务与该第一服务的每个上一级服务的第一调用关系,确定该第一服务的每个上一级服务;以及,根据该应用模型中该第一服务与该第一服务的每个下级服务的第二调用关系,确定该第一服务的每个下级服务;获取该第一服务的每个上一级服务的实测工作量;根据该第一服务的实测工作量、该第一服务的每个上一级服务的实测工作量、以及与该第一调用关系对应的第一工作量比例,确定该第一服务的预测工作量;根据该第一服务的预测工作量以及与该第二调用关系对应的第二工作量比例,确定该每个下级服务的预测工作量;该伸缩控制器用于:根据所有目标服务中每个目标服务的预测工作量,对该每个目标服务扩容,其中,该所有目标服务包括该第一服务和该第一服务的每个下级服务。
一种可能的实现方式中,该扩容装置还包括:模型生成器;该模型生成器用于:获取该所有服务中每个服务的服务接口描述文件和该每个服务的配置文件,其中,该每个服务的服务接口描述文件包括该每个服务的名称,该每个服务的配置文件包括该每个服务和该每个服务的下一级服务之间的调用关系;根据该每个服务和该每个服务的下一级服务之间的调用关系,确定该所有服务之间的调用关系;根据该每个服务的名称获取该每个服务的工作量历史记录,根据该工作量历史记录和该所有服务之间的调用关系,确定与该每个调用关系对应的工作量比例;根据该所有服务之间的调用关系和与该每个调用关系对应的工作量比例,生成该应用模型。
一种可能的实现方式中,该扩容装置还包括:模型更新器;该模型更新器用于:根据该每个服务的名称获取该每个服务的工作量历史记录,根据该工作量历史记录和该每个调用关系,更新该每个调用关系对应的工作量比例;根据该每个调用关系和该每个调用关系对应的更新后的工作量比例,更新该应用模型。
一种可能的实现方式中,该扩容装置还包括:模型更新器;该模型更新器用于:若更新后的该应用中增加了第三服务,获取该第三服务的服务接口描述文件和配置文件、以及至少一个第四服务中每个第四服务更新后的配置文件,其中,该第三服务的服务接口描述文件包括该第三服务的名称,该第三服务的配置文件包括该第三服务和至少一个第五服务中每个第五服务的第三调用关系,该每个第四服务更新后的配置文件包括该每个第四服务和该第三服务的第四调用关系,该第四服务为该第三服务的上一级服务,该第五服务为该第三服务的下一级服务;根据该应用模型、该第三调用关系和该第四调用关系,更新该所有服务之间的调用关系;根据更新后的该应用的所有服务中每个服务的名称获取该更新后的该应用的所有服务中每个服务的工作量历史记录,根据该更新后的该应用的所有服务中每个服务的工作量历史记录和更新后的该所有服务之间的调用关系确定与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例;根据该更新后的该所有服务之间的调用关系和与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例,更新该应用的应用模型。
一种可能的实现方式中,该扩容装置还包括:模型更新器;该模型更新器用于:若更新后的该应用中删除了第六服务,获取至少一个第七服务中每个第七服务更新后的配置文件,其中,在该应用删除第六服务之前,该第七服务为该第六服务的上一级服务,在该应用删除第六服务之后,该每个第七服务更新后的配置文件中包括该每个第七服务和至少一个第八服务的第五调用关系,该第八服务为该第七服务的下一级服务;根据该应用模型和该第五调用关系,更新该所有服务之间的调用关系;根据更新后的该应用的所有服务中每个服务的名称获取该更新后的该应用的所有服务中每个服务的工作量历史记录,根据该更新后的该应用的所有服务中每个服务的工作量历史记录和更新后的该所有服务之间的调用关系确定与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例;根据该更新后的该所有服务之间的调用关系和与该更新后的该所有服务之间的调用关系中每个调用关系对应的工作量比例,更新该应用的应用模型。
一种可能的实现方式中,该工作量估算器具体用于:根据预设公式确定该第一服务的预测工作量;该预设公式包括:f(vi)=max(d(vi),∑k∈Kf(k)*eki);其中,V表示该应用中所有服务的集合,K表示该应用中服务i的上一级服务k的集合,K∈V,vi表示该服务i,d(vi)表示该服务i的实测工作量,f(k)表示该服务i的上一级服务k的实测工作量,eki表示该服务k和该服务i的工作量比例,该服务i为该所有服务中的任意一个服务。
一种可能的实现方式中,该伸缩控制器具体用于:根据该每个目标服务的预测工作量、以及预先存储的该每个目标服务的工作量和实例数的对应关系,确定为该每个目标服务扩容的第一实例数,并根据该第一实例数对该每个目标服务扩容。
一种可能的实现方式中,该伸缩控制器还用于:在根据该第一实例数对该每个目标服务扩容之前,获取该每个目标服务的资源利用率;若该每个目标服务的资源利用率超过预设阈值,根据预先存储的该每个目标服务的资源利用率和实例数的对应关系确定为该每个目标服务扩容的第二实例数;根据该第一实例数和该第二实例数确定为对该每个目标服务扩容的目标实例数,并根据该目标实例数对该每个目标服务扩容。
一种可能的实现方式中,该伸缩控制器具体用于:若该第一实例数大于该第二实例数,将确定该第一实例数为对该每个目标服务扩容的目标实例数;若该第一实例数不大于该第二实例数,将确定该第二实例数为对该每个目标服务扩容的目标实例数。
又一方面,本申请实施例提供一种扩容装置,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当该扩容装置运行时,该处理器执行该存储器存储的该计算机执行指令,以使该扩容装置执行如上述任意一项的扩容方法。
又一方面,本申请实施例提供了一种计算机存储介质,用于储存为上述任意一项的扩容方法所用的计算机软件指令,其包含用于执行上述任意一项扩容方法所设计的程序。
又一方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述任意一项的扩容方法中的流程。
另外,上述扩容装置实施例中任一种设计方式所带来的技术效果可参见上述扩容方法实施例中不同设计方式所带来的技术效果,此处不再赘述。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为现有弹性机制的扩容方法示意图;
图2为本申请实施例提供的一种应用模型示意图;
图3为本申请实施例提供的一种扩容装置的结构示意图;
图4为本申请实施例提供的一种计算机设备示意图;
图5为本申请实施例提供的一种应用模型的生成的具体实现示意图;
图6为本申请实施例提供的一种应用模型的生成示意图;
图7为本申请实施例提供的一种更新应用模型的示意图;
图8为本申请实施例提供的又一种更新应用模型的示意图;
图9为本申请实施例提供的又一种更新应用模型的示意图;
图10为本申请实施例提供的一种扩容方法流程示意图;
图11为本申请实施例提供的一种预测工作量的流程示意图;
图12为本申请实施例提供的又一种扩容方法流程示意图;
图13为本申请实施例提供的又一种扩容方法流程示意图;
图14为本申请实施例提供的一种伸缩控制器的内部结构图;
图15为本申请实施例提供的又一种扩容方法流程示意图。
具体实施方式
首先,为了便于理解本申请的方案,本申请给出相关定义。
应用:软件开发理念中,一个应用是由函数库连接起来的可执行文件,该可执行文件提供应用的所有功能。
实例:应用中的一个服务由多个实例执行,每个实例称为该服务的服务实例,每个服务实例为该服务的一个执行单元,一个执行单元可执行固定的工作量。
应用模型:由节点、边和边权值组成的有向图,如图2所示,为本申请实施例提供的一种应用模型示意图。本申请实施例中,根据节点的定义,应用模型可分为粗粒度模型和细粒度模型。
其中,粗粒度模型中每个节点代表一个服务,每条有向边代表一种服务之间的调用关系,边权值代表服务在调用中产生的工作量比例。如图2A所示,为本申请实施例提供的粗粒度应用模型示意图,节点A表示服务A、节点B表示服务B、节点C表示服务C、节点D表示服务D和节点E表示服务E。其中,服务A上的1个工作量需要服务B的2个工作量和服务C的2个工作量,服务B上的1个工作量需要服务D的1个工作量,服务C上的1个工作量需要服务E的1个工作量。
细粒度模型中的每个节点表示一个应用中的每个服务中的每个功能,每条有向边代表一种功能之间的调用关系,边权值代表功能在调用中产生的工作量比例。如图2B所示,为本申请实施例提供的细粒度应用模型示意图,假设图2B为应用Y中服务S对应的部分应用模型,节点A.op表示应用Y中的服务S的功能A、B.op表示应用Y中的服务S的功能B、C.op表示应用Y中的服务S的功能C、D.op表示应用Y中的服务S的功能D和E.op表示应用Y中的服务S的功能E。其中功能A上的一个工作量需要功能B的2个工作量和功能C的2个工作量,功能B上的1个工作量需要功能D的1个工作量,功能C上的1个工作量需要功能E的1个工作量。
需要说明的是,本申请实施例中,细粒度模型预测工作量更准确,但是维护成本较高,粗粒度模型预测工作量一般,但维护方便,使用粗粒度即可解决目前扩容慢的问题,并且粗粒度模型和细粒度模型的建立和维护方法相同,因此本申请实施例中以粗粒度模型为例进行说明。
需要说明的是,本文中的“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。“多个”是指两个或多于两个。
如本申请所使用的术语“组件”、“模块”、“系统”等等旨在指代计算机相关实体,该计算机相关实体可以是硬件、固件、硬件和软件的结合、软件或者运行中的软件。例如,组件可以是,但不限于是:在处理器上运行的处理、处理器、对象、可执行文件、执行中的线程、程序和/或计算机。作为示例,在计算机设备上运行的应用和该计算机设备都可以是组件。一个或多个组件可以存在于执行中的过程和/或线程中,并且组件可以位于一个计算机中以及/或者分布在两个或更多个计算机之间。此外,这些组件能够从在其上具有各种数据结构的各种计算机可读介质中执行。这些组件可以通过诸如根据具有一个或多个数据分组(例如,来自一个组件的数据,该组件与本地系统、分布式系统中的另一个组件进行交互和/或以信号的方式通过诸如互联网之类的网络与其它系统进行交互)的信号,以本地和/或远程过程的方式进行通信。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
需要说明的是,本申请实施例中,“的(of)”,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了更好的描述本申请实施例的扩容方法,首先给出本申请实施例的一个应用场景:
如背景技术中的图1所示,假设应用1包括5个服务,分别为服务A、服务B、服务C、服务D和服务E。其中,服务A为服务B和服务C的上一级服务,服务B为服务D的上一级服务,服务C为服务E的上一级服务,服务B、服务C、服务D和服务E为服务A的所有下级服务,按照现有的逐级扩容的方式需要很长时间才能完成对应用的整体扩容,进而导致用户请求应用服务的等待时间过长,甚至得不到应用服务的响应,用户体验较差。因此,如何提高扩容的速率是目前亟待解决的问题。
为了解决该问题,本申请实施例提供一种扩容方法及装置,能够对应用中的服务同时扩容,从而提高扩容的速率,为达到上述目的,本申请的实施例采用如下技术方案:
图3为本申请的实施例所应用提供的扩容装置的结构示意图,该扩容装置300包括:伸缩控制器310和工作量估算器320。其中,伸缩控制器310用于根据对应的目标服务的预测工作量确定目标扩容数并对目标服务进行扩容,比如服务A的伸缩控制器用于根据服务A的预测工作量确定服务A的目标扩容数并对服务A进行扩容,服务B的伸缩控制器用于根据服务B的预测工作量确定服务B的目标扩容数并对服务B进行扩容,服务C的伸缩控制器用于根据服务C的预测工作量确定服务C的目标扩容数并对服务C进行扩容,等等;工作量估算器320用于根据应用模型估算所有目标服务的预测工作量,比如工作量估算器320根据应用模型估算服务A、服务B、服务C等服务的预测工作量。具体的扩容方式和工作量预测的方式将在下述方法实施例中阐述,此处不再赘述。
其中,本申请实施例中的应用模型可以是由模型生成器331生成的应用模型,也可以是经过模型更新器332更新后的应用模型,本申请实施例对此不作具体限定。具体的生成应用模型的方式和更新应用模型的方式将在下述方法实施例中阐述,此处不再赘述。
另外,图3中的模型生成器331和模型更新器332可能集成在本申请实施例提供的扩容装置中,也可能独立于本申请实施例提供的扩容装置部署,本申请实施例对此不作具体限定。
其中,在图3所示的扩容装置300中,每个服务中的队列用于缓存服务需要处理的工作,每个服务中的线程用于处理服务中工作,每个服务中的监控器用于向扩容装置300发送工作量,在此进行统一说明,以下不再赘述。
如图4所示,本申请实施例中的服务扩容装置可以通过图4中的计算机设备(或系统)来实现。
图4所示为本申请实施例提供的计算机设备示意图。计算机设备400包括至少一个处理器401,通信总线402,存储器403以及至少一个通信接口404。
处理器401可以是一个通用中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线402可包括一通路,在上述组件之间传送信息。
通信接口404,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(Radio Access Network,RAN),无线局域网(Wireless Local AreaNetworks,WLAN)等。
存储器403可以是只读存储器(Read-Only Memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(Random Access Memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器403用于存储执行本申请方案的应用程序代码,并由处理器401来控制执行。处理器401用于执行存储器403中存储的应用程序代码,从而实现本申请实施例中的告警方法。
在具体实现中,作为一种实施例,处理器401可以包括一个或多个CPU,例如图4中的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备400可以包括多个处理器,例如图4中的处理器401和处理器408。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备400还可以包括输出设备405和输入设备406。输出设备405和处理器401通信,可以以多种方式来显示信息。例如,输出设备305可以是液晶显示器(Liquid Crystal Display,LCD),发光二级管(Light Emitting Diode,LED)显示设备,阴极射线管(Cathode Ray Tube,CRT)显示设备,或投影仪(projector)等。输入设备406和处理器401通信,可以以多种方式接受用户的输入。例如,输入设备406可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备400可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备400可以是台式机、便携式电脑、网络服务器、掌上电脑(Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图4中类似结构的设备。本申请实施例不限定计算机设备400的类型。
如上所述,由于本申请实施例提供的扩容方法需要使用应用的应用模型,因此,首先给出应用模型的生成过程如下。
模型生成器331生成应用模型,包括步骤K1-K4:
K1:获取所有服务中的每个服务的服务接口描述文件和每个服务的配置文件。
其中,每个服务的服务接口描述文件包括每个服务的名称,每个服务的配置文件包括每个服务和每个服务的下一级服务之间的调用关系。
K2:根据每个服务和每个服务的下一级服务之间的调用关系,确定所有服务之间的调用关系。
K3:根据每个服务的名称获取每个服务的工作量历史记录,根据工作量历史记录和所有服务之间的调用关系,确定与每个调用关系对应的工作量比例。
K4:根据所有服务之间的调用关系和与每个调用关系对应的工作量比例,生成应用模型。
其中,上述步骤K1-K2可通过图5A的流程实现。具体的,图5A为一种确定应用中所有服务的调用关系的实现流程示意图。假设应用1中Web服务的接口描述语言(Web ServiceDescription Language,WSDL)文件为服务接口描述文件。首先,模型生成器331创建空模型,判断是否有没处理的服务,如果存在没处理的服务,模型生成器331获取该服务的WSDL文件,从WSDL文件中提取该服务名称。进而,模型生成器331根据该服务名称,在模型中为该服务添加一个新节点,并获取该服务的配置文件(config文件)。进而,模型生成器331提取config文件中该服务和该服务的下一级服务的调用关系,并在模型中为每个调用关系添加一条边。当应用所有的服务都处理完毕,模型生成器331即可确定应用模型的中所有服务之间的调用关系。
需要说明的是,所有服务之间的调用关系在应用开发完成后即可确认完成,通常只有在该应用的服务更新后才重新确认。其中,该应用的服务更新包括增加服务或者减少服务。
其中,上述步骤K3-K4可以通过图5B的流程实现。具体的,图5B为一种根据所有服务之间的调用关系和工作量比例生成应用模型的实现流程示意图。首先,模型生成器331获取每个服务的工作量历史记录,本申请实施例中通过记录每个服务每秒钟处理的请求数量(Query Per Second,QPS)数据记录工作量历史数据。其次,计算各个服务的总QPS数据,将各个服务的总QPS数据添加到历史表中。进而,通过历史数据计算各个服务间的工作量比例。最后,将工作量比例更新到所有服务之间的调用关系中每个调用关系对应的边上的权值,当将该应用的各个服务都处理之后,模型生成器331生成应用模型。
示例性的,假设应用1通过QPS数据来衡量服务的每个实例的处理能力。其中,假设服务A每个实例的处理能力为160QPS、服务B的每个实例的处理能力为300QPS、服务C每个实例的处理能力为500QPS、服务D每个实例的处理能力为500QPS、服务E每个实例的处理能力为800QPS。服务A、服务B、服务C、服务D和服务E的各个服务接口描述文件分别包括服务A、服务B、服务C、服务D和服务E的名称。服务A的配置文件中包括服务A和服务B的调用关系1、以及服务A和服务C的调用关系2;服务B的配置文件中包括服务B和服务D的调用关系3;服务C的配置文件中包括服务C和服务E的调用关系4;服务D的配置文件中包括服务D为空的调用关系5;服务E的配置文件中包括服务E为空的调用关系6。则模型生成器331可以通过如下方式生成应用模型:
首先,模型生成器331获取应用1中服务A、服务B、服务C、服务D和服务E的服务接口描述文件和服务A、服务B、服务C、服务D和服务E的配置文件。
其次,模型生成器331可以按照图6A的方法,根据服务A、服务B、服务C、服务D和服务E的服务接口描述文件中的名称,分别为服务A、服务B、服务C、服务D和服务E生成一个节点,根据服务A、服务B、服务C、服务D和服务E的配置文件中的调用关系1、调用关系2、调用关系3、调用关系4、调用关系5和调用关系6为每个调用关系生成一条边,进而可以得出如图6A中所示调用关系为:服务A调用服务B和服务C,服务B调用服务D,服务C调用服务E。
然后,模型生成器331根据每个服务的服务接口描述文件中的服务的名称获取应用1的每个服务的工作量历史记录。
示例性的,假设表1为应用1在T1时刻的工作量历史记录1,其中,在T1时刻各个服务的各个实例的工作量历史记录具体如表1所示:
表1
服务A | 服务B | 服务C | 服务D | 服务E | |
实例 | A1=100QPS | B1=200QPS | C1=200QPS | D1=300QPS | E1=300QPS |
实例 | A2=100QPS | B2=200QPS | C2=200QPS | D2=300QPS | E2=300QPS |
实例 | B3=200QPS | C3=200QPS | D3=300QPS | ||
实例 | D4=300QPS |
根据表1得出,应用1在T1时刻的各个服务上的总工作量分别为:服务A-200QPS、服务B-600QPS、服务C-600QPS、服务D-1200QPS和服务E-600QPS。
将T1时刻的各个服务上的总工作量添加到历史表中,如表2所示:
表2
时间 | 服务A | 服务B | 服务C | 服务D | 服务E |
T1 | 200QPS | 600QPS | 600QPS | 1200QPS | 600QPS |
假设表3为应用1在T2时刻工作量历史记录2,其中,在T2时刻各个服务的各个实例的工作量历史记录具体如表3所示:
表3
服务A | 服务B | 服务C | 服务D | 服务E | |
实例 | A1=150QPS | B1=300QPS | C1=300QPS | D1=450QPS | E1=450QPS |
实例 | A2=150QPS | B2=300QPS | C2=300QPS | D2=450QPS | E2=450QPS |
实例 | B3=300QPS | C3=300QPS | D3=450QPS | ||
实例 | D4=450QPS |
根据表3得出,应用1在T2时刻的各个服务上的总工作量分别为:服务A-300QPS、服务B-900QPS、服务C-900QPS、服务D-1800QPS和服务E-900QPS。
由表1和表3可以看出,在T1时刻和T2时刻,服务A包括2个实例,分别为A1和A2;服务B包括3个实例,分别为B1、B2和B3;服务C包括3个实例,分别为C1、C2和C3;服务D包括4个实例,分别为D1、D2、D3和D4;服务E包括2个实例,分别为E1和E2。
将T2时刻的各个服务上的总工作量添加到历史表中,如表4所示:
表4
根据表4,计算各个存在调用关系的服务之间的QPS比例的平均值,分别为服务B/服务A=(900+600)/(200+300)=3、服务C/服务A=(900+600)/(200+300)=3、服务D/服务B=(1200+1800)/(900+600)=2、服务E/服务C=(600+900)/(900+600)=1。因此,每个调用关系对应的工作量比例分别为:BA=3、CA=3、DB=2、EC=1。将每个调用关系对应的工作量比例作为如图6A中存在调用关系的边的权重,即可得到如图6B所示的应用模型。
需要说明的是,本申请实施例中仅以T1时刻和T2时刻的工作量记录为例进行说明,实际应用中可以根据自定义的时间段的工作量记录确定应用模型中调用关系的对应的工作量比例,本申请实施例对此不作具体限定。另外,本申请实施例仅是示例性的以取平均值的方法计算服务间的工作量比例,实际应用中可以采用其他数学方法分析服务间的工作量比例,本申请实施例对此不作具体限定。
需要说明的是,本申请实施例以服务A和服务E的实例数都为2、服务B和服务C实例数都为3、服务D实例数为4为例进行说明。当然,各个服务上的实例的处理能力可以相同也可以不同,各个服务上的实例数可以相同也可以不同,本申请实施例对此不作具体限定。
本申请实施例提供的应用模型生成的方法,通过服务的服务接口描述文件和配置文件确定该应用的所有服务的调用关系,并根据所有服务的调用关系和通过计算每个调用关系对应的工作量比例确定该应用的应用模型。也就是说,该应用模型可以表征该应用各个服务之间的调用关系以及与该调用关系对应的工作量比例,因此扩容装置可以根据该应用的应用模型预测该应用的任意一个服务的预测工作量,得到所有目标服务的预测工作量,进而可以根据所有目标服务的预测工作量,对所有目标服务同时扩容,从而提高了扩容的速率。进一步的,可在短时间内迅速提高该应用的整体性能,进一步保障了应用的可靠性、吞吐量和响应时延等对客户承诺的服务指标(Service Level Agreement,SLA)指标。
具体的,结合图3,模型生成器331用于支持执行本申请实施例中的步骤K1-K4。
具体的,上述K1-K4的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限定。
可选的,考虑到应用的服务是动态变化的,为了更加准确的描述应用的各个服务之间的关系,可以采用模型更新器332更新应用模型,下面将给出应用模型的三种具体的更新方式。
第一种应用模型的更新方式:包括步骤M1-M3:
M1:根据每个服务的名称获取每个服务的工作量历史记录。
M2:根据工作量历史记录和每个调用关系,更新每个调用关系对应的工作量比例。
M3:根据每个调用关系和每个调用关系对应的更新后的工作量比例,更新应用模型。
示例性的,假设表5为应用1在T3时刻工作量历史记录3,其中,在T3时刻各个服务的各个实例的工作量历史记录具体如表5所示:
表5
根据表5可以得出,应用1在T3时刻的各个服务上的总工作量分别为:服务A-200QPS、服务B-700QPS、服务C-1300QPS、服务D-1400QPS和服务E-1300QPS。
将T3时刻的各个服务上的总工作量添加到历史表中,如表6所示:
表6
时间 | 服务A | 服务B | 服务C | 服务D | 服务E |
T1 | 200QPS | 600QPS | 600QPS | 1200QPS | 600QPS |
T2 | 300QPS | 900QPS | 900QPS | 1800QPS | 900QPS |
T3 | 200QPS | 700QPS | 1300QPS | 1400QPS | 1300QPS |
根据表6,计算各个存在调用关系的服务之间的QPS比例的平均值,分别为服务B/服务A=(900+600+700)/(200+300+200)=3、服务C/服务A=(900+600+1300)/(200+300+200)=4、服务D/服务B=(1200+1800+1400)/(900+600+700)=2、服务E/服务C=(600+900+1300)/(900+600+1300)=1。因此,每个调用关系对应的工作量比例分别为:BA=3、CA=4、DB=2和EC=1。将每个调用关系对应的工作量比例作为如图6B中存在调用关系的边的权重,即可得到如图7所示的应用模型。
本申请实施例提供的应用模型更新的方法,通过获取的每个服务的工作量历史记录更新应用模型中的每个调用关系对应的工作量比例,可以使应用模型更加准确的反映出服务之间的工作量比例的变化,进而当需要扩容时可以在快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,模型更新器332用于执行上述本申请实施例中的步骤M1-M3。
具体的,上述M1-M3的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限定。
第二种更新应用模型方式:包括步骤W1-W5:
W1:若更新后的应用中增加了第三服务,获取第三服务的服务接口描述文件和配置文件、以及至少一个第四服务中每个第四服务更新后的配置文件。
其中,第三服务的服务接口描述文件包括第三服务的名称,第三服务的配置文件包括第三服务和至少一个第五服务中每个第五服务的第三调用关系,每个第四服务更新后的配置文件包括每个第四服务和第三服务的第四调用关系,第四服务为第三服务的上一级服务,第五服务为第三服务的下一级服务。
W2:根据应用模型、第三调用关系和第四调用关系,更新所有服务之间的调用关系。
W3:根据更新后的应用的所有服务中每个服务的名称获取更新后的应用的所有服务中每个服务的工作量历史记录。
W4:根据更新后的应用的所有服务中每个服务的工作量历史记录和更新后的所有服务之间的调用关系确定与更新后的所有服务之间的调用关系中每个调用关系对应的工作量比例。
W5:根据更新后的所有服务之间的调用关系和与更新后的所有服务之间的调用关系中每个调用关系对应的工作量比例,更新应用的应用模型。
示例性的,假设应用1增加了服务F,服务F中的服务接口描述文件中包括服务F的名称,服务F的配置文件中包括服务F和服务E的调用关系7,服务F没有调用其他服务。
按照上述方式,模型更新器332根据图6A所示的应用模型的调用关系和调用关系7将图6A所示的应用模型的调用关系更新为如图7所示的应用1的调用关系。
假设表7为应用1在T4时刻工作量历史记录4,其中,在T4时刻各个服务的各个实例上历史工作量具体如表7所示:
表7
服务A | 服务B | 服务C | 服务D | 服务E | 服务F | |
实例 | A1=100QPS | B1=200QPS | C1=200QPS | D1=300QPS | E1=300QPS | F1=600QPS |
实例 | A2=100QPS | B2=200QPS | C2=200QPS | D2=300QPS | E2=300QPS | |
实例 | B3=200QPS | C3=200QPS | D3=300QPS | |||
实例 | D4=300QPS |
根据表7可以得出,应用1在T4时刻的各个服务上的总工作量分别为:服务A-200QPS、服务B-600QPS、服务C-600QPS、服务D-1200QPS、服务E-600QPS和服务F-600QPS。
将T4时刻的各个服务上的总工作量添加到历史表中,如表8所示:
表8
时间 | 服务A | 服务B | 服务C | 服务D | 服务E | 服务F |
T1 | 200QPS | 600QPS | 600QPS | 1200QPS | 600QPS | |
T2 | 300QPS | 900QPS | 900QPS | 1800QPS | 900QPS | |
T3 | 200QPS | 700QPS | 1300QPS | 1400QPS | 1300QPS | |
T4 | 200QPS | 600QPS | 600QPS | 1200QPS | 600QPS | 600QPS |
根据表8,计算T4时刻各个存在调用关系的服务之间的QPS比例的平均值,分别为:服务B/服务A=(200+200+200)/(100+100)=3、服务C/服务A=(200+200+200)/(100+100)=3、服务D/服务B=(300+300+300+300)/(200+200+200)=2、服务E/服务C=(300+300)/(200+200+200)=1、服务F/服务E=(600)/(300+300)=1。因此,每个调用关系对应的工作量比例分别为:BA=3,CA=3,DB=2,EC=1,FE=1。将每个调用关系对应的工作量比例作为如图8A中存在调用关系的边的权重,即得到如图8B所示的应用模型。
需要说明的是,本申请实施例为了简化说明,在应用增加了服务后仅是示例性的只采用了一个时刻的工作量历史记录,实际应用中,当应用更新后为了更准确地更新应用模型可以根据需要获取多个工作量历史记录,采用其他算法获得各个调用关系对应的工作量比例,本申请实施例对此不作具体限定;另外为了便于理解,本申请实施例中将更新的工作量历史数据记录在同一个历史表中,实际应用中,当应用更新后可以建立一个新的历史表重新记录更新后的工作量历史数据,本申请实施例对此不作具体限定。
需要说明的是,当应用增加了一个服务时,调用该服务的上一级服务和该服务调用的下一级服务的会更新配置文件中的调用关系。
本申请实施例提供的模型更新方法,通过在应用增加服务时更新该应用的所有调用关系和工作量比例,可以使应用模型更加准确的反映出应用更新后调用关系和工作量比例的变化,进而当需要扩容时可以在快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,模型更新器332用于执行上述本申请实施例中的步骤W1-W5。
具体的,上述W1-W5的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限定。
第三种应用模型的更新方式:包括步骤P1-P5:
P1:若更新后的应用中删除了第六服务,获取至少一个第七服务中每个第七服务更新后的配置文件。
其中,在应用删除第六服务之前,第七服务为第六服务的上一级服务,在应用删除第六服务之后,每个第七服务更新后的配置文件中包括每个第七服务和至少一个第八服务的第五调用关系,第八服务为第七服务的下一级服务。
P2:根据应用模型和第五调用关系,更新所有服务之间的调用关系。
P3:根据更新后的应用的所有服务中每个服务的名称获取更新后的应用的所有服务中每个服务的工作量历史记录。
P4:根据更新后的应用的所有服务中每个服务的工作量历史记录和更新后的所有服务之间的调用关系确定与更新后的所有服务之间的调用关系中每个调用关系对应的工作量比例。
P5:根据更新后的所有服务之间的调用关系和与更新后的所有服务之间的调用关系中每个调用关系对应的工作量比例,更新应用的应用模型。
示例性的,假设应用1删除了服务C,服务A中的配置文件中更新了服务A与服务E的调用关系8。
按照上述方式,模型更新器332根据图6A所示的应用模型的调用关系和调用关系8更新为如图9A所示的应用1的调用关系。
假设表9为应用1在T5时刻工作量历史记录5,其中,在T5时刻各个服务的各个实例上历史工作量具体如表9所示:
表9
服务A | 服务B | 服务D | 服务E | |
实例 | A1=100QPS | B1=200QPS | D1=300QPS | E1=300QPS |
实例 | A2=100QPS | B2=200QPS | D2=300QPS | E2=300QPS |
实例 | B3=200QPS | D3=300QPS | ||
实例 | D4=300QPS |
根据表9可以得出,应用1在T5时刻的各个服务上的总工作量分别为:服务A-200QPS、服务B-600QPS、服务D-1200QPS和服务E-600QPS。
将T5时刻的各个服务上的总工作量添加到历史表中,如表10所示:
表10
根据表10得出,应用1在T5时刻各个调用关系对应的工作量比例分别为:服务B/服务A=(200+200+200)/(100+100)=3、服务D/服务B=(300+300+300+300)/(200+200+200)=2、服务E/服务A=(300+300)/(100+100)=3。因此每个调用关系对应的工作量比例分别为:BA=3,DB=2,EA=3。将每个调用关系对应的工作量比例作为如图9A中存在调用关系的边的权重,即得到如图9B所示的应用模型。
需要说明的是,当应用删除一个服务时,模型生成器根据将应用模型中删除该服务的名称及对应的调用关系。
需要说明的是,本申请实施例为了简化说明,在应用删除了服务后仅是示例性的只采用了一个时刻的工作量历史记录,实际应用中,当应用更新后为了更准确地更新应用模型可以根据需要获取多个工作量历史记录,采用其他算法获得各个调用关系对应的工作量比例,本申请实施例对此不作具体限定。
本申请实施例提供的模型更新方法,通过在应用删除服务时更新该应用的所有调用关系和工作量比例,可以使应用模型更加准确的反映出应用更新后调用关系和工作量比例的变化,进而当需要扩容时可以在快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,扩容装置300中的模型更新器332用于支持扩容装置300执行上述本申请实施例中的步骤P1-P5。
具体的,上述P1-P5的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限定。
需要说明的是,本申请实施例中的三种更新应用模型的方式相互独立,可以在删除一个服务后再增加另一服务进行更新,也可在增加一个服务后删除一个另一个服务进的更新,也可在仅更新了工作量比例的前提下删除或增加服务的更新,本申请实施例对此不作具体限定。通过本申请实施例提供的方法,根据更新后的工作量历史记录和更新后的所有服务的调用关系更新该应用的应用模型,从而获得更准确的应用模型,进一步使该应用可以快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
下面结合图3所示的扩容装置对本申请实施例提供的扩容方法进行详细介绍。如图10所示,为本申请实施例提供的一种扩容方法的流程图,包括步骤S1001-S1007:
S1001、扩容装置获取应用的第一服务的实测工作量和应用的应用模型。
其中,应用模型包括应用的所有服务之间的调用关系以及与调用关系中每个调用关系对应的工作量比例,第一服务为所有服务中的任意一个服务。
需要说明的是,本申请实施例中提供的实测工作量包括该服务当前正在处理的工作量和在该服务的队列中等待处理的工作量。
S1002、扩容装置根据应用模型中第一服务与第一服务的每个上一级服务的第一调用关系,确定第一服务的每个上一级服务。
S1003、扩容装置根据应用模型中第一服务与第一服务的每个下级服务的第二调用关系,确定第一服务的每个下级服务。
S1004、扩容装置获取第一服务的每个上一级服务的实测工作量。
S1005、扩容装置根据第一服务的实测工作量、第一服务的每个上一级服务的实测工作量、以及与第一调用关系对应的第一工作量比例,确定第一服务的预测工作量。
S1006、扩容装置根据第一服务的预测工作量以及与第二调用关系对应的第二工作量比例,确定每个下级服务的预测工作量。
S1007、扩容装置根据所有目标服务中每个目标服务的预测工作量,对每个目标服务扩容。
其中,所有目标服务包括第一服务和第一服务的每个下级服务。
本申请实施例提供的扩容方法通过应用模型进行扩容,由于该应用模型可以表征该应用各个服务之间的调用关系以及与该调用关系对应的工作量比例,因此扩容装置可以根据该应用的应用模型预测该应用的任意一个服务的预测工作量,得到所有目标服务的预测工作量,进而可以根据所有目标服务的预测工作量,对所有目标服务同时扩容,相对于现有技术中只能对服务逐级扩容的方法,提高了扩容的速率,进而可在短时间内迅速提高该应用的整体性能,进一步保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,扩容装置300中的工作量估算器320用于支持扩容装置300执行本申请实施例中的步骤S1001-S1006;扩容装置300中的伸缩控制器310用于支持扩容装置300执行本申请实施例中的步骤S1007。
具体的,上述S1001-S1007的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限制。
一种可能的实现方式中,步骤S1005包括:扩容装置根据公式(1)确定每个目标服务的预测工作量。
f(vi)=max(d(vi),∑k∈Kf(k)*eki) 公式(1)
其中,V表示应用中所有服务的集合,K表示应用中服务i的上一级服务k的集合,K∈V,vi表示服务i,d(vi)表示服务i的实测工作量,f(k)表示服务i的上一级服务k的实测工作量,eki表示服务k和服务i的工作量比例,服务i为所有服务中的任意一个服务。
本申请实施例提供了一种确定第一服务的预测工作量的具体实现。其中∑k∈Kf(k)*eki表示根据f(k)和eki计算得到的服务i的工作量,max(d(vi),∑k∈Kf(k)*eki)表示将∑k∈Kf(k)*eki和d(vi)中的较大值确定为服务i的预测工作量,由于考虑了基于第一服务的上一级服务的实测工作量确定的第一服务的工作量和第一服务的实测工作量两方面的因素,因此可以获得更准确的第一服务的预测工作量,进而可以获得更准确的扩容实例数,进一步的可以保障了应用的可靠性、吞吐量和响应时延等SLA指标。
图11为本申请实施例提供的一种预测工作量的流程示意图,如图11所示,工作量估算器320接收应用模型和各个服务的监控器发送的工作量信息(A,100QPS)、(C,300QPS),则工作量估算器320可以根据应用模型计算服务A、服务B、服务C、服务D、服务E的工作量预测值分别为100QPS、300QPS、300QPS、600QPS、300QPS,并将工作量预测值发送给每个服务的弹性伸缩控制器310,弹性伸缩控制器310根据工作量预测出调节服务的实例数对同一个应用的多个服务同时进行扩容。
一种可能的实现方式中,如图12所示,步骤S1007包括步骤S1007A-S1007B:
S1007A、扩容装置根据每个目标服务的预测工作量、以及预先存储的每个目标服务的工作量和实例数的对应关系,确定为每个目标服务扩容的第一实例数。
S1007B、扩容装置根据第一实例数对每个目标服务扩容。
根据本申请实施例提供的扩容方法,通过预测工作量和预先存储的工作量和实例数的对应关系对比,进而可以更准确的确定扩容的实例数,进一步使该应用可以快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,扩容装置300中的伸缩控制器310用于支持扩容装置300执行本申请实施例中的步骤S1007A-S1007B。
具体的,上述S1007A-S1007B的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限定。
一种可能的实现方式中,如图13所示,在步骤S1007B之前还包括步骤S1007C-S1007E、步骤S1007B包括步骤S1007B1:
S1007C、扩容装置获取每个目标服务的资源利用率。
S1007D、若每个目标服务的资源利用率超过预设阈值,扩容装置根据预先存储的每个目标服务的资源利用率和实例数的对应关系确定为每个目标服务扩容的第二实例数。
S1007E、扩容装置根据第一实例数和第二实例数确定为每个目标服务扩容的目标实例数。
S1007B1、扩容装置根据每个目标实例数对每个目标服务扩容。
根据本申请实施例提供的扩容方法,当对应用扩容时可以根据每个服务的资源利用率确定根据资源利用率获得的实例数,通过预测工作量确定的实例数和根据资源利用率获得的实例数可以获得更准确的目标扩容实例数,进一步使该应用可以根据更准确的扩容实例快速扩容,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,扩容装置300中的伸缩控制器310用于支持扩容装置300执行本申请实施例中的步骤S1007C-S1007E和S1007B1。
具体的,上述S1007C-S1007E和S1007B1的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限定。
如图14所示,为本申请实施例提供的一种伸缩控制器的内部结构图,包括工作量资源对应表、资源估算器、策略评估器、伸缩策略文件和伸缩指令执行器。该伸缩控制器可以根据本申请实施例提供分扩容方法对该伸缩控制器所对应的服务进行扩容。其中,工作量资源对应表和伸缩策略可以为一个文件或者小型的数据库。工作量和实例数对应关系存储在工作资源对照表中,资源利用率和实例数对应表存储在伸缩策略文件中,伸缩控制器的输入包括预测工作量和该服务的资源利用率。当输入为预测工作量时,伸缩控制器的资源估算器通过查询工作量资源对照表估算出所需要的第一实例数,当输入为该服务的资源利用率时,策略评估器通过评估伸缩策略中资源利用率和实例数对应关系确定第二实例数,并将第二实例数发送给伸缩指令执行器,伸缩指令执行器通过判断资源估算器和策略评估器的两个扩容的实例数哪个数大将哪个实例数作为目标实例数,执行根据目标其中较的实例数进行扩容。
需要说明的是,本申请实施例中的扩容可以为增加实例数,也可以为减少实例数,本申请实施例对此不作具体限定。
本申请实施例中,通过两种方式确定扩容的目标实例数,可以满足多种条件触发的应用扩容,通过两种不同方式确定的目标实例数的比较,在可以快速扩容的前提下还可以获得更准确的扩容实例数,进一步使该应用可以快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,扩容装置300中的伸缩控制器310用于支持扩容装置300执行本申请实施例中的步骤S1007C-S1007E、S1007D。
具体的,上述S1007C-S1007E、S1007D的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限定。
一种可能的实现方式中,如图15所示,步骤S1007E包括S1007E1-S1007E2:
S1007E1、若第一实例数大于第二实例数,扩容装置将确定第一实例数为对每个目标服务扩容的目标实例数。
S1007E2、若第一实例数不大于第二实例数,扩容装置将确定第二实例数为对每个目标服务扩容的目标实例数。
根据本申请实施例提供的扩容方法,通过将服务的预测工作量获得的扩容的实例数和根据资源利用率获得的扩容的实例数的比较获得扩容目标实例数,可以更准确的确定该服务扩容的实例数,进而结合应用模型可以更准确的确定该服务的子服务需要扩容的实例数,进一步使该应用可以快速扩容的同时获得更准确的扩容实例,从而保障了应用的可靠性、吞吐量和响应时延等SLA指标。
具体的,结合图3,扩容装置300中的伸缩控制器310用于支持扩容装置300执行本申请实施例中的步骤S1007E1-S1007E2。
具体的,上述S1007E1-S1007E2的动作可以由图4所示的计算机设备400中的处理器401调用存储器403中存储的应用程序代码来执行,本申请实施例对此不作任何限制。
根据本申请实施例提供的扩容方法,通过服务的服务接口描述文件和配置文件确定该应用的所有服务的调用关系,通过计算服务和服务的子服务的工作量比例确定该应用的应用模型,该应用模型可以表征该应用各个服务之间的关联关系,因此可以根据该应用的应用模型预测该应用的任意一个服务的预测工作量并计算目标服务扩容的目标实例数,通过该目标实例数可以对目标服务同时进行整体扩容,从而提高了扩容的速率,进而可在短时间内迅速提高该应用的整体性能,进一步保障了应用的可靠性、吞吐量和响应时延等对SLA。
下面,以第一服务为图6中应用1的服务B为例,对本申请实施例的扩容方法进行示例性说明:
第一步、扩容装置在T6时刻获取服务B的实测工作量为1000QPS和如图6B所示的应用1的应用模型。
第二步、扩容装置根据应用模型中服务B与服务B的每个上一级服务的调用关系,确定服务B的上一级服务为服务A。
第三步、扩容装置根据应用模型中服务B与服务B的每个下级服务的调用关系,确定服务B的下级服务为服务D。
第四步、扩容装置在T6时刻获取服务A的实测工作量为600QPS。
第五步、按照图11所示的预测工作量的方式,扩容装置根据公式(1)、服务A的实测工作量600QPS、服务B的实测工作量1000QPS和应用1的应用模型中服务B和服务A的工作量比例为3,计算服务B的预测工作量f(B)=max(d(B),∑f(A)*eBA)=max(1000,600*3)=1800QPS。
第六步、扩容装置根据应用1的应用模型中服务D和服务B的工作量比例为2以及服务B预测工作量1800QPS计算服务D的预测工作量3600QPS。
第七步、扩容装置分别根据服务B和服务D的工作量和实例数对应关系,确定服务B和服务D分别需要扩容的实例数。
假设表11为服务B的工作量和实例数对应关系,由上述服务B的每个实例的处理能力可知服务B每个实例可以处理300QPS。扩容装置根据表11确定服务B需要实例数为6,而由表1和表3可知服务B现有的实例为3个,因此,服务B需要扩容3个实例。
假设表12为服务D工作量和实例数对应关系,同样的,由上述服务D的每个实例的处理能力可知服务D每个实例可以处理500QPS。由于3500QPS<3600QPS<4000QPS,因此扩容装置根据表12确定服务D需要实例数为8,而由表1和表3可知服务D现有的实例为4个,因此,服务D需要扩容4个实例。
表11
工作量 | 实例数 |
300QPS | 1 |
600QPS | 2 |
900QPS | 3 |
1200QPS | 4 |
1500QPS | 5 |
表12
工作量 | 实例数 |
500 | 1 |
1000 | 2 |
1500 | 3 |
2000 | 4 |
3500 | 7 |
4000 | 8 |
需要说明的是,为了便于说明本申请实施例的扩容方法,本申请实施例中给出的工作量和实例数对应关系为线性增长的对应关系,在实际的应用中,工作量和实例数的对应关系也可为非线性增长等其他的对应关系,根据应用的实际情况可以按需确定工作量和实例数对应关系,本申请实施例对此不作具体限定。
第八步、扩容装置获取服务B的资源利用率和服务D的资源利用率。假设按照如下的资源利用率和实例数对应关系,确定根据资源利用率确定服务B和服务D需要扩容的实例数。
假设服务B的资源利用率的预设阈值为:理想资源利用率不超过70%,假设在T6时刻实际服务B的3个实例的实际资源利用率总和为210%,理想的实例数为3。而服务B现有3个实例,所以不需要根据服务B资源利用率使用情况为服务B扩容。
假设服务D的资源利用率的预设阈值为:理想资源利用率不超过70%,假设在T6时刻实际服务D的4个实例的实际资源利用率总和为420%,理想的实例数为6。而服务D现有4个实例,根据资源利用率的使用情况,需要为服务D增加2个实例。
需要说明的是,为了便于说明本申请实施例的扩容方法,本申请实施例中的资源利用率和实例数对应关系只是按照示例中给出一种策略确定的资源利用率和实例数的对应关系,在实际的应用中,资源利用率和实例数的对应关系也可为根据其他规则确定的对应关系,根据应用的实际情况可以按需确定资源利用率和实例数对应关系,本申请实施例对此不作具体限定。
第九步、扩容装置根据第七步和第八步分别确定的服务B和服务D需要扩容的实例数,确定服务B和服务D扩容的目标实例数。
尽管不需要根据服务B资源利用率使用情况为服务B扩容,但是,根据服务B的预测工作量,需要为服务B扩容3个实例。因此,服务B扩容的目标实例数为增加3个实例。
根据资源利用率的使用情况,需要为服务D增加2个实例;根据服务D的预测工作量,需要为服务D增加4个实例。由于4大于2,因此,服务D扩容的目标实例数为增加4个实例。
第十步、扩容装置根据上述计算得到的服务B的扩容数为增加3个实例和服务D的扩容数为增加4个实例同时对应用1的服务B和服务D进行资源扩容。
需要说明的是,本申请实施例提供的扩容方法既可以应用于根据微服务开发理念开发的应用,也可用于基于非服务器计算(Serverless Computing)架构开发的应用,工作人员将编写好的函数提交给扩容装置,扩容装置根据工作量的需求动态的确定函数的实例数,可以对多个函数同时进行扩容,从而不再关注服务器、网络等基础设备对应用的影响。其中,非服务器计算的应用开发结果可应用于物联网(Internet of Things,IoT)场景中,本申请实施例对此不作具体限定。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式来实现。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读介质中,或者从一个计算机可读介质向另一个计算机可读介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (20)
1.一种扩容方法,其特征在于,所述方法包括:
获取应用的第一服务的实测工作量和所述应用的应用模型,其中,所述应用模型包括所述应用的所有服务之间的调用关系以及与所述调用关系中每个调用关系对应的工作量比例,所述第一服务为所述所有服务中的任意一个服务;
根据所述应用模型中所述第一服务与所述第一服务的每个上一级服务的第一调用关系,确定所述第一服务的每个上一级服务;以及,根据所述应用模型中所述第一服务与所述第一服务的每个下级服务的第二调用关系,确定所述第一服务的每个下级服务;
获取所述第一服务的每个上一级服务的实测工作量;
根据所述第一服务的实测工作量、所述第一服务的每个上一级服务的实测工作量、以及与所述第一调用关系对应的第一工作量比例,确定所述第一服务的预测工作量;
根据所述第一服务的预测工作量以及与所述第二调用关系对应的第二工作量比例,确定所述每个下级服务的预测工作量;
根据所有目标服务中每个目标服务的预测工作量,对所述每个目标服务扩容,其中,所述所有目标服务包括所述第一服务和所述第一服务的每个下级服务。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述应用模型之前,所述方法还包括:
获取所述所有服务中每个服务的服务接口描述文件和所述每个服务的配置文件,其中,所述每个服务的服务接口描述文件包括所述每个服务的名称,所述每个服务的配置文件包括所述每个服务和所述每个服务的下一级服务之间的调用关系;
根据所述每个服务和所述每个服务的下一级服务之间的调用关系,确定所述所有服务之间的调用关系;
根据所述每个服务的名称获取所述每个服务的工作量历史记录,根据所述工作量历史记录和所述所有服务之间的调用关系,确定与所述每个调用关系对应的工作量比例;
根据所述所有服务之间的调用关系和与所述每个调用关系对应的工作量比例,生成所述应用模型。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据每个服务的名称获取所述每个服务的工作量历史记录,根据所述工作量历史记录和所述每个调用关系,更新所述每个调用关系对应的工作量比例;
根据所述每个调用关系和所述每个调用关系对应的更新后的工作量比例,更新所述应用模型。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若更新后的所述应用中增加了第三服务,获取所述第三服务的服务接口描述文件和配置文件、以及至少一个第四服务中每个第四服务更新后的配置文件,其中,所述第三服务的服务接口描述文件包括所述第三服务的名称,所述第三服务的配置文件包括所述第三服务和至少一个第五服务中每个第五服务的第三调用关系,所述每个第四服务更新后的配置文件包括所述每个第四服务和所述第三服务的第四调用关系,所述第四服务为所述第三服务的上一级服务,所述第五服务为所述第三服务的下一级服务;
根据所述应用模型、所述第三调用关系和所述第四调用关系,更新所述所有服务之间的调用关系;
根据更新后的所述应用的所有服务中每个服务的名称获取所述更新后的所述应用的所有服务中每个服务的工作量历史记录,根据所述更新后的所述应用的所有服务中每个服务的工作量历史记录和更新后的所述所有服务之间的调用关系确定与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例;
根据所述更新后的所述所有服务之间的调用关系和与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例,更新所述应用的应用模型。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
若更新后的所述应用中删除了第六服务,获取至少一个第七服务中每个第七服务更新后的配置文件,其中,在所述应用删除第六服务之前,所述第七服务为所述第六服务的上一级服务,在所述应用删除第六服务之后,所述每个第七服务更新后的配置文件中包括所述每个第七服务和至少一个第八服务的第五调用关系,所述第八服务为所述第七服务的下一级服务;
根据所述应用模型和所述第五调用关系,更新所述所有服务之间的调用关系;
根据更新后的所述应用的所有服务中每个服务的名称获取所述更新后的所述应用的所有服务中每个服务的工作量历史记录,根据所述更新后的所述应用的所有服务中每个服务的工作量历史记录和更新后的所述所有服务之间的调用关系确定与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例;
根据所述更新后的所述所有服务之间的调用关系和与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例,更新所述应用的应用模型。
6.根据权利要求1或2所述的方法,其特征在于,所述根据所述第一服务的实测工作量、所述第一服务的每个上一级服务的实测工作量、以及与所述第一调用关系对应的第一工作量比例,确定所述第一服务的预测工作量,包括:
根据预设公式确定所述第一服务的预测工作量;
所述预设公式包括:f(vi)=max(d(vi),∑k∈Kf(k)*eki);
其中,f(vi)表示所述第一服务的预测工作量,V表示所述应用中所有服务的集合,K表示所述应用中所述第一服务的上一级服务k的集合,K∈V,vi表示所述第一服务,d(vi)表示所述第一服务的实测工作量,f(k)表示所述第一服务的上一级服务k的实测工作量,eki表示所述服务k和所述第一服务的工作量比例,所述第一服务为所述所有服务中的任意一个服务。
7.根据权利要求1或2所述的方法,其特征在于,所述根据所有目标服务中每个目标服务的预测工作量,对所述每个目标服务扩容,包括:
根据所述每个目标服务的预测工作量、以及预先存储的所述每个目标服务的工作量和实例数的对应关系,确定为所述每个目标服务扩容的第一实例数,并根据所述第一实例数对所述每个目标服务扩容。
8.根据权利要求7所述的方法,其特征在于,在根据所述第一实例数对所述每个目标服务扩容之前,所述方法还包括:
获取所述每个目标服务的资源利用率;
若所述每个目标服务的资源利用率超过预设阈值,根据预先存储的所述每个目标服务的资源利用率和实例数的对应关系确定为所述每个目标服务扩容的第二实例数;
根据所述第一实例数和所述第二实例数确定为对所述每个目标服务扩容的目标实例数,并根据所述目标实例数对所述每个目标服务扩容。
9.根据权利要求8所述的方法,其特征在于,所述根据所述第一实例数和所述第二实例数确定为对所述每个目标服务扩容的目标实例数包括:
若所述第一实例数大于所述第二实例数,将确定所述第一实例数为对所述每个目标服务扩容的目标实例数;
若所述第一实例数不大于所述第二实例数,将确定所述第二实例数为对所述每个目标服务扩容的目标实例数。
10.一种扩容装置,其特征在于,所述扩容装置包括:工作量估算器和伸缩控制器;
所述工作量估算器用于:
获取应用的第一服务的实测工作量和所述应用的应用模型,其中,所述应用模型包括所述应用的所有服务之间的调用关系以及与所述调用关系中每个调用关系对应的工作量比例,所述第一服务为所述所有服务中的任意一个服务;
根据所述应用模型中所述第一服务与所述第一服务的每个上一级服务的第一调用关系,确定所述第一服务的每个上一级服务;以及,根据所述应用模型中所述第一服务与所述第一服务的每个下级服务的第二调用关系,确定所述第一服务的每个下级服务;
获取所述第一服务的每个上一级服务的实测工作量;
根据所述第一服务的实测工作量、所述第一服务的每个上一级服务的实测工作量、以及与所述第一调用关系对应的第一工作量比例,确定所述第一服务的预测工作量;
根据所述第一服务的预测工作量以及与所述第二调用关系对应的第二工作量比例,确定所述每个下级服务的预测工作量;
所述伸缩控制器用于:
根据所有目标服务中每个目标服务的预测工作量,对所述每个目标服务扩容,其中,所述所有目标服务包括所述第一服务和所述第一服务的每个下级服务。
11.根据权利要求10所述的扩容装置,其特征在于,所述扩容装置还包括:模型生成器;
所述模型生成器用于:
获取所述所有服务中每个服务的服务接口描述文件和所述每个服务的配置文件,其中,所述每个服务的服务接口描述文件包括所述每个服务的名称,所述每个服务的配置文件包括所述每个服务和所述每个服务的下一级服务之间的调用关系;
根据所述每个服务和所述每个服务的下一级服务之间的调用关系,确定所述所有服务之间的调用关系;
根据所述每个服务的名称获取所述每个服务的工作量历史记录,根据所述工作量历史记录和所述所有服务之间的调用关系,确定与所述每个调用关系对应的工作量比例;
根据所述所有服务之间的调用关系和与所述每个调用关系对应的工作量比例,生成所述应用模型。
12.根据权利要求10或11所述的扩容装置,所述扩容装置还包括:模型更新器;
所述模型更新器用于:
根据每个服务的名称获取所述每个服务的工作量历史记录,根据所述工作量历史记录和所述每个调用关系,更新所述每个调用关系对应的工作量比例;
根据所述每个调用关系和所述每个调用关系对应的更新后的工作量比例,更新所述应用模型。
13.根据权利要求10或11所述的扩容装置,所述扩容装置还包括:模型更新器;
所述模型更新器用于:
若更新后的所述应用中增加了第三服务,获取所述第三服务的服务接口描述文件和配置文件、以及至少一个第四服务中每个第四服务更新后的配置文件,其中,所述第三服务的服务接口描述文件包括所述第三服务的名称,所述第三服务的配置文件包括所述第三服务和至少一个第五服务中每个第五服务的第三调用关系,所述每个第四服务更新后的配置文件包括所述每个第四服务和所述第三服务的第四调用关系,所述第四服务为所述第三服务的上一级服务,所述第五服务为所述第三服务的下一级服务;
根据所述应用模型、所述第三调用关系和所述第四调用关系,更新所述所有服务之间的调用关系;
根据更新后的所述应用的所有服务中每个服务的名称获取所述更新后的所述应用的所有服务中每个服务的工作量历史记录,根据所述更新后的所述应用的所有服务中每个服务的工作量历史记录和更新后的所述所有服务之间的调用关系确定与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例;
根据所述更新后的所述所有服务之间的调用关系和与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例,更新所述应用的应用模型。
14.根据权利要求10或11所述的扩容装置,所述扩容装置还包括:模型更新器;
所述模型更新器用于:
若更新后的所述应用中删除了第六服务,获取至少一个第七服务中每个第七服务更新后的配置文件,其中,在所述应用删除第六服务之前,所述第七服务为所述第六服务的上一级服务,在所述应用删除第六服务之后,所述每个第七服务更新后的配置文件中包括所述每个第七服务和至少一个第八服务的第五调用关系,所述第八服务为所述第七服务的下一级服务;
根据所述应用模型和所述第五调用关系,更新所述所有服务之间的调用关系;
根据更新后的所述应用的所有服务中每个服务的名称获取所述更新后的所述应用的所有服务中每个服务的工作量历史记录,根据所述更新后的所述应用的所有服务中每个服务的工作量历史记录和更新后的所述所有服务之间的调用关系确定与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例;
根据所述更新后的所述所有服务之间的调用关系和与所述更新后的所述所有服务之间的调用关系中每个调用关系对应的工作量比例,更新所述应用的应用模型。
15.根据权利要求10或11所述的扩容装置,其特征在于,所述工作量估算器具体用于:
根据预设公式确定所述第一服务的预测工作量;
所述预设公式包括:f(vi)=max(d(vi),∑k∈Kf(k)*eki);
其中,f(vi)表示所述第一服务的预测工作量,V表示所述应用中所有服务的集合,K表示所述应用中所述第一服务的上一级服务k的集合,K∈V,vi表示所述第一服务,d(vi)表示所述第一服务的实测工作量,f(k)表示所述第一服务的上一级服务k的实测工作量,eki表示所述服务k和所述第一服务的工作量比例,所述第一服务为所述所有目标服务中的任意一个服务。
16.根据权利要求10或11所述的扩容装置,其特征在于,所述伸缩控制器具体用于:
根据所述每个目标服务的预测工作量、以及预先存储的所述每个目标服务的工作量和实例数的对应关系,确定为所述每个目标服务扩容的第一实例数,并根据所述第一实例数对所述每个目标服务扩容。
17.根据权利要求16所述的扩容装置,其特征在于,所述伸缩控制器还用于:
在根据所述第一实例数对所述每个目标服务扩容之前,获取所述每个目标服务的资源利用率;
若所述每个目标服务的资源利用率超过预设阈值,根据预先存储的所述每个目标服务的资源利用率和实例数的对应关系确定为所述每个目标服务扩容的第二实例数;
根据所述第一实例数和所述第二实例数确定为对所述每个目标服务扩容的目标实例数,并根据所述目标实例数对所述每个目标服务扩容。
18.根据权利要求17所述的扩容装置,其特征在于,所述伸缩控制器具体用于:
若所述第一实例数大于所述第二实例数,将确定所述第一实例数为对所述每个目标服务扩容的目标实例数;
若所述第一实例数不大于所述第二实例数,将确定所述第二实例数为对所述每个目标服务扩容的目标实例数。
19.一种扩容装置,其特征在于,包括:处理器、存储器、总线和通信接口;
所述存储器用于存储计算机执行指令,所述处理器与所述存储器通过所述总线连接,当所述扩容装置运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述扩容装置执行如权利要求1-9中任意一项所述的扩容方法。
20.一种计算机存储介质,其特征在于,用于储存为权利要求1-9中任意一项所述的扩容方法所用的计算机软件指令,其包含用于执行上述为权利要求1-9中任意一项所述的扩容方法所设计的程序。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710061782.3A CN108366082B (zh) | 2017-01-26 | 2017-01-26 | 扩容方法及扩容装置 |
PCT/CN2018/073672 WO2018137585A1 (zh) | 2017-01-26 | 2018-01-22 | 扩容方法及扩容装置 |
US16/523,028 US11216310B2 (en) | 2017-01-26 | 2019-07-26 | Capacity expansion method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710061782.3A CN108366082B (zh) | 2017-01-26 | 2017-01-26 | 扩容方法及扩容装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108366082A CN108366082A (zh) | 2018-08-03 |
CN108366082B true CN108366082B (zh) | 2020-03-10 |
Family
ID=62979084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710061782.3A Active CN108366082B (zh) | 2017-01-26 | 2017-01-26 | 扩容方法及扩容装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11216310B2 (zh) |
CN (1) | CN108366082B (zh) |
WO (1) | WO2018137585A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109615081A (zh) * | 2018-09-26 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种模型预测系统及方法 |
US11055256B2 (en) | 2019-04-02 | 2021-07-06 | Intel Corporation | Edge component computing system having integrated FaaS call handling capability |
US20220255814A1 (en) * | 2019-06-03 | 2022-08-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Network Node and Methods in a Communications Network |
CN112134715B (zh) * | 2019-06-24 | 2022-06-10 | 腾讯科技(深圳)有限公司 | 一种扩容结果检测方法、装置、服务器及存储介质 |
CN110837386A (zh) * | 2019-11-08 | 2020-02-25 | 神州数码融信软件有限公司 | 一种微服务架构弹性升级方法 |
CN113747506B (zh) * | 2020-05-28 | 2024-10-18 | 华为技术有限公司 | 一种资源调度方法、装置和网络系统 |
US11044139B1 (en) * | 2020-09-29 | 2021-06-22 | Atlassian Pty Ltd | Apparatuses, methods, and computer program products for dynamic generation and traversal of object dependency data structures |
CN113225228B (zh) * | 2021-04-30 | 2022-10-21 | 北京百度网讯科技有限公司 | 数据处理方法及装置 |
US20230232195A1 (en) * | 2022-01-19 | 2023-07-20 | Vmware, Inc. | Collective scaling of applications |
WO2023140895A1 (en) * | 2022-01-19 | 2023-07-27 | Vmware, Inc. | Predictive scaling of application based on traffic at another application |
US11614982B1 (en) * | 2022-08-29 | 2023-03-28 | Sedai Inc. | Autonomous concurrency for serverless functions |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227605A (zh) * | 2016-07-26 | 2016-12-14 | 北京北森云计算股份有限公司 | 一种多语言云编译的动态微服务扩容方法及装置 |
CN106302626A (zh) * | 2015-06-29 | 2017-01-04 | 中兴通讯股份有限公司 | 一种弹性扩容方法、装置及系统 |
CN106301864A (zh) * | 2015-06-11 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种服务器系统扩容方法、装置及扩容处理设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110307412A1 (en) * | 2010-06-14 | 2011-12-15 | Jerome Rolia | Reusable capacity planning scenario templates |
US8856797B1 (en) | 2011-10-05 | 2014-10-07 | Amazon Technologies, Inc. | Reactive auto-scaling of capacity |
US8732291B2 (en) * | 2012-01-13 | 2014-05-20 | Accenture Global Services Limited | Performance interference model for managing consolidated workloads in QOS-aware clouds |
US9300552B2 (en) * | 2013-12-16 | 2016-03-29 | International Business Machines Corporation | Scaling a cloud infrastructure |
US9848041B2 (en) * | 2015-05-01 | 2017-12-19 | Amazon Technologies, Inc. | Automatic scaling of resource instance groups within compute clusters |
-
2017
- 2017-01-26 CN CN201710061782.3A patent/CN108366082B/zh active Active
-
2018
- 2018-01-22 WO PCT/CN2018/073672 patent/WO2018137585A1/zh active Application Filing
-
2019
- 2019-07-26 US US16/523,028 patent/US11216310B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106301864A (zh) * | 2015-06-11 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种服务器系统扩容方法、装置及扩容处理设备 |
CN106302626A (zh) * | 2015-06-29 | 2017-01-04 | 中兴通讯股份有限公司 | 一种弹性扩容方法、装置及系统 |
CN106227605A (zh) * | 2016-07-26 | 2016-12-14 | 北京北森云计算股份有限公司 | 一种多语言云编译的动态微服务扩容方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20190347134A1 (en) | 2019-11-14 |
CN108366082A (zh) | 2018-08-03 |
WO2018137585A1 (zh) | 2018-08-02 |
US11216310B2 (en) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108366082B (zh) | 扩容方法及扩容装置 | |
US10491538B2 (en) | Adaptive algorithm for cloud admission policies | |
US7930344B2 (en) | Incremental run-time session balancing in a multi-node system | |
US8595366B2 (en) | Method and system for dynamically creating and servicing master-slave pairs within and across switch fabrics of a portable computing device | |
WO2018120845A1 (zh) | 资源分配的方法和资源管理器 | |
US9998393B2 (en) | Method and system for managing resource capability in a service-centric system | |
US10705873B2 (en) | Predictive virtual server scheduling and optimization of dynamic consumable resources to achieve priority-based workload performance objectives | |
US10574536B2 (en) | Capacity engineering in distributed computing systems | |
US11347724B2 (en) | System and method of allocation and centralized transaction handling across multiple micro service clients | |
Kim et al. | Prediction based sub-task offloading in mobile edge computing | |
WO2024016596A1 (zh) | 容器集群调度的方法、装置、设备及存储介质 | |
CN111324471B (zh) | 服务调整方法、装置、设备及存储介质 | |
CN113760516A (zh) | 一种多云环境下的弹性伸缩方法、装置、设备及介质 | |
WO2020000724A1 (zh) | 云平台主机间通信负载的处理方法、电子装置及介质 | |
CN114020469A (zh) | 基于边缘节点的多任务学习方法、装置、介质与设备 | |
US20180246806A1 (en) | Memory management in multi-processor environments | |
CN113254191A (zh) | 用于运行应用的方法、电子设备和计算机程序产品 | |
CN116541167A (zh) | 系统流量控制方法、装置、电子设备及计算机可读介质 | |
US20220414577A1 (en) | System and method for performance-centric workload placement in a hybrid cloud environment | |
CN114265692A (zh) | 服务调度方法、装置、设备以及存储介质 | |
US10193823B2 (en) | Rich resource management incorporating usage statistics for fairness | |
CN114090201A (zh) | 资源调度方法、装置、设备及存储介质 | |
CN113138772A (zh) | 数据处理平台的构建方法、装置、电子设备和存储介质 | |
US20230342200A1 (en) | System and method for resource management in dynamic systems | |
Sutagundar et al. | Development of fog based dynamic resource allocation and pricing model in IoT |
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 |