CN112148484A - 一种基于耦合度的微服务在线分配方法与系统 - Google Patents
一种基于耦合度的微服务在线分配方法与系统 Download PDFInfo
- Publication number
- CN112148484A CN112148484A CN202010960107.6A CN202010960107A CN112148484A CN 112148484 A CN112148484 A CN 112148484A CN 202010960107 A CN202010960107 A CN 202010960107A CN 112148484 A CN112148484 A CN 112148484A
- Authority
- CN
- China
- Prior art keywords
- micro
- services
- service
- resource
- coupling degree
- 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
- 230000008878 coupling Effects 0.000 title claims abstract description 95
- 238000010168 coupling process Methods 0.000 title claims abstract description 95
- 238000005859 coupling reaction Methods 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012544 monitoring process Methods 0.000 claims abstract description 38
- 238000004891 communication Methods 0.000 claims abstract description 21
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000005457 optimization Methods 0.000 claims abstract description 5
- 238000004904 shortening Methods 0.000 claims abstract description 3
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000013480 data collection Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 10
- 238000000638 solvent extraction Methods 0.000 claims description 8
- 230000003595 spectral effect Effects 0.000 claims description 8
- 230000001364 causal effect Effects 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 239000012634 fragment Substances 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 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/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/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/5083—Techniques for rebalancing the load in a distributed system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公布了一种基于耦合度的微服务在线分配方法与系统,通过计算微服务之间的耦合度,对所有微服务进行分组,并将同一组内的微服务分配到同一个硬件节点上,降低网络通信开销,缩短请求响应时间,实现基于微服务架构的系统中微服务在线分配的优化;包括获取请求执行路径与资源监控数据、根据请求执行路径计算微服务之间的耦合度、基于耦合度将微服务划分为不同的微服务分组MicroServPod、基于微服务之间的资源竞争关系将微服务分组划分为微服务细分组SubMicroServPod、根据每个SubMicroServPod的资源消耗总量将SubMicroServPod在线分配到硬件节点上,实现基于微服务架构的系统中微服务在线分配的优化,缩短服务请求的响应时间,提高服务效率,提升系统运行性能。
Description
技术领域
本发明涉及云计算技术,尤其涉及一种基于耦合度的微服务在线分配方法与系统,实现基于微服务架构的系统中微服务在线分配的优化,缩短服务请求的响应时间,提高服务效率,提升系统运行性能。
背景技术
随着软件系统变得越来越庞大与复杂,微服务架构被广泛应用到软件系统中。在微服务架构中,软件系统由多个松耦合的可独立开发与部署的微服务组成,不同的微服务部署在不同的硬件节点上。用户发起服务请求,一个服务请求会经过多个不同的微服务的处理,不同的微服务完成不同的计算任务并通过轻量级的网络协议进行交互,进而共同协作响应系统中的服务请求。微服务架构降低了大型软件系统开发与维护的难度,使得持续开发和部署成为可能。但由于微服务之间存在复杂的依赖关系,使得微服务之间通过网络发生频繁且复杂的相互调用,增加了软件系统整体的网络通信成本,进而影响了软件系统的性能。随着微服务划分的粒度越来越细,微服务的数量越来越多,微服务之间的网络通信成本成为影响微服务架构软件系统性能的主要因素之一。
为了解决微服务之间因巨大的网络通信成本导致的系统性能下降的问题,现有的工作通常基于专家知识或根据人工配置规则等静态方式将相互依赖的微服务分配在相同或相近的节点上,通过降低相互依赖的微服务之间的网络通信延迟,缩短软件系统中服务的请求响应时间,进而提升软件系统的性能。但这种方式存在着明显的不足。首先,准确的专家知识在新系统未部署运行之前通常是难以获得的。另一方面,人工配置大量微服务的规则耗时耗力且容易出错;其次,静态配置微服务的规则无法满足微服务架构动态变化的需求。在大规模微服务架构中,随着业务的需求及负载的变化不断会有新的微服务加入,原有的微服务也会持续地进行变更与升级,静态配置微服务的规则无法对这种变化作出及时的响应。除此之外,相互依赖的微服务之间也会存在对硬件资源的竞争关系。而现有技术往往忽略了同一节点上相互依赖的微服务之间对硬件资源的竞争关系,进而使得同一节点上的微服务因资源竞争而导致服务效率不高,系统性能下降。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于耦合度的微服务在线分配方法与系统,基于微服务之间的依赖与资源竞争关系对所有的微服务进行分组,并将同一组内的微服务分配到同一个硬件节点上,进而降低频繁交互的微服务之间网络通信引起的开销,缩短系统中服务请求的响应时间,实现基于微服务架构的系统中微服务在线分配的优化,提高服务效率,提升系统运行性能。
本发明提供的技术方案是:
一种基于耦合度的微服务在线分配方法与系统,包括获取请求执行路径与资源监控数据,根据请求执行路径计算微服务之间的耦合度,基于耦合度将所有微服务划分到不同的MicroServPod(微服务分组)中,基于微服务之间的资源竞争关系将微服务分组划分为SubMicroServPod(微服务细分组),根据每个SubMicroServPod的资源消耗总量制定分配策略,据此将SubMicroServPod在线分配到某个节点上。具体包括如下步骤:
1)获取请求执行路径与资源监控数据;
从目标软件系统中获取请求执行路径与资源监控的过程具体是:
利用分布式追踪技术,捕获由多个微服务组成的软件系统端到端处理服务请求的过程(即生成请求执行路径);
利用资源监控工具,获取资源监控数据,包括每个微服务的资源使用数据(如单位时间(以秒为单位)的每个微服务的CPU使用量、内存使用量等)与每个节点上的剩余可用资源数据。
获取请求执行路径与资源监控数据既可以发生在线上的系统之中,也可以发生在测试/预上线环境中。通过在测试/预上线环境中获取请求执行路径与资源监控数据,可以支持线上环境下初始的微服务的部署;通过在线上环境中实时获取请求执行路径与资源监控数据,可以支持实时动态的微服务分配。
2)根据请求执行路径计算微服务之间的耦合度;
本发明提出使用微服务耦合度来量化微服务之间的依赖程度。基于在一定的时间窗口内的目标系统中生成的所有请求执行路径,统计微服务之间的网络交互的频率与平均网络消息的大小并据此计算任意两个微服务之间的耦合度,从而生成所有微服务之间的依赖关系图,图中的每个顶点代表一个微服务,每条边(无向边)代表相互连通的两个微服务之间的耦合度。
3)基于耦合度将所有微服务划分到不同的MicroServPod:
将具有较强的依赖关系的微服务分配到相同或相邻的节点上(具有较小的网络通信延迟),从而降低这些微服务之间因频繁的网络通信导致的系统性能下降。本发明中,MicroServPod用于描述一组存在较强相互依赖关系的微服务。将所有微服务根据微服务之间的依赖关系图划分为互不相交的k个MicroServPods,使得划分后同一MicroServPod中的不同微服务之间的耦合度尽可能地高,而不同MicroServPods中微服务之间的耦合度尽可能地低。本发明具体实施时,以经典的谱聚类(Spectral Clustering)算法对微服务之间的依赖关系图进行划分。
4)基于微服务之间的资源竞争关系将MicroServPod划分为SubMicroServPod:
根据耦合度将所有的微服务划分到不同的MicroServPod之后,不能直接将MicroServPod中的所有微服务分配到同一个节点上。首先,不同的微服务之间可能会由于其资源消耗模式导致对同类资源产生较强的竞争(如将同一个MicroServPod中的两个CPU密集型的微服务分配在同一个硬件节点上会导致两个微服务对CPU资源的激烈竞争),可能会影响微服务的响应速度;其次,根据耦合度将所有微服务划分为不同的MicroServPod没有考虑到每个节点上硬件资源的限制,一个节点上的可用资源量(如CPU)可能无法满足一个MicroServPod中所有微服务的资源需求总量。
基于微服务之间的资源竞争关系将MicroServPod进一步划分为不同的SubMicroServPod的方法具体是:根据在获取请求执行路径与资源监控数据过程中得到的每个微服务的资源使用数据,计算每个微服务的预期资源使用量(CPU,内存,带宽,磁盘IO等),并判断微服务间是否存在显著的资源竞争关系(例如就各类资源的预期使用量对微服务进行排序,可以判断微服务是否在某类资源上存在竞争关系),将具有显著竞争关系的微服务划分到不同的SubMicroServPod中,使得每个SubMicroServPod中不存在具有显著资源竞争关系的微服务,且每个SubMicroServPod的所有微服务的资源消耗总量不超过单个节点的资源总量。
5)根据每个SubMicroServPod的资源消耗总量对微服务进行分配:
SubMicroServPod是本发明方法进行微服务分配的最小单位,将同一个SubMicroServPod中的所有微服务分配到同一个节点上运行,将属于同一MicroServPod的不同SubMicroServPod的微服务分配到不同的节点上。根据一个节点上剩余的资源总量和一个SubMicroServPod中预期的资源使用总量决定一个SubMicroServPod中的所有微服务是否可以分配到某硬件节点上。当一个硬件节点上剩余的资源总量大于SubMicroServPod中所有微服务的预期资源使用量的时候,可以将SubMicroServPod分配到该硬件节点上,以提高每个硬件节点的资源利用率。
根据上述分配方法,将每一个SubMicroServPod中的所有微服务分配至指定的硬件节点上运行,即实现基于耦合度的微服务的在线分配。
本发明还供基于耦合度的微服务在线分配系统,如图2所示。该系统以多个微服务组成的软件系统和服务请求作为输入,包含数据收集、微服务分组、微服务分配等三个模块:
数据收集模块包含分布式追踪与资源监控两个子模块,分别用于生成由多个微服务组成的目标系统的请求执行路径和资源监控数据(包括每个微服务的资源使用数据与每个节点上的剩余可用资源数据),为另外两个模块提供数据支撑。分布式追踪子模块追踪目标软件系统端到端处理服务请求的过程,为每一个服务请求产生一个请求执行路径。请求执行路径为有向无环图,图中的每一个顶点表示与处理一个服务请求相关的事件,每一条边代表事件之间的因果关系。资源使用监控子模块对所有微服务的资源使用情况进行持续监控,以一定的时间间隔获取每个微服务的CPU、内存、网络带宽、磁盘IO的使用数据。资源使用监控子模块同时监控每个节点上的剩余可用资源。一定时间窗口内的请求执行路径和资源使用数据将作为微服务分组模块的输入。每个节点上的剩余可用资源将作为微服务分配模块的输入。
微服务分组模块包含耦合度计算、MicroServPod划分、SubMicroServPod划分三个子模块,根据一定时间窗口内的软件系统的请求执行路径和资源使用数据对所有的微服务进行分组,生成多个SubMicroServPods,每一个SubMicroServPod包含一个或多个微服务,是资源分配的单位,一个SubMicroServPod中的多个微服务被分配到同一个硬件节点上运行。耦合度计算子模块从请求执行路径中提取所有微服务之间的网络通信频率与网络消息的大小,并据此计算任意两个微服务之间的耦合度,生成所有微服务之间的依赖关系图,图中的每个顶点代表一个微服务,每条边代表连通的两个微服务之间的耦合度。MicroServPod划分子模块根据所有微服务之间的依赖关系图,使用谱聚类方法将图划分为多个互不相交的子图,每一个子图所代表的微服务的组合称为一个MicroServPod。SubMicroServPod划分子模块根据微服务之间是否存在显著的资源竞争关系,将每个MicroServPod中的所有微服务再次进行分组,每一个再次划分后的微服务的组合称为一个SubMicroServPod。
微服务分配模块包含分配策略制定和分配策略执行两个子模块,根据微服务分组模块生成的SubMicroServPod结果,将每一个SubMicroServPod分配到一个节点上运行。分配策略制定子模块根据每个SubMicroServPod的预计的资源使用量和每个节点上剩余的可用资源制定所有SubMicroServPod的分配策略,决定每一个SubMicroServPod将被分配到哪个节点上。分配策略执行子模块根据制定的分配策略,将一个SubMicroServPod实际分配到一个指定的节点上。
与现有技术相比,本发明的有益效果是:
本发明提供一种基于耦合度的微服务在线分配方法与系统,根据请求执行路径计算微服务之间的耦合度,将耦合度较高且又不存在显著资源竞争关系的微服务分配至相同的硬件节点上运行,降低了具有较强依赖关系的微服务之间因较大的网络通信延迟导致的系统性能开销。整个过程的实现为自动化处理,一方面极大地减少了对专家知识的需求和人工的参与,节省了人力成本;另一方面使得软件系统能够动态地调整微服务的分配策略,通过主动改变微服务的分配策略,提升系统运行的整体性能。
附图说明
图1是本发明提供的基于耦合度的微服务在线分配方法的流程框图。
图2是本发明实施例提供的基于耦合度的微服务在线分配系统的结构框图。
具体实施方式
下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
本发明提供一种基于耦合度的微服务在线分配方法与系统,通过计算微服务之间的耦合度,对所有微服务进行分组,并将同一组内的微服务分配到同一个硬件节点上,降低频繁的网络通信导致的系统开销,缩短请求响应时间,实现基于微服务架构系统中微服务在线分配的优化。
图1是本发明提供的基于耦合度的微服务在线分配方法的流程框图;包括获取请求执行路径与资源监控数据、根据请求执行路径计算微服务之间的耦合度、基于耦合度将微服务划分为不同的微服务分组MicroServPod、基于微服务之间的资源竞争关系将微服务分组划分为微服务细分组SubMicroServPod、根据每个SubMicroServPod的资源消耗总量将SubMicroServPod在线分配到硬件节点上。图2是本发明实施例提供的基于耦合度的微服务在线分配系统的结构框图。
实施例提供的基于耦合度的微服务在线分配系统以多个微服务组成的软件系统和服务请求作为输入,包括数据收集、微服务分组、微服务分配三个模块。整个系统流程如下:
数据收集模块生成一定时间窗口内软件系统的请求执行路径和资源监控数据,并将两类数据输入到微服务分组模块。微服务分组模块首先根据请求执行路径计算微服务之间的耦合度,并根据微服务之间的耦合度计算结果首先将所有微服务划分为互不相交的MicroServPods,然后根据微服务之间的资源竞争关系将每个MicroServPod进一步划分为多个SubMicroServPods,并将SubMicroServPod划分结果输入到微服务分配模块。微服务分配模块首先根据每个SubMicroServPod的预计资源使用量和每个硬件节点上的剩余可用资源制定每个SubMicroServPod的分配策略,然后将每个SubMicroServPod实际分配到一个指定的节点上运行。
具体地,系统的流程如图1所示,包括如下步骤:
首先,数据收集模块获取请求执行路径与资源监控数据。其中分布式追踪子模块使用开源的分布式追踪技术为软件系统中的每个服务请求生成一个请求执行路径;资源监控子模块使用开源的资源监控技术以一定时间间隔记录一定的时间窗口内每个微服务的四种资源(CPU、内存、磁盘IO与网络带宽)的使用数据和每个节点上的剩余可用资源。请求执行路径与资源监控数据被输入到微服务分组模块。每个节点上的剩余可用资源被输入到微服务分配模块。
微服务分组模块接收到请求执行路径和资源监控数据后,耦合度计算子模块根据请求执行路径计算微服务之间的耦合度,从请求执行路径中提取网络通信相关的事件与因果关系,从而计算出在一定时间窗口内两个微服务之间的网络通信频率和网络消息的平均大小,并据此计算两个微服务之间的耦合度,生成微服务之间的依赖关系图。MicroServPod划分子模块基于耦合度将所有微服务划分为不同的MicroServPods,使用谱聚类方法,在微服务之间的依赖关系图上将所有微服务划分为k个互不相交的子图,每个子图中的所有微服务组成一个MicroServPod。一个MicroServPod中微服务之间具有较高的耦合度,不同MicroServPod之间的微服务的耦合度较低。SubMicroServPod划分子模块基于微服务之间的资源竞争关系将MicroServPod划分为SubMicroServPod,使得同一个SubMicroServPod中的微服务之间不存在显著的资源竞争关系,且一个SubMicroServPod中的所有微服务的预计资源使用量不超过集群中资源总量最小节点上的资源或用户指定的阈值。
微服务分配模块接收到SubMicroServPod的划分结果后,根据每个SubMicroServPod的资源消耗总量对微服务进行分配。分配策略制定子模块根据每个SubMicroServPod的资源消耗总量制定分配策略,在不影响微服务的响应时间的前提下尽量提升每个节点的资源利用率,将SubMicroServPod分配到最小的满足其资源消耗总量的硬件节点上,且属于同一MicroServPod的不同SubMicroServPod分配到不同节点上。分配策略执行子模块根据分配策略将SubMicroServPod实际分配到某个硬件节点上。
本实施例提供的基于耦合度的微服务在线分配系统中,各个模块的操作通过与其他相关模块进行信息交互来完成,下面分别对不同的模块进行具体说明。
S1)数据收集模块
数据收集模块的主要功能是利用分布式追踪系统(如SkyWalking)和资源监控工具(如Docker Stats),获取由多个微服务组成的软件系统中的每个服务的端到端的处理过程(表示为请求执行路径)和每个微服务的资源使用数据(如CPU使用量)及每个节点的剩余可用资源。请求执行路径和每个微服务的资源使用数据被传递到微服务分组模块,作为微服务分组的依据。每个节点的剩余可用资源被传递到微服务分配模块,作为制定微服务分配策略的依据。数据收集模块包含分布式追踪和资源使用监控两个子模块:
S11)分布式追踪子模块
分布式追踪子模块通过向软件系统的特定位置添加探针,捕获软件系统处理服务请求的端到端的过程,拦截每个微服务处理请求产生的相关事件,并判断事件之间的因果关系,生成以有向无环图表示的请求执行路径。
分布式追踪子模块拦截到的事件可以分为两类,网络消息发送与接收事件(分别表示为send事件和recv事件)、其他事件。对于网络消息发送与接收事件,分布式追踪子模块需保证其包含以下特征:Local IP,即网络消息发送与接收事件的本地的IP地址;RemoteIP,即网络消息发送与接收事件远端的IP地址;Data ID,即唯一标识一对网络消息发送与接收事件的ID;Timestamp,事件发生时的本地时间戳(集群中需配置NTS时间同步服务器,保证不同节点上的时间的误差在一定范围之内);PID,即拦截到的网络消息发送与接收事件的所在的进程的ID。Length,即发送与接收的网络消息的大小。对于其他事件,分布式追踪子模块只需保证其包含有Timestamp及PID。
一定时间窗口内(预设为30分钟)的所有请求执行路径,包括事件、事件之间的因果关系及事件的特征被被分布式追踪子模块转换为一定的数据格式(如json)并传递到微服务分组模块,作为其输入之一。
S12)资源监控子模块
资源监控子模块获取软件系统中每个微服务处理服务请求时的资源使用数据,一方面向微服务分组模块提供各个微服务的资源使用数据,作为SubMicroServPod划分的依据;另一方面向微服务分配模块提供各个节点上剩余的可用资源(可以根据该硬件节点上已运行的微服务所占用的资源计算剩余可用的资源),为制定微服务分配策略提供支撑。
资源监控工具获取的资源数据是时间序列数据,每隔一定的时间(预设为3秒)生成一个新的资源使用数据单元,每个资源使用数据单元所包含的属性如表1中的每一行所示。每个数据单元包含六个属性:分别是微服务名称、时间戳、CPU使用量、内存使用量、网络I/O、磁盘I/O。服务名称指明当前的资源使用数据单元属于哪一个微服务;时间戳指明产生该数据单元的本地时间;CPU使用量指明当前时刻该微服务所使用的CPU的数量(200%意味着当前微服务占用了两个核的CPU时间片);内存使用量表示当前微服务所占用的内存的总量(以MB为单位);网络I/O分别表示当前时刻下该微服务所占据的网络入带宽和出带宽(以MB为单位);磁盘I/O分别表示当前时刻下该微服务从磁盘中读取/写入的数据量(以MB为单位)。
一定时间窗口内(预设为30分钟)的所有微服务的包含上述六个属性的资源使用数据,被资源使用监控子模块转换为一定的数据格式(如json)并传递到微服务分组模块和微服务分配模块,作为其输入之一。
表1资源使用数据格式举例
S2)微服务分组模块
微服务分组模块的功能是根据数据获取模块输出的请求执行路径和资源使用数据,将所有微服务进行分组,最终生成多个互不相交的SubMicroServPods,作为微服务分配的基本单元,并将SubMicroServPod划分结果传递给微服务分配模块。微服务分组模块包含耦合度计算、MicroServPod划分、SubMicroServPod划分三个子模块。
S21)耦合度计算子模块
耦合度计算子模块接收分布式追踪子模块在一定时间窗口内产生的所有请求执行路径,并根据请求执行路径计算所有微服务之间的耦合度。耦合度计算子模块首先从请求执行路径中提取出所有的网络消息发送与接收事件,并从中提取出所有的IP(包括LocalIP与Remote IP),每一个不同的IP代表一个微服务;然后根据Data ID将send事件与recv事件两两配对,并根据事件中的Local IP和Remote IP提取出进行网络通信的两个微服务,根据事件中的Length特征提取出这一对send/recv事件的发送/接收的消息的大小(以字节为单位);最后,耦合度计算子模块根据式(1)计算任意两个微服务之间的耦合度,生成微服务之间的依赖关系图G_coupling,图中的每个顶点是一个微服务,每条边(无向边)代表两个连通的微服务的耦合度,耦合度的取值范围为0-2。其中a,b为两个不同的微服务,Ca,b表示微服务a与微服务b之间的耦合度,Na,b代表在该时间窗口内,微服务a与微服务b根据DataID提取出的send/recv事件对的个数,Li表示微服务a与微服务b之间第i个send/recv事件对的消息的长度。
S22)MicroServPod划分子模块
MicroServPod划分子模块接收耦合度计算子模块产生的微服务之间的依赖关系图G_coupling,根据微服务之间的耦合度将所有的微服务划分到不同的MicroServPod中,使得同一个MicroServPod中的所有微服务具有较高的耦合度,不同MicroServPod中的服务耦合度较低。此处采用了Spectral Clustering算法中的NCut算法对微服务之间的依赖关系图进行切分。主要过程由算法1中的伪代码所示,其基本思想是:将所有的微服务当作空间中的点,点之间用边连接起来,边的权重为相互连接的两个微服务之间的耦合度,然后通过对所有点和边组成的图进行切分,通过选取并优化目标函数,求取目标函数的全局最优解,使得切分后不同子图间边的权重之和尽可能低,同一子图内边的权重之和尽可能高,从而达到图切分的目的。具体是通过对度矩阵D^(-1/2)*W*D^(-1/2)进行特征分解,得到前k1个特征向量并构建矩阵Q,随后对矩阵Q进行归一化和kmeans聚类,聚类结果即为切分结果。其中k1和k2为超参数,k1为降维后的维度个数,k2为聚类后的类的个数,W为度邻接矩阵,D为度矩阵。
S23)SubMicroServPod划分子模块
SubMicroServPod划分子模块接收MicroServPod子模块输出的多个MicroServPods与资源监控子模块输出的每个微服务的资源使用数据,根据每个MicroServPod中的作业是否存在资源冲突或资源需求总和是否超过最小节点的资源决定是否将MicroServPod划分为多个SubMicroServPod,直到每个划分的SubMicroServPod中都不存在显著的资源竞争(算法2中的资源冲突),且每个SubMicroServPod中所有微服务的资源需求总量小于集群中资源总量最少的节点。详细过程如算法2所示。其中,MSPk表示第k个MicroServPod。判断MicroServPod中是否存在资源竞争的方法如下(算法第5行):将MicroServPod中所有作业的资源需求量累加,判断累加结果是否超过指定阈值(该阈值可由使用者设置),如A作业需要CPU 20%,B作业30%,C作业40%,累计需要90%CPU,如果阈值设置为80%,则认为ABC三个作业存在显著资源竞争关系,则需要对该MicroServPod进行进一步切分。其他维度的资源(如内存,磁盘等)也采用这种计算方法。
S3)微服务分配模块
微服务分配模块的功能是根据微服务分组模块产生的SubMicroServPods和数据收集模块产生的集群中每个节点上的剩余可用资源,制定每个SubMicroServPod的分配策略并将一个SubMicroServPod指定到一个节点上并运行。微服务分配模块包含分配策略制定和分配策略执行两个子模块:
S31)分配策略制定子模块
分配策略制定子模块接收SubMicroServPod划分子模块输出的SubMicroServPod集合和资源监控子模块输出的每个节点的剩余可用资源,决定将一个SubMicroServPod分配到哪个节点上。在启动微服务时,可直接将一个SubMicroServPod的所有微服务分配到一个硬件节点上运行。在分配服务时,可以采用全分配或者最小迁移代价分配的方法将一个SubMicroServPod中的所有微服务分配到指定硬件节点上。分配策略制定过程如算法3所示。
分配策略制定过程的基本流程为:首先对所有的SubMicroServPod按其资源需求量降序排序,随后对由高到低依次分配SubMicroServPod,算法3采取了最小碎片的调度策略,针对每个节点计算分配一个SubMicroServPod后的剩余资源碎片,并将SubMicroServPod分配至碎片最小的节点上。算法3中的SMSP是指SubMicroServPod;Node为集群中的硬件节点;Node.availableResource代表Node的剩余可用资源,为一个向量,如Node.availableResource={Rescpu,ResMem,…},Rescpu,ResMem分别代表该节点上CPU和内存的可用资源量。
S32)分配策略执行子模块
分配策略执行子模块接收分配策略制定子模块输出的每个SubMicroServPod的分配的目标节点。在启动微服务时,将一个SubMicroServPod中的所有微服务在目标节点上启动运行。在对微服务进行重新分配时,首先将不在此SubMicroServPod目标节点上的微服务暂停运行,保存其运行状态与数据,并将这些微服务在目标硬件节点上重新运行。
需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (10)
1.一种基于耦合度的微服务在线分配方法,通过计算微服务之间的耦合度,对所有微服务进行分组,并将同一组内的微服务分配到同一个硬件节点上,降低频繁的网络通信导致的系统开销,缩短请求响应时间,实现基于微服务架构的系统中微服务在线分配的优化;包括如下步骤:
1)获取请求执行路径与资源监控数据:
捕获由多个微服务组成的软件系统端到端处理服务请求的过程,即生成请求执行路径,请求执行路径为有向无环图,图中的每一个顶点表示与处理一个服务请求相关的事件,每一条边代表事件之间的因果关系;
获取的资源监控数据包括每个微服务的资源使用数据与每个硬件节点上的剩余可用资源数据;每个微服务的资源使用数据包括单位时间每个微服务的CPU使用量、内存使用量等;
2)根据请求执行路径计算得到微服务耦合度,用于量化微服务之间的依赖程度;
基于在一定的时间窗口内的目标系统中生成的所有请求执行路径,计算得到微服务之间的网络交互的频率与平均网络消息的大小并计算任意两个微服务之间的耦合度,从而生成所有微服务之间的依赖关系图;图中的每个顶点代表一个微服务;每条边为无向边,代表相互连通的两个微服务之间的耦合度;
3)基于微服务耦合度将所有微服务划分到互不相交的k个微服务分组MicroServPod;每个MicroServPod包括一组存在较强相互依赖关系的微服务;同一MicroServPod中的不同微服务之间的耦合度高,而不同MicroServPods中微服务之间的耦合度低;
4)基于微服务之间的资源竞争关系将MicroServPod划分为微服务细分组SubMicroServPod;包括如下过程:
根据步骤1)得到的每个微服务的资源使用数据,计算每个微服务的预期资源使用量,包括:CPU,内存,带宽,磁盘IO,并判断微服务间是否存在显著资源竞争关系;
将一个MicroServPod中具有显著资源竞争关系的微服务划分到不同的SubMicroServPod中,使得每个SubMicroServPod中不存在具有显著竞争关系的微服务,且每个SubMicroServPod的所有微服务的资源消耗总量不超过单个硬件节点的资源总量或指定的阈值;
5)根据每个SubMicroServPod的资源消耗总量,基于SubMicroServPod对微服务进行分配;包括如下过程:
以SubMicroServPod为最小单位进行微服务分配,将同一个SubMicroServPod中的所有微服务分配到同一个节点上运行,将属于同一MicroServPod的不同SubMicroServPod的微服务分配到不同的节点上;
根据一个节点上剩余的资源总量和一个SubMicroServPod中预期的资源使用总量确定一个SubMicroServPod中的所有微服务是否分配到该节点上;
通过上述步骤,将每一个SubMicroServPod中的所有微服务分配至硬件节点上运行,即实现基于耦合度的微服务的在线分配。
2.如权利要求1所述基于耦合度的微服务在线分配方法,其特征是,步骤1)具体利用分布式追踪技术,捕获由多个微服务组成的软件系统端到端处理服务请求;具体利用资源监控工具,获取资源监控数据;所述获取请求执行路径与资源监控数据包括从线上的系统、测试系统和预上线系统环境中获取。
3.如权利要求1所述基于耦合度的微服务在线分配方法,其特征是,步骤2)具体根据微服务之间的网络通信频率与网络消息的大小计算微服务之间的耦合度,步骤3)采用谱聚类算法将所有微服务划分到不同的MicroServPod,步骤4)根据一个MicroServPod中微服务之间的资源竞争关系将其进一步划分为不同的SubMicroServPod;包括如下过程:
耦合度计算子模块根据请求执行路径计算微服务之间的耦合度,从请求执行路径中提取网络通信相关的事件与因果关系,从而计算出在一定时间窗口内两个微服务之间的网络通信频率和网络消息的平均大小,并据此计算两个微服务之间的耦合度,生成微服务之间的依赖关系图;
MicroServPod划分子模块基于耦合度将所有微服务划分为不同的MicroServPods,使用谱聚类方法,在微服务之间的依赖关系图上将所有微服务划分为k个互不相交的子图,每个子图中的所有微服务组成一个MicroServPod;一个MicroServPod中微服务之间具有较高的耦合度,不同MicroServPod之间的微服务的耦合度较低;
SubMicroServPod划分子模块基于微服务之间的资源竞争关系将每个MicroServPod划分为不同的SubMicroServPod,使得同一个SubMicroServPod中的微服务之间不存在显著的资源竞争关系,且一个SubMicroServPod中的所有微服务的预计资源使用量不超过集群中资源总量最小节点上的资源或用户指定阈值。
5.如权利要求3所述基于耦合度的微服务在线分配方法,其特征是,SubMicroServPod划分子模块基于微服务之间的资源竞争关系将MicroServPod划分为SubMicroServPod,具体方法是:
将MicroServPod中所有作业的资源需求量累加,得到累加结果;
设置一个比例阈值;
判断累加结果是否超过设置的比例阈值;
如果累加结果超过设置的比例阈值,则存在显著资源竞争关系,表示需对该MicroServPod进行进一步切分。
6.如权利要求1所述基于耦合度的微服务在线分配方法,其特征是,步骤5)中,当一个硬件节点上剩余的资源总量大于SubMicroServPod中所有微服务的预期资源使用量时,将SubMicroServPod分配到该硬件节点上。
7.一种基于耦合度的微服务在线分配系统,以多个微服务组成的软件系统和服务请求作为输入,包括数据收集模块、微服务分组模块、微服务分配模块;其中:
数据收集模块包含分布式追踪子模块与资源监控子模块,分别用于生成由多个微服务组成的目标系统的请求执行路径和资源监控数据;资源监控数据包括每个微服务的资源使用数据与每个节点上的剩余可用资源数据;
将请求执行路径和资源使用数据作为微服务分组模块的输入;将每个节点上的剩余可用资源将作为微服务分配模块的输入;
微服务分组模块包含耦合度计算子模块、微服务分组MicroServPod划分子模块、微服务细分组SubMicroServPod划分子模块;根据请求执行路径和资源使用数据对所有的微服务进行分组,生成多个SubMicroServPods,每一个SubMicroServPod包含一个或多个微服务;
耦合度计算子模块从请求执行路径中提取所有微服务之间的网络通信频率与网络消息的大小,并计算任意两个微服务之间的耦合度,生成所有微服务之间的依赖关系图,图中的每个顶点代表一个微服务,每条边代表联通的两个微服务之间的耦合度;MicroServPod划分子模块根据所有微服务之间的依赖关系图,将图划分为多个互不相交的子图,每一个子图所代表的微服务的组合称为一个MicroServPod;SubMicroServPod划分子模块根据微服务之间是否存在显著的资源竞争关系,将一个MicroServPod中的所有微服务再次进行分组,每一个再次划分后的微服务的组合称为一个SubMicroServPod;
微服务分配模块包含分配策略制定子模块和分配策略执行子模块,根据微服务分组模块生成的SubMicroServPod结果,将每一个SubMicroServPod分配到一个节点上运行;
分配策略制定子模块根据每个SubMicroServPod的预计的资源使用量和每个节点上剩余的可用资源制定所有SubMicroServPod的分配策略,确定每一个SubMicroServPod分配到的硬件节点;分配策略执行子模块根据制定的分配策略,将一个SubMicroServPod实际分配到相应的节点上。
8.如权利要求7所述基于耦合度的微服务在线分配系统,其特征是,一个SubMicroServPod中的多个微服务被分配到同一个硬件节点上运行。
9.如权利要求7所述基于耦合度的微服务在线分配系统,其特征是,MicroServPod划分子模块具体通过谱聚类方法将微服务之间的依赖关系图划分为多个互不相交的子图。
10.如权利要求7所述基于耦合度的微服务在线分配系统,其特征是,微服务的资源使用情况包括每个微服务的CPU、内存、网络带宽、磁盘IO的使用数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010960107.6A CN112148484B (zh) | 2020-09-14 | 2020-09-14 | 一种基于耦合度的微服务在线分配方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010960107.6A CN112148484B (zh) | 2020-09-14 | 2020-09-14 | 一种基于耦合度的微服务在线分配方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148484A true CN112148484A (zh) | 2020-12-29 |
CN112148484B CN112148484B (zh) | 2024-02-23 |
Family
ID=73892238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010960107.6A Active CN112148484B (zh) | 2020-09-14 | 2020-09-14 | 一种基于耦合度的微服务在线分配方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148484B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791797A (zh) * | 2021-11-16 | 2021-12-14 | 浙江工企信息技术股份有限公司 | 基于数字化模型底座的工业app热插拔方法 |
CN114092073A (zh) * | 2022-01-21 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 无向带权数据图至dag任务图的转换方法、系统及装置 |
CN114205419A (zh) * | 2021-12-14 | 2022-03-18 | 上海交通大学 | 面向微服务多维扰动特征的数据中心请求调度系统及方法 |
CN114201231A (zh) * | 2021-11-29 | 2022-03-18 | 江苏金农股份有限公司 | 一种分布式的微服务编排系统及方法 |
CN114706696A (zh) * | 2022-03-30 | 2022-07-05 | 中国联合网络通信集团有限公司 | 一种微服务划分方法、装置及计算机可读存储介质 |
CN116192962A (zh) * | 2023-02-27 | 2023-05-30 | 中国人民解放军国防科技大学 | 一种面向云边端计算的通信聚合方法及系统 |
CN116382879A (zh) * | 2023-06-06 | 2023-07-04 | 北京理工大学出版社有限责任公司 | 一种具备通用性的耦合数据交换技术架构 |
CN117311801A (zh) * | 2023-11-27 | 2023-12-29 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180349121A1 (en) * | 2017-05-30 | 2018-12-06 | International Business Machines Corporation | Dynamic deployment of an application based on micro-services |
CN110995855A (zh) * | 2019-12-13 | 2020-04-10 | 深圳先进技术研究院 | 微服务集群调度方法、调度装置及计算机可读存储介质 |
US20200162578A1 (en) * | 2018-11-19 | 2020-05-21 | International Business Machines Corporation | Microservices request flow control synchronization |
CN111245925A (zh) * | 2020-01-09 | 2020-06-05 | 北京理工大学 | 一种用于现代分布式微服务架构的通信方法与系统 |
-
2020
- 2020-09-14 CN CN202010960107.6A patent/CN112148484B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180349121A1 (en) * | 2017-05-30 | 2018-12-06 | International Business Machines Corporation | Dynamic deployment of an application based on micro-services |
US20200162578A1 (en) * | 2018-11-19 | 2020-05-21 | International Business Machines Corporation | Microservices request flow control synchronization |
CN110995855A (zh) * | 2019-12-13 | 2020-04-10 | 深圳先进技术研究院 | 微服务集群调度方法、调度装置及计算机可读存储介质 |
CN111245925A (zh) * | 2020-01-09 | 2020-06-05 | 北京理工大学 | 一种用于现代分布式微服务架构的通信方法与系统 |
Non-Patent Citations (1)
Title |
---|
张辉;王伟;郭栋: "一种基于微服务范式的桌面云构建框架", 信息网络安全, no. 2 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113791797A (zh) * | 2021-11-16 | 2021-12-14 | 浙江工企信息技术股份有限公司 | 基于数字化模型底座的工业app热插拔方法 |
CN113791797B (zh) * | 2021-11-16 | 2022-02-18 | 浙江工企信息技术股份有限公司 | 基于数字化模型底座的工业app热插拔方法 |
CN114201231A (zh) * | 2021-11-29 | 2022-03-18 | 江苏金农股份有限公司 | 一种分布式的微服务编排系统及方法 |
CN114205419A (zh) * | 2021-12-14 | 2022-03-18 | 上海交通大学 | 面向微服务多维扰动特征的数据中心请求调度系统及方法 |
CN114092073A (zh) * | 2022-01-21 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 无向带权数据图至dag任务图的转换方法、系统及装置 |
CN114092073B (zh) * | 2022-01-21 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 无向带权数据图至dag任务图的转换方法、系统及装置 |
CN114706696A (zh) * | 2022-03-30 | 2022-07-05 | 中国联合网络通信集团有限公司 | 一种微服务划分方法、装置及计算机可读存储介质 |
CN116192962A (zh) * | 2023-02-27 | 2023-05-30 | 中国人民解放军国防科技大学 | 一种面向云边端计算的通信聚合方法及系统 |
CN116192962B (zh) * | 2023-02-27 | 2023-11-14 | 中国人民解放军国防科技大学 | 一种面向云边端计算的通信聚合方法及系统 |
CN116382879A (zh) * | 2023-06-06 | 2023-07-04 | 北京理工大学出版社有限责任公司 | 一种具备通用性的耦合数据交换技术架构 |
CN116382879B (zh) * | 2023-06-06 | 2023-08-29 | 北京理工大学出版社有限责任公司 | 一种具备通用性的耦合数据交换技术架构 |
CN117311801A (zh) * | 2023-11-27 | 2023-12-29 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
CN117311801B (zh) * | 2023-11-27 | 2024-04-09 | 湖南科技大学 | 一种基于网络化结构特征的微服务拆分方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112148484B (zh) | 2024-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148484B (zh) | 一种基于耦合度的微服务在线分配方法与系统 | |
Wang et al. | Resource-efficient federated learning with hierarchical aggregation in edge computing | |
Sajjad et al. | Spanedge: Towards unifying stream processing over central and near-the-edge data centers | |
WO2019001092A1 (zh) | 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法 | |
US10394821B2 (en) | Providing reconstructed data based on stored aggregate data in response to queries for unavailable data | |
CN111444021B (zh) | 基于分布式机器学习的同步训练方法、服务器及系统 | |
CN111459617A (zh) | 基于云平台的容器化应用自动分配优化系统及其方法 | |
CN101902497B (zh) | 基于云计算的互联网信息监测系统及方法 | |
EP3465966B1 (en) | A node of a network and a method of operating the same for resource distribution | |
CN102281290A (zh) | 一种PaaS云平台的仿真系统及方法 | |
Cicconetti et al. | Architecture and performance evaluation of distributed computation offloading in edge computing | |
CN111966289A (zh) | 基于Kafka集群的分区优化方法和系统 | |
WO2021008675A1 (en) | Dynamic network configuration | |
Huang et al. | Enabling dnn acceleration with data and model parallelization over ubiquitous end devices | |
CN111418187A (zh) | 云网络中的可伸缩统计和分析机制 | |
CN109614228B (zh) | 基于动态负载均衡方式的综合监控前置系统及工作方法 | |
Ping | Load balancing algorithms for big data flow classification based on heterogeneous computing in software definition networks | |
CN105007200B (zh) | 网络数据包的分析方法及系统 | |
CN114217920A (zh) | 作业调度方法和装置、计算机机群、计算机可读存储介质 | |
Abreha et al. | Monitoring in fog computing: state-of-the-art and research challenges | |
WO2017101997A1 (en) | Monitoring arrangement, network manager and respective methods performed thereby for enabling resource management in a data centre | |
Lovén et al. | Weathering the reallocation storm: Large-scale analysis of edge server workload | |
Lakshmanan et al. | Placement of replicated tasks for distributed stream processing systems | |
CN110622467A (zh) | 用于标识网络对象组的设备和方法 | |
Xia et al. | Age-aware query evaluation for big data analytics in mobile edge clouds |
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 |