本技术实施例涉及计算机,尤其涉及一种应用弹性伸缩方法及系统。
背景技术:
1、微服务是一种软件架构风格,以开发一组小型服务的方式来实现一个独立的应用,这些小型服务也即微服务组件可以独立部署到生产环境上,一个微服务组件只关注一个特定的业务功能。一个应用一般由多个微服务组件组成,一个应用的各微服务组件之间通过中间件或者应用程序接口(application programming interface,api)进行调用。一个微服务组件可以包括一个或多个微服务实例,其中,多个微服务实例互为副本。
2、相关技术中,可以对单个微服务组件进行弹性伸缩以应对突发的业务负载,从而在一定程度上提升应用的容量以降低过载风险。弹性伸缩指基于弹性基础设施如虚拟机和容器编排,按照弹性伸缩策略对微服务组件中微服务实例的副本数进行调整,从而实现应用容量的弹性伸缩。其中,弹性伸缩策略例如可以是人工为应用中每个微服务组件配置的如何调整副本数的策略。
3、但是,人工分别配置每个微服务组件的弹性伸缩策略容易导致因人员经验有限和分析不足引起的不同微服务组件间未能统一配置弹性伸缩策略的问题。也就是说,如果没有统一配置弹性伸缩策略也即没有准确确定应用的各微服务组件中性能最低的一个即性能瓶颈。这样,很可能导致应用无法应对突增的业务负载或者造成资源浪费,也即应用弹性伸缩异常的问题。
技术实现思路
1、本技术实施例提供了一种应用弹性伸缩方法及系统,基于应用的不同微服务组件间的调用所形成的全链路拓扑,可以保证全链路拓扑中每个微服务组件的弹性伸缩规则基于调度链路中不同微服务的整体调用性能确定,也就保证应用的每个微服务组件能够进行统一的弹性伸缩,从而提升应用的整体容量,避免应用弹性伸缩异常的问题。为达到上述目的,本技术实施例采用如下技术方案:
2、第一方面,本技术实施例提供一种应用弹性伸缩方法,该方法包括:基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑;至少一个全链路拓扑分别用于指示多种服务请求中的一种服务请求对应用的各微服务组件的调用路径;获取至少一种服务请求对所调用的每个微服务组件的第一资源占用信息;根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则;其中,每个微服务组件的预设负载模型用于指示微服务组件的伸缩量上限和处理服务请求的处理量上限,伸缩量上限用于指示微服务组件支持处理量上限所利用的运行资源量;分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理。
3、本技术实施例,通过应用的全链路拓扑以及预设负载模型,保证全链路拓扑中每个微服务组件的弹性伸缩规则基于全链路拓扑中不同微服务组件的整体调用性能确定,进而根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理,可以实现不同微服务组件间统一的弹性伸缩,从而提升应用的整体容量,避免未考虑微服务组件的整体调用性能的不统一弹性伸缩所导致的弹性伸缩异常。
4、根据第一方面,基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑,包括:获取应用处理至少一种服务请求的过程中,每种服务请求对每个微服务组件的调用信息,得到服务请求所调用的各微服务组件间的调用关系;分别根据每种服务请求对应的调用关系,构建以调用关系中的微服务组件为节点、以及以调用关系为边的有向无环图,得到应用的至少一个全链路拓扑。
5、本技术实施例,通过有向无环图形式的全链路拓扑,全面、准确且简洁地反映每种服务请求对每个微服务组件的调用情况,可以进一步提高弹性伸缩的准确度和效率。
6、根据第一方面,或者以上第一方面的任意一种实现方式,在每种服务请求下每个微服务组件的第一资源占用信息包括如下至少之一:当前子流量大小和预测子流量大小;其中,当前子流量大小用于指示微服务组件当前接收的服务请求的规模;预测子流量大小用于指示应用接收的服务请求中计划分配给微服务组件的服务请求的规模。
7、本技术实施例,第一资源占用信息包括当前子流量大小和预测子流量大小中的至少之一,从而保证后续基于第一资源占用信息确定的伸缩规则,可以适用于应用中微服务组件的当前负载和未来负载中的至少之一,进一步提高弹性伸缩的准确度。
8、根据第一方面,或者以上第一方面的任意一种实现方式,弹性伸缩规则至少包括每个全链路拓扑中每个微服务组件的预测副本扩展数量、伸缩量上限以及流量阈值;根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则,包括针对每个全链路拓扑,执行如下步骤:基于全链路拓扑对应的服务请求和当前时间,确定在未来时间内全链路拓扑中每个微服务组件的预测子流量最大值;根据全链路拓扑中每个微服务组件的预测子流量最大值、以及全链路拓扑中每个微服务组件的预设负载模型所指示的伸缩量上限,确定全链路拓扑中每个微服务组件的预测副本扩展数量;将全链路拓扑中输入相同以及输出相同的至少一个微服务组件,确定为全链路拓扑的一个处理层,得到全链路拓扑的多个处理层;针对全链路拓扑的多个处理层中的每个处理层,执行如下步骤:基于处理层中每个微服务组件的第一资源占用信息、和处理层的上一级处理层中每个微服务组件的第一资源占用信息、以及预设流量裕量,确定处理层中每个微服务组件的流量阈值。
9、本技术实施例,通过对应用的全链路拓扑分层,进而针对每个处理层的微服务组件确定弹性伸缩规则,可以准确确定整个应用中的流量瓶颈,从而进一步提高弹性伸缩策略的准确度,保证后续弹性伸缩的准确度。
10、根据第一方面,或者以上第一方面的任意一种实现方式,分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理,包括针对每个全链路拓扑,执行如下步骤:在全链路拓扑的每个处理层中任一微服务组件的预设负载模型所指示的处理量上限,大于任一微服务组件的流量阈值的情况下,确定全链路拓扑为目标拓扑;以目标拓扑中每个微服务组件的弹性伸缩规则中的预测副本扩展数量不超过弹性伸缩规则中伸缩量上限为约束,确定目标拓扑中每个微服务组件的预测副本扩展数量和运行扩展后的微服务组件所需的运行资源量;根据目标拓扑中每个微服务组件的目标副本扩展数量和运行扩展后的微服务组件所需的运行资源量,调整全链路拓扑中每个微服务组件中微服务实例的副本数量和运行资源量。
11、本技术实施例,基于应用中的流量瓶颈也即目标拓扑中处理量上限超出流量阈值的微服务组件所在的拓扑,以及伸缩量上限进行弹性伸缩,保证弹性伸缩的实现。这样,可以避免弹性伸缩所需的资源不足以及弹性伸缩效果异常。
12、根据第一方面,或者以上第一方面的任意一种实现方式,分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理之后,方法还包括针对每个全链路拓扑中的每个微服务组件分别执行如下步骤:获取对微服务组件执行微服务组件的弹性伸缩规则产生的伸缩性能指标、以及微服务组件在弹性伸缩处理之后处理服务请求的处理数据;基于伸缩性能数据和处理数据,或者基于处理数据,评估微服务组件的弹性伸缩性能,得到评估数据;根据评估数据,进行对微服务组件的弹性伸缩规则和/或所利用的第二资源量的调整。
13、本技术实施例中,对弹性伸缩策略进行评估,实时优化弹性伸缩策略,在保证能够承接住负载流量的同时,避免资源浪费。也就是说,本技术实施例可以提升弹性伸缩策略的有效性,以及降低无效弹性伸缩带来的资源浪费。
14、根据第一方面,或者以上第一方面的任意一种实现方式,伸缩性能指标包括如下至少之一:弹性伸缩规则的生效时间和预测子流量大小;其中,预测子流量大小用于指示应用接收的服务请求中计划分配给微服务组件的服务请求的规模;处理数据包括如下至少之一:微服务组件在弹性伸缩处理之后对服务请求的接收时间、接收规模和处理成功率;评估数据包括如下至少之一:生效时间和接收时间之间的第一大小关系、预测子流量大小和接收规模之间的第二大小关系、以及处理成功率和成功率阈值之间的第三大小关系。
15、本技术实施例,通过生效时间和接收时间之间的第一大小关系、预测子流量大小和接收规模之间的第二大小关系、以及处理成功率和成功率阈值之间的第三大小关系中的至少之一,可以保证从弹性伸缩的生效时长、是否存在资源浪费以及是否过载中的至少之一维度,更加全面准确地评估弹性伸缩的效果,进一步提高弹性伸缩的准确度。
16、根据第一方面,或者以上第一方面的任意一种实现方式,弹性伸缩规则包括如下至少之一:第一资源占用信息的获取周期、用于确定伸缩触发条件的流量裕量和流量分配比例;第二资源量包括如下至少之一:微服务组件中微服务实例的副本数量和最小运行资源量;根据评估数据,进行对微服务组件的弹性伸缩规则和/或所利用的第二资源量的调整,包括如下步骤中的至少之一:在第一大小关系为生效时间不等于接收时间、且时间差异大于时间差阈值的情况下,基于时间差异调整获取周期;在第二大小关系为预测子流量大小不等于接收规模的情况下,基于接收规模和应用对接收规模所属服务请求的接收规模,更新流量分配比例;在第三大小关系为处理成功率小于成功率阈值的情况下,减少流量裕量和/或流量分配比例;在第三大小关系为处理成功率大于或者等于成功率阈值的情况下:基于微服务组件的处理量上限和预测子流量最小值,确定微服务组件的预测副本最小数量;其中,预测子流量最小值用于指示在历史时间内微服务组件的各子流量大小中出现频率最高的子流量大小;根据预测副本最小数量和微服务组件当前接收的服务请求的规模,进行对微服务组件中微服务实例的副本数量的减少,并在减少微服务组件中微服务实例的副本数量的情况下,基于最小运行资源量和所减少的微服务的副本数量,减少微服务组件的运行资源。
17、本技术实施例中,对弹性伸缩策略进行评估,实时优化弹性伸缩策略,在保证能够承接住负载流量的同时,避免资源浪费。也就是说,本技术实施例可以提升弹性伸缩策略的有效性,以及降低无效弹性伸缩带来的资源浪费。
18、根据第一方面,或者以上第一方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区包括活跃区域和待机区域;针对部署在活跃区域的应用,执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑的步骤;在针对部署在活跃区域的应用,执行确定每个全链路拓扑中每个微服务组件的弹性伸缩规则之后,还将每个全链路拓扑中每个微服务组件的弹性伸缩规则发送至待机区域;针对部署在待机区域的应用执行分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理。
19、本技术实施例中,支持多az容灾的主备模式场景下弹性伸缩策略生成,通过当一个az的应用微服务弹性扩容时将每个全链路拓扑中每个微服务组件的弹性伸缩规则发送至待机区域,保证另外一个az的应用同步弹性扩容。这样,解决了多az部署应用,弹性伸缩和容灾切流的配合问题,避免应用过载。
20、根据第一方面,或者以上第一方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区包括活跃区域和待机区域;针对部署在每个可用区的应用,分别执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑;针对部署在活跃区域的应用,执行获取至少一种服务请求对所调用的每个微服务组件的第一资源占用信息,并将第一资源占用信息发送至待机区域;针对部署在每个可用区的应用,分别执行根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则。
21、本技术实施例中,支持多az容灾的主备模式场景下弹性伸缩策略生成,通过当主az的应用微服务弹性扩容时将第一资源占用信息发送至待机区域,保证另外一个az也即待机区域的应用进行的弹性伸缩与主az的应用的弹性扩容同步。这样,解决了多az部署应用,弹性伸缩和容灾切流的配合问题,避免应用过载。
22、根据第一方面,或者以上第一方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区均为活跃区域;针对部署在每个可用区的应用,分别执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑。
23、本技术实施例中,支持多az容灾多可用区域均承载流量的场景中,对每个az的应用均生成以及执行弹性伸缩策略。这样,解决了多az部署应用,弹性伸缩和容灾切流的配合问题,避免应用过载。
24、根据第一方面,或者以上第一方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区均为活跃区域、且包括第一区域和第二区域;针对部署在第一区域的应用,执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑的步骤;在针对部署在第一区域的应用,执行确定每个全链路拓扑中每个微服务组件的弹性伸缩规则之后,还将每个全链路拓扑中每个微服务组件的弹性伸缩规则发送至第二区域;针对部署在第二区域的应用执行分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理。
25、本技术实施例中,支持多az容灾多可用区域均承载流量的弹性伸缩策略生成,通过当一个az的应用微服务弹性扩容时将每个全链路拓扑中每个微服务组件的弹性伸缩规则发送至待机区域,保证另外一个az的应用同步弹性扩容。这样,解决了多az部署应用,弹性伸缩和容灾切流的配合问题,避免应用过载。
26、根据第一方面,或者以上第一方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区均为活跃区域、且包括第一区域和第二区域;针对部署在每个可用区的应用,分别执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑;针对部署在第一区域的应用,执行获取至少一种服务请求对所调用的每个微服务组件的第一资源占用信息,并将第一资源占用信息发送至第二区域;针对部署在每个可用区的应用,分别执行根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则。
27、本技术实施例中,支持多az容灾多可用区域均承载流量的弹性伸缩策略生成,通过当一个az的应用微服务弹性扩容时将第一资源占用信息发送至待机区域,保证另外一个az的应用进行的弹性伸缩与一个az的应用的弹性扩容同步。这样,解决了多az部署应用,弹性伸缩和容灾切流的配合问题,避免应用过载。
28、根据第一方面,或者以上第一方面的任意一种实现方式,每个可用区的应用分别接收至少一条服务请求;根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则,包括:获取多个可用区的应用接收的服务请求的总规模;根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型、总规模以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则。
29、本技术实施例中,多az容灾多可用区域均承载流量的弹性伸缩策略生成的场景中,基于多个可用区的应用接收的服务请求的总规模生成弹性伸缩规则,可以保证该场景下弹性伸缩规则的准确度,进一步提高弹性伸缩的准确度。
30、第二方面,本技术实施例提供一种应用弹性伸缩系统,该系统包括:拓扑探测模块,用于基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑;至少一个全链路拓扑分别用于指示多种服务请求中的一种服务请求对应用的各微服务组件的调用路径;流量感知模块,用于获取至少一种服务请求对所调用的每个微服务组件的第一资源占用信息;策略确定模块,用于根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则;其中,每个微服务组件的预设负载模型用于指示微服务组件的伸缩量上限和处理服务请求的处理量上限,伸缩量上限用于指示微服务组件支持处理量上限所利用的运行资源量;弹性伸缩模块,用于分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理。
31、根据第二方面,拓扑探测模块,具体用于:获取应用处理至少一种服务请求的过程中,每种服务请求对每个微服务组件的调用信息,得到服务请求所调用的各微服务组件间的调用关系;分别根据每种服务请求对应的调用关系,构建以调用关系中的微服务组件为节点、以及以调用关系为边的有向无环图,得到应用的至少一个全链路拓扑。
32、根据第二方面,或者以上第二方面的任意一种实现方式,在每种服务请求下每个微服务组件的第一资源占用信息包括如下至少之一:当前子流量大小和预测子流量大小;其中,当前子流量大小用于指示微服务组件当前接收的服务请求的规模;预测子流量大小用于指示应用接收的服务请求中计划分配给微服务组件的服务请求的规模。
33、根据第二方面,或者以上第二方面的任意一种实现方式,弹性伸缩规则至少包括每个全链路拓扑中每个微服务组件的预测副本扩展数量、伸缩量上限以及流量阈值;策略确定模块,具体用于针对每个全链路拓扑,执行:基于全链路拓扑对应的服务请求和当前时间,确定在未来时间内全链路拓扑中每个微服务组件的预测子流量最大值;根据全链路拓扑中每个微服务组件的预测子流量最大值、以及全链路拓扑中每个微服务组件的预设负载模型所指示的伸缩量上限,确定全链路拓扑中每个微服务组件的预测副本扩展数量;将全链路拓扑中输入相同以及输出相同的至少一个微服务组件,确定为全链路拓扑的一个处理层,得到全链路拓扑的多个处理层;针对全链路拓扑的多个处理层中的每个处理层,执行如下步骤:基于处理层中每个微服务组件的第一资源占用信息、和处理层的上一级处理层中每个微服务组件的第一资源占用信息、以及预设流量裕量,确定处理层中每个微服务组件的流量阈值。
34、根据第二方面,或者以上第二方面的任意一种实现方式,弹性伸缩模块,具体用于针对每个全链路拓扑,执行:在全链路拓扑的每个处理层中任一微服务组件的预设负载模型所指示的处理量上限,大于任一微服务组件的流量阈值的情况下,确定全链路拓扑为目标拓扑;以目标拓扑中每个微服务组件的弹性伸缩规则中的预测副本扩展数量不超过弹性伸缩规则中伸缩量上限为约束,确定目标拓扑中每个微服务组件的预测副本扩展数量和运行扩展后的微服务组件所需的运行资源量;根据目标拓扑中每个微服务组件的目标副本扩展数量和运行扩展后的微服务组件所需的运行资源量,调整全链路拓扑中每个微服务组件中微服务实例的副本数量和运行资源量。
35、根据第二方面,或者以上第二方面的任意一种实现方式,系统还包括伸缩评估模块,用于针对每个全链路拓扑中的每个微服务组件分别执行:获取对微服务组件执行微服务组件的弹性伸缩规则产生的伸缩性能指标、以及微服务组件在弹性伸缩处理之后处理服务请求的处理数据;基于伸缩性能数据和处理数据,或者基于处理数据,评估微服务组件的弹性伸缩性能,得到评估数据;根据评估数据,进行对微服务组件的弹性伸缩规则和/或所利用的第二资源量的调整。
36、根据第二方面,或者以上第二方面的任意一种实现方式,伸缩性能指标包括如下至少之一:弹性伸缩规则的生效时间和预测子流量大小;其中,预测子流量大小用于指示应用接收的服务请求中计划分配给微服务组件的服务请求的规模;处理数据包括如下至少之一:微服务组件在弹性伸缩处理之后对服务请求的接收时间、接收规模和处理成功率;评估数据包括如下至少之一:生效时间和接收时间之间的第一大小关系、预测子流量大小和接收规模之间的第二大小关系、以及处理成功率和成功率阈值之间的第三大小关系。
37、根据第二方面,或者以上第二方面的任意一种实现方式,弹性伸缩规则包括如下至少之一:第一资源占用信息的获取周期、用于确定伸缩触发条件的流量裕量和流量分配比例;第二资源量包括如下至少之一:微服务组件中微服务实例的副本数量和最小运行资源量;伸缩评估模块,用于执行如下步骤中的至少之一:在第一大小关系为生效时间不等于接收时间、且时间差异大于时间差阈值的情况下,基于时间差异调整获取周期;在第二大小关系为预测子流量大小不等于接收规模的情况下,基于接收规模和应用对接收规模所属服务请求的接收规模,更新流量分配比例;在第三大小关系为处理成功率小于成功率阈值的情况下,减少流量裕量和/或流量分配比例;在第三大小关系为处理成功率大于或者等于成功率阈值的情况下:基于微服务组件的处理量上限和预测子流量最小值,确定微服务组件的预测副本最小数量;其中,预测子流量最小值用于指示在历史时间内微服务组件的各子流量大小中出现频率最高的子流量大小;根据预测副本最小数量和微服务组件当前接收的服务请求的规模,进行对微服务组件中微服务实例的副本数量的减少,并在减少微服务组件中微服务实例的副本数量的情况下,基于最小运行资源量和所减少的微服务的副本数量,减少微服务组件的运行资源。
38、根据第二方面,或者以上第二方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区包括活跃区域和待机区域;拓扑探测模块,具体用于针对部署在活跃区域的应用,执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑的步骤;策略确定模块,还用于在针对部署在活跃区域的应用,执行确定每个全链路拓扑中每个微服务组件的弹性伸缩规则之后,将每个全链路拓扑中每个微服务组件的弹性伸缩规则发送至待机区域;弹性伸缩模块,具体用于针对部署在待机区域的应用执行分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理。
39、根据第二方面,或者以上第二方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区包括活跃区域和待机区域;拓扑探测模块,具体用于针对部署在每个可用区的应用,分别执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑;流量感知模块,具体用于针对部署在活跃区域的应用,执行获取至少一种服务请求对所调用的每个微服务组件的第一资源占用信息,并将第一资源占用信息发送至待机区域;策略确定模块,具体用于针对部署在每个可用区的应用,分别执行根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则。
40、根据第二方面,或者以上第二方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区均为活跃区域;拓扑探测模块,具体用于针对部署在每个可用区的应用,分别执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑。
41、根据第二方面,或者以上第二方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区均为活跃区域、且包括第一区域和第二区域;拓扑探测模块,具体用于针对部署在第一区域的应用,执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑的步骤;策略确定模块,还用于在针对部署在第一区域的应用,执行确定每个全链路拓扑中每个微服务组件的弹性伸缩规则之后,还将每个全链路拓扑中每个微服务组件的弹性伸缩规则发送至第二区域;弹性伸缩模块,具体用于针对部署在第二区域的应用执行分别根据每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对每个全链路拓扑中每个微服务组件的弹性伸缩处理。
42、根据第二方面,或者以上第二方面的任意一种实现方式,应用部署在多个可用区中,其中,多个可用区中的每个可用区部署一个应用;多个可用区均为活跃区域、且包括第一区域和第二区域;
43、拓扑探测模块,具体用于针对部署在每个可用区的应用,分别执行基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定应用的至少一个全链路拓扑;流量感知模块,具体用于针对部署在第一区域的应用,执行获取至少一种服务请求对所调用的每个微服务组件的第一资源占用信息,并将第一资源占用信息发送至第二区域;策略确定模块,具体用于针对部署在每个可用区的应用,分别执行根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则。
44、根据第二方面,或者以上第二方面的任意一种实现方式,每个可用区的应用分别接收至少一条服务请求;策略确定模块,具体用于:获取多个可用区的应用接收的服务请求的总规模;根据每个全链路拓扑、每个全链路拓扑中每个微服务组件的预设负载模型、总规模以及第一资源占用信息,确定每个全链路拓扑中每个微服务组件的弹性伸缩规则。
1.一种应用弹性伸缩方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述基于包含多个微服务组件的应用中每个微服务组件的调用关系,确定所述应用的至少一个全链路拓扑,包括:
3.根据权利要求1或2所述的方法,其特征在于,在每种服务请求下所述每个微服务组件的第一资源占用信息包括如下至少之一:当前子流量大小和预测子流量大小;
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述弹性伸缩规则至少包括所述每个全链路拓扑中每个微服务组件的预测副本扩展数量、所述伸缩量上限以及流量阈值;
5.根据权利要求4所述的方法,其特征在于,所述分别根据所述每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对所述每个全链路拓扑中每个微服务组件的弹性伸缩处理,包括针对每个全链路拓扑,执行如下步骤:
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述分别根据所述每个全链路拓扑中每个微服务组件的弹性伸缩规则,进行对所述每个全链路拓扑中每个微服务组件的弹性伸缩处理之后,所述方法还包括针对每个全链路拓扑中的每个微服务组件分别执行如下步骤:
7.根据权利要求6所述的方法,其特征在于,所述伸缩性能指标包括如下至少之一:所述弹性伸缩规则的生效时间和预测子流量大小;其中,所述预测子流量大小用于指示所述应用接收的所述服务请求中计划分配给所述微服务组件的服务请求的规模;
8.根据权利要求7所述的方法,其特征在于,所述弹性伸缩规则包括如下至少之一:所述第一资源占用信息的获取周期、用于确定伸缩触发条件的流量裕量和流量分配比例;所述第二资源量包括如下至少之一:所述微服务组件中微服务实例的副本数量和最小运行资源量;
9.根据权利要求1-8中任一项所述的方法,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区包括活跃区域和待机区域;
10.根据权利要求1-8中任一项所述的方法,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区包括活跃区域和待机区域;
11.根据权利要求1-8中任一项所述的方法,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区均为活跃区域;
12.根据权利要求1-8中任一项所述的方法,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区均为活跃区域、且包括第一区域和第二区域;
13.根据权利要求1-8中任一项所述的方法,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区均为活跃区域、且包括第一区域和第二区域;
14.根据权利要求11-13中任一项所述的方法,其特征在于,所述每个可用区的所述应用分别接收至少一条服务请求;
15.一种应用弹性伸缩系统,其特征在于,所述系统包括:
16.根据权利要求15所述的系统,其特征在于,所述拓扑探测模块,具体用于:
17.根据权利要求15或16所述的系统,其特征在于,在每种服务请求下所述每个微服务组件的第一资源占用信息包括如下至少之一:当前子流量大小和预测子流量大小;
18.根据权利要求15-17中任一项所述的系统,其特征在于,所述弹性伸缩规则至少包括所述每个全链路拓扑中每个微服务组件的预测副本扩展数量、所述伸缩量上限以及流量阈值;
19.根据权利要求18所述的系统,其特征在于,所述弹性伸缩模块,具体用于针对每个全链路拓扑,执行:
20.根据权利要求15-19中任一项所述的系统,其特征在于,所述系统还包括伸缩评估模块,用于针对每个全链路拓扑中的每个微服务组件分别执行:
21.根据权利要求20所述的系统,其特征在于,所述伸缩性能指标包括如下至少之一:所述弹性伸缩规则的生效时间和预测子流量大小;其中,所述预测子流量大小用于指示所述应用接收的所述服务请求中计划分配给所述微服务组件的服务请求的规模;
22.根据权利要求21所述的系统,其特征在于,所述弹性伸缩规则包括如下至少之一:所述第一资源占用信息的获取周期、用于确定伸缩触发条件的流量裕量和流量分配比例;所述第二资源量包括如下至少之一:所述微服务组件中微服务实例的副本数量和最小运行资源量;
23.根据权利要求15-22中任一项所述的系统,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区包括活跃区域和待机区域;
24.根据权利要求15-22中任一项所述的系统,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区包括活跃区域和待机区域;
25.根据权利要求15-22中任一项所述的系统,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区均为活跃区域;
26.根据权利要求15-22中任一项所述的系统,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区均为活跃区域、且包括第一区域和第二区域;
27.根据权利要求15-22中任一项所述的系统,其特征在于,所述应用部署在多个可用区中,其中,所述多个可用区中的每个可用区部署一个所述应用;所述多个可用区均为活跃区域、且包括第一区域和第二区域;
28.根据权利要求25-27中任一项所述的系统,其特征在于,所述每个可用区的所述应用分别接收至少一条服务请求;
29.一种电子设备,其特征在于,包括:
30.一种计算机可读存储介质,其特征在于,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至14中任意一项所述的方法。
31.一种芯片,其特征在于,包括一个或多个接口电路和一个或多个处理器;所述接口电路用于从电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,使得所述电子设备执行权利要求1至14中任意一项所述的方法。
32.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被电子设备执行时,使得所述电子设备执行权利要求1至14中任意一项所述的方法。
