微服务的扩缩容方法、系统、服务器及存储介质与流程

未命名 09-20 阅读:88 评论:0


1.本技术可用于人工智能领域,尤其涉及一种微服务的扩缩容方法、系统、服务器及存储介质。


背景技术:

2.随着互联网技术的发展,在云平台中基于微服务架构开发部署业务系统逐渐成为潮流。尤其在金融支付场景中,大部分应用是基于微服务架构开发的。该微服务架构与面向服务架构(service-oriented-architecture,soa)类似,其核心是将一个复杂的单体架构分解为多个可独立部署维护的服务(即上述支付服务),凭借其灵活、可伸缩等特性,具有产品快速开发、独立扩容、弹性伸缩等优势。当用户请求调用一个微服务实例时,微服务实例需要对该请求进行处理并给予返回。但是,在遭遇分布式拒绝服务攻击(distributed denial of service,ddos)或者遇到金融支付场景的秒杀活动时,请求量容易猛增。如果请求量过大,那么中央处理器(central processing unit,cpu)、内存等资源的占用率容易过大,最终可能导致微服务实例不可用。
3.在请求量过大的情况下,为避免出现微服务实例不可用的现象,现有技术一般通过手动的方式进行微服务实例的扩展,反之,则进行微服务实例的减少。
4.但是,金融支付场景具有毫秒级的响应速率需求,而手动方式有一定的时间延迟,因此现有技术存在响应速度过慢,无法满足金融支付场景的响应速率需求的问题。


技术实现要素:

5.本技术提供了一种微服务的扩缩容方法、系统、服务器及存储介质,用以解决现有技术存在的响应时间长,无法满足金融支付场景的响应速率需求的技术问题。
6.根据本技术的第一方面,提供了一种微服务的扩缩容方法,应用于微服务的扩缩容系统,所述微服务的扩缩容系统包括:依次连接的kubernetes系统、配置生成模块和服务网格;其中,所述服务网格包含控制平面和数据平面;所述方法包括:
7.所述配置生成模块从所述服务网格中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对所述监控数据进行特征提取和特征预测分析,得到预测结果;其中,所述目标微服务为容器化的支付服务;所述预测结果包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息;
8.所述配置生成模块在所述扩缩类型为扩容/缩容类型时,向所述kubernetes系统发送携带所述待扩缩的微服务实例的数量且与所述扩缩类型对应的指令;
9.所述kubernetes系统响应于所述指令,启用/停止所述待扩缩的微服务实例;
10.所述配置生成模块在所述kubernetes系统响应完成时,通过所述控制平面向所述数据平面下发流量分配信息;
11.所述数据平面根据所述流量分配信息实现不同微服务实例之间的调用。
12.可选地,所述预先训练好的神经网络模型包括训练好的特征提取模块和训练好的
特征预测分析模块;
13.所述利用预先训练好的神经网络模型对所述监控数据进行特征提取和特征预测分析,得到预测结果,包括:
14.利用所述训练好的特征提取模块,从所述监控数据中提取出目标指标的特征值;所述目标指标包括以下至少之一的指标:目标宿主机的cpu使用率、目标宿主机的内存使用率、所述目标微服务的并发数;其中,所述目标宿主机为所述已有微服务实例所在的容器组所运行于的宿主机;
15.基于所述目标指标的预设阈值,利用所述训练好的特征预测分析模块对所述目标指标的特征值进行特征预测分析,得到所述预测结果。
16.可选地,所述神经网络模型的训练过程,包括:
17.获取用于训练由特征提取模块和特征预测分析模块构成的神经网络模型的训练样本集;所述训练样本集包括监控样本和所述监控样本的标签;所述监控样本的标签包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息;
18.基于所述训练样本集,采用机器学习方法对所述神经网络模型进行训练,在训练结束后,得到训练好的模型参数,并将所述训练好的模型参数对应的神经网络模型作为预先训练好的神经网络模型。
19.可选地,所述机器学习方法包括反向传播算法;
20.所述基于所述训练样本集,采用机器学习方法对所述神经网络模型进行训练,包括:
21.基于所述训练样本集,对所述神经网络模型进行训练,并在训练过程中根据预定义的误差函数计算所述神经网络模型的误差;
22.根据所述误差,采用所述反向传播算法更新所述神经网络模型的参数。
23.可选地,所述数据平面包含多个网络代理;
24.在所述配置生成模块从所述服务网格中获取针对目标微服务配置的已有微服务实例的监控数据之前,所述方法还包括:
25.所述控制平面向所述多个网络代理周期性的下发监控指令;
26.每个所述网络代理均响应于所述监控指令,针对目标微服务配置的与所述网络代理对应的已有微服务实例进行监控,得到流量数据;
27.所述控制平面收集所有所述网络代理上传的所述流量数据,得到所述监控数据,并将所述监控数据返回给所述控制平面。
28.可选地,在所述利用所述训练好的特征提取模块,从所述监控数据中提取出目标指标的特征值之后,所述方法还包括:
29.利用所述训练好的特征提取模块,从所述监控数据中提取出所述目标微服务的名称;
30.将所述目标微服务的名称添加到所述指令中。
31.可选地,所述kubernetes系统响应于所述指令,启用/停止所述待扩缩的微服务实例,包括:
32.所述kubernetes系统从所述指令中解析出所述目标微服务的名称和所述待扩缩的微服务实例的数量;
33.所述kubernetes系统根据所述目标微服务的名称和所述待扩缩的微服务实例的数量,在所述目标微服务中启用/停止所述待扩缩的微服务实例。
34.根据本技术的第二方面,提供了一种微服务的扩缩容系统,包括:依次连接的kubernetes系统、配置生成模块和服务网格;其中,所述服务网格包含控制平面和数据平面;
35.所述配置生成模块从所述服务网格中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对所述监控数据进行特征提取和特征预测分析,得到预测结果;其中,所述目标微服务为容器化的支付服务;所述预测结果包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息;
36.所述配置生成模块在所述扩缩类型为扩容/缩容类型时,向所述kubernetes系统发送携带所述待扩缩的微服务实例的数量且与所述扩缩类型对应的指令;
37.所述kubernetes系统响应于所述指令,启用/停止所述待扩缩的微服务实例;
38.所述配置生成模块在所述kubernetes系统响应完成时,通过所述控制平面向所述数据平面下发流量分配信息;
39.所述数据平面根据所述流量分配信息实现不同微服务实例之间的调用。
40.根据本技术的第三方面,提供了一种服务器,包括:至少一个处理器和存储器;
41.所述存储器存储计算机执行指令;
42.所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面所述的微服务的扩缩容方法。
43.根据本技术的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上第一方面所述的微服务的扩缩容方法。
44.根据本技术的第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面所述的微服务的扩缩容方法。
45.本技术提供的一种微服务的扩缩容方法,应用于微服务的扩缩容系统,微服务的扩缩容系统包括:依次连接的kubernetes系统、配置生成模块和服务网格;其中,服务网格包含控制平面和数据平面;方法包括:配置生成模块从服务网格中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对监控数据进行特征提取和特征预测分析,得到预测结果;其中,目标微服务为容器化的支付服务;预测结果包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息;配置生成模块在扩缩类型为扩容/缩容类型时,向kubernetes系统发送携带待扩缩的微服务实例的数量且与扩缩类型对应的指令;kubernetes系统响应于指令,启用/停止待扩缩的微服务实例;配置生成模块在kubernetes系统响应完成时,通过控制平面向数据平面下发流量分配信息;数据平面根据流量分配信息实现不同微服务实例之间的调用。
46.本技术引入预先训练好的神经网络模型作为控制方式,能够根据针对目标微服务配置的已有微服务实例的监控数据,快速得到预测结果,进而通过配置生成模块与kubernetes系统、控制平面之间的交互,智能化的实现微服务实例的快速扩缩,提高了微服务的扩缩容效率,进而提高了响应速率,满足金融支付场景的响应速率需求。
47.应当理解,本部分所描述的内容并非旨在标识本技术的实施例的关键或重要特
征,也不用于限制本技术的范围。本技术的其它特征将通过以下的说明书而变得容易理解。
附图说明
48.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
49.图1为本技术实施例提供的一种微服务的扩缩容系统的结构示意图;
50.图2为本技术实施例提供的另一种微服务的扩缩容系统的结构示意图;
51.图3为本技术实施例提供的一种微服务的扩缩容方法的流程示意图;
52.图4为本技术实施例提供的另一种微服务的扩缩容方法的流程示意图;
53.图5为本技术实施例提供的一种服务器的结构示意图。
54.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
55.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。
56.需要说明的是,本技术所涉及的用户信息和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
57.也就是说,本技术的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
58.需要注意的是,本技术提供的微服务的扩缩容方法、系统、服务器及存储介质可用于人工智能领域,也可用于除人工智能领域之外的任意领域,本技术提供的微服务的扩缩容方法、系统、服务器及存储介质的应用领域不做限定。
59.在金融支付场景中,服务响应必须保持在毫秒级,而手动进行微服务实例扩缩的方式无法满足金融支付场景的要求,因此行业亟需一种更加迅速、更加智能的服务扩缩机制。
60.基于此,本技术提供一种可应用于人工智能领域,用于提高响应速率的微服务的扩缩容方法、系统、服务器及存储介质。
61.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
62.实施例1:
63.图1为本技术实施例提供的一种微服务的扩缩容系统的结构示意图。如图1所示,该微服务的扩缩容系统包括依次连接的kubernetes系统1、配置生成模块2和服务网格3;其中,服务网格3包含控制平面31和数据平面32。
64.应理解,扩缩容是指在云计算环境中,可以根据用户的需要来扩展或减少微服务实例的数量,以此来提高资源利用率。
65.在本技术实施例中,kubernetes系统1或称为kubernetes容器调度系统。微服务实例在本技术实施例中以容器的方式进行部署,并且由kubernetes系统负责控制其生命周期。
66.具体的,kubernetes系统1是用于自动化部署和扩展容器化应用程序的系统,将组成应用程序的容器组合成逻辑单元,并提供控制平面来实现这些逻辑单元在不同物理资源中的部署、启动、停止。除此之外,kubernetes系统1还提供一个注册中心来实现服务发现机制。
67.上述注册中心,在服务发现过程中用于记录微服务实例与服务的对应关系,具有服务发现与注册、服务配置管理、监控检查等功能。其中,针对服务发现与注册功能,本技术实施例进行如下分析:一个微服务应用中存在大量对外提供相同功能的微服务实例,一组对外提供相同功能的实例往往被称为一种服务,微服务的调用者(或称为客户端)不需要关心请求具体发往了哪个微服务实例,只需要关心调用了哪一个服务。因此,每当新增加一个微服务实例时,需要将其注册到对应的服务下,这个过程称为服务发现与注册。
68.在本技术实施例中,服务网格3与kubernetes系统1集成部署,即在每个kuberneetes系统的调度单元中部署网络代理作为数据平面32,部署控制平面31来收集微服务实例的监控数据。
69.具体的,服务网格3是一个用于处理服务间通信的基础设施层,负责在云原生应用复杂的服务拓扑中实现可靠的请求传递。在具体应用中,服务网格3被实现为控制平面31和数据平面32。其中控制平面31负责服务发现以及流量路由配置(即下述流量分配信息的配置,或称为路由配置),这些配置被下发到数据平面32对应的网络代理中,同时控制平面31还负责收集对应网络代理获取到的微服务实例的监控数据。数据平面32为一组轻量的网络代理,这些网络代理与微服务实例部署在一起,将拦截所有发往微服务实例以及微服务实例发出的流量,并根据元数据完成流量的转发。
70.配置生成模块2从服务网格3中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对监控数据进行特征提取和特征预测分析,得到预测结果;其中,目标微服务为容器化的支付服务;预测结果包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息。
71.在本技术实施例中,由于本实施例解决的是在金融支付场景下银行系统/金融系统能够快速响应的问题,因此目标微服务是指支付服务。此外,目标微服务还可以指非支付类型的其他服务,本技术实施例对目标微服务的类型不做具体限定。
72.上述目标微服务为容器化的支付服务,针对个人而言,支付服务包括但不限于:个人转账支付服务、信用卡还款服务等;针对商家而言,支付服务包括但不限于:商家支付代收服务、海外支付服务等。容器是一个类似虚拟机的虚拟化资源隔离单元,能为应用程序(以下简称为应用)运行提供最小的运行时资源,常被用来部署微服务实例。
73.上述微服务的扩缩容系统是基于kuberneetes系统部署的支付微服务系统,并且支付微服务系统中的支付服务可以为支付处理微服务,支付服务对应的微服务实例或称为支付处理微服务实例(简称为微服务实例)。本技术实施例在支付微服务系统中部署服务网
格3包含的数据平面32以及控制平面31,还在支付微服务系统中部署神经网络模型,以使该神经网络模型所处的配置生成模块2与kubernetes系统1以及服务网格3集成,神经网络模型实时监控服务网格3的控制平面31从数据平面32获取到的监控数据。
74.在一个支付类的应用(即支付软件)中,所有的支付服务用于构成一组服务,即构成微服务架构。也就是说,微服务架构采用一组服务的方式来构建一个应用,该应用或称为微服务应用。在该微服务架构中,服务独立部署在不同的进程中,不同的服务通过一些轻量级交互机制来通信,例如远程过程调用(remote procedure call,rpc)等,服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服务可以采用不同的编程语言来实现,由独立的团队来维护。
75.在本技术实施例中,扩缩类型包括以下三种:扩容类型、缩容类型和不扩不缩类型。在扩缩类型为不扩不缩类型时,待扩缩的微服务实例的数量为0,除此之外,在扩缩类型为扩容/缩容类型时,待扩缩的微服务实例的数量为非零数值。上述流量分配信息由预先训练好的神经网络模型根据训练过程中学习到的规律对当前的监控数据进行分析得到。
76.配置生成模块2在扩缩类型为扩容/缩容类型时,向kubernetes系统1发送携带待扩缩的微服务实例的数量且与扩缩类型对应的指令。
77.应理解,扩容类型对应第一标识的第一指令,缩容类型对应第二标识的第二指令,不扩不缩类型对应第三标识的第三指令。可选地,第一指令、第二指令个第三指令均为预定义命令。
78.在本技术实施例中,预先训练好的神经网络模型与kubernetes系统集成设置。集成设置,可以理解为无需人为参与,神经网络模型与kubernetes系统之间能够实现智能化的流程。
79.kubernetes系统1响应于指令,启用/停止待扩缩的微服务实例。
80.配置生成模块2在kubernetes系统1响应完成时,通过控制平面31向数据平面32下发流量分配信息。
81.在本技术实施例中,预先训练好的神经网络模型与控制平面31集成设置。集成设置,可以理解为无需人为参与,神经网络模型与控制平面31之间能够实现智能化的流程。
82.数据平面32根据流量分配信息实现不同微服务实例之间的调用。
83.本技术实施例中的配置生成模块,利用服务网格收集到的当前的监控数据来实现自动化控制微服务实例的生命周期。例如,目标微服务的已有微服务实例有10个,在扩缩类型为扩容类型且待扩缩的微服务实例的数量为3个时,配置生成模块能够自动化控制已有微服务实例保持启动,控制kubernetes系统在目标微服务中启动3个新的微服务实例。
84.在本技术实施例中,用于提供预先训练好的神经网络模型的配置生成模块2与kubernetes系统1以及服务网格3进行集成设置,通过控制kubernetes系统1来实现微服务实例的快速扩缩,通过控制服务网格3来实现配置自动生成与下发。
85.如图2所示,数据平面32包含多个网络代理321。网络代理321是服务网格代理的简称,针对一个目标微服务,可以有多个网络代理321,并且每个网络代理321均对应有一个目标微服务的业务逻辑。例如,目标微服务a有两个网络代理321,并且每个网络代理321均对应有一个目标微服务a的业务逻辑。
86.本技术实施例提供的微服务的扩缩容系统,能够在金融支付场景中提供微服务自
动扩缩实现方案。与现有技术通过手动方式在控制平面下发策略的方式相比,本技术实施例通过引入预先训练好的神经网络模型,能够根据针对目标微服务配置的已有微服务实例的监控数据,快速得到预测结果,进而通过配置生成模块与kubernetes系统、控制平面之间的交互,自动/智能化的实现微服务实例的快速扩缩,提高了微服务的扩缩容效率,保证响应的及时性。
87.在上述实施例的基础上,下面结合几个具体的实施例对本技术技术方案进行更详细的描述。
88.实施例2:
89.图3为本技术实施例提供的一种微服务的扩缩容方法的流程示意图。该微服务的扩缩容方法应用于实施例1中的微服务的扩缩容系统,微服务的扩缩容系统包括:依次连接的kubernetes系统、配置生成模块和服务网格;其中,服务网格包含控制平面和数据平面;如图3所示,本实施例的方法,包括:
90.s10、配置生成模块从服务网格中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对监控数据进行特征提取和特征预测分析,得到预测结果;其中,目标微服务为容器化的支付服务;预测结果包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息。
91.在本技术实施例中,预先训练好的神经网络模型,其结构主要包括训练好的特征提取模块和训练好的特征预测分析模块。该预先训练好的神经网络模型在利用训练好的特征提取模块提取到各目标指标的特征值的基础上,通过训练好的特征预测分析模块,一方面能够对各目标指标的特征值和对应的预设阈值进行判断,进而确定扩缩类型;另一方面能够基于各目标指标的特征值进行特征分析,进而确定要扩展/缩少的微服务实例的数量以及分发策略,其中,分发策略是指上述流量分配信息,具体是指各微服务实例对应的流量分配情况,其中,此处的微服务实例包括已有微服务实例和待扩缩的微服务实例。
92.s20、配置生成模块在扩缩类型为扩容/缩容类型时,向kubernetes系统发送携带待扩缩的微服务实例的数量且与扩缩类型对应的指令。
93.s30、kubernetes系统响应于指令,启用/停止待扩缩的微服务实例。
94.s40、配置生成模块在kubernetes系统响应完成时,通过控制平面向数据平面下发流量分配信息。
95.在得到预测结果之后的后续流程中,预先训练好的神经网络模型先通过控制kubernetes系统实现待扩缩的微服务实例的启动/停止,后通过控制服务网格实现分发策略的下发。
96.s50、数据平面根据流量分配信息实现不同微服务实例之间的调用。
97.本技术实施例提供的微服务的扩缩容方法,是一种智能化的微服务自动扩缩实现方案,该方案利用kubernetes系统部署微服务实例,利用服务网格实现服务发现,当微服务实例的访问压力过大时,预先训练好的神经网络模型通过kubernetes系统启动新的微服务实例,通过服务网格自动实现微服务实例的注册发现并通过服务网格中的控制平面下发相关的流量路由配置(即上述流量分配信息);反之,当微服务实例的访问压力减小时,预先训练好的神经网络模型通过kubernetes系统删除(即上述停止)微服务实例,并通过服务网格中的控制平面删除相应的流量路由配置,以此来实现智能化的微服务快速扩缩。
98.一种可能的实现方式中,预先训练好的神经网络模型包括训练好的特征提取模块和训练好的特征预测分析模块。
99.在步骤s10中,利用预先训练好的神经网络模型对监控数据进行特征提取和特征预测分析,得到预测结果,包括:
100.s101、利用训练好的特征提取模块,从监控数据中提取出目标指标的特征值;目标指标包括以下至少之一的指标:目标宿主机的cpu使用率、目标宿主机的内存使用率、目标微服务的并发数;其中,目标宿主机为已有微服务实例所在的容器组所运行于的宿主机。
101.s102、基于目标指标的预设阈值,利用训练好的特征预测分析模块对目标指标的特征值进行特征预测分析,得到预测结果。
102.在本技术实施例中,训练好的特征预测分析模块采用包含预定义行为的特征预测分析策略,在该特征预测分析策略中,预定义行为包括:扩展、缩少和无动作,分别对应扩缩类型中的扩容类型、缩容类型和不扩不缩类型。本技术实施例针对各目标指标,均可以设置对应的两个预设阈值(或称为既定阈值),其中一个预设阈值为上限,另一个预设阈值为下限。
103.训练好的特征预测分析模块,可能在任一目标指标大于其对应的上限时,确定扩缩类型为扩容类型,也可能在所有目标指标均大于其对应的上限时,确定扩缩类型为扩容类型;反之,可能在任一目标指标小于其对应的下限时,确定扩缩类型为缩容类型,也可能在所有目标指标均小于其对应的下限时,确定扩缩类型为扩容类型。综上,本技术实施例对特征预测分析模块能够分析到的规律不做任何限制。
104.本技术实施例对预先训练好的神经网络模型的结构进行了细化,并且对结构中各部分的功能进行了说明,通过该结构的神经网络模型,能够保证预测结果的准确性。
105.一种可能的实现方式中,在步骤s101、利用训练好的特征提取模块,从监控数据中提取出目标指标的特征值之后,方法还包括:
106.s103、利用训练好的特征提取模块,从监控数据中提取出目标微服务的名称。
107.s104、将目标微服务的名称添加到指令中。
108.在本技术实施例中,目标微服务的名称或称为服务名称。当目标微服务的数量为多个时,可以针对各目标微服务分别设置对应的神经网络模型,也可以针对多个目标微服务设置一个神经网络模型。
109.当一个神经网络模型处理多个目标微服务的扩缩时,需要得知获取到的监控数据属于哪一目标微服务,进而针对这一目标微服务实现针对性的扩缩。针对控制平面而言,它针对一类微服务有一个统一的策略模板,然后神经网络交互的是该策略模板,然后神经网络针对每一类微服务均更新对应的策略模板。因此在该情况下,本技术实施例中的配置生成模块将目标微服务的名称和该目标微服务的预测结果对应关联,进而向kubernetes系统发送的指令中还携带目标微服务的名称,进而可以实现不同目标微服务的有效扩缩。
110.例如,在遇到秒杀活动或其他活动时,客户端高并发地向支付微服务系统发送支付请求,当cpu使用率、内存使用率以及支付微服务的并发数等资源使用率超过阈值后,神经网络根据服务名称以及预定义命令调用kubernetes系统来启动支付处理微服务实例,支付处理微服务实例自动注册到服务网格中的数据平面,之后神经网络模型调用预定义命令调用服务网格的数据平面下发流量分配信息。
111.当活动结束后,客户端减少了发往支付微服务系统的并发数,当cpu使用率、内存使用率以及并发数等资源使用率低于阈值后神经网络根据服务名称以及预定义命令调用kubernetes系统来停止支付处理微服务中的部分微服务实例,之后神经网络模型调用预定义命令调用服务网格的数据平面删除/更新流量分配信息。因此,支付处理微服务实例在本技术实施例中能够实现自动扩缩。
112.在基于kubernetes系统部署的支付微服务系统中,本技术实施例在引入神经网络模型作为控制方式后,能够预警式地以秒级速度来实现支付处理微服务实例的扩缩,并且全程自动化,无需人工进行额外干预,在金融支付场景下提高了响应速度,能够满足金融支付场景的响应速率需求。
113.一种可能的实现方式中,步骤s30、kubernetes系统响应于指令,启用/停止待扩缩的微服务实例,包括:
114.步骤s301、kubernetes系统从指令中解析出目标微服务的名称和待扩缩的微服务实例的数量。
115.步骤s302、kubernetes系统根据目标微服务的名称和待扩缩的微服务实例的数量,在目标微服务中启用/停止待扩缩的微服务实例。
116.在本技术实施例中,配置生成模块具有决策功能,kubernetes系统具有执行功能,通过kubernetes系统的上述具体操作,能够实现目标微服务的快速扩缩。
117.一种可能的实现方式中,数据平面包含多个网络代理。在步骤s10、配置生成模块从服务网格中获取针对目标微服务配置的已有微服务实例的监控数据之前,方法还包括:
118.s60、控制平面向多个网络代理周期性的下发监控指令。
119.s70、每个网络代理均响应于监控指令,针对目标微服务配置的与网络代理对应的已有微服务实例进行监控,得到流量数据。
120.s80、控制平面收集所有网络代理上传的流量数据,得到监控数据,并将监控数据返回给控制平面。
121.在本技术实施例中,由于控制平面周期性的向各网络代理下发监控指令,因此控制平面在周期性收集监控数据的基础上,能够周期性的向配置生成模块发送监控数据,实现智能化流程,无需人为参与,及时更改扩缩类型、待扩缩的微服务实例的数量或流量分配信息,提高了响应速率,进而提高用户体验。
122.实施例3:
123.图4为本技术实施例提供的另一种微服务的扩缩容方法的流程示意图。在图3所示实施例的基础上,本实施例重点对神经网络模型的训练过程进行细化。如图4所示,神经网络模型的训练过程,包括以下步骤:
124.s41、获取用于训练由特征提取模块和特征预测分析模块构成的神经网络模型的训练样本集;训练样本集包括监控样本和监控样本的标签;监控样本的标签包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息。
125.在本技术实施例中,监控样本或称为训练样本,是指历史的监控数据。本技术实施例利用服务网格的控制平面向数据平面下发收集策略(或称为收集机制),数据平面按照该收集策略收集胜场中的历史的监控数据,并将其作为训练样本。
126.s42、基于训练样本集,采用机器学习方法对神经网络模型进行训练,在训练结束
后,得到训练好的模型参数,并将训练好的模型参数对应的神经网络模型作为预先训练好的神经网络模型。
127.在本技术实施例中,步骤s41~步骤s42是步骤s10的前置流程,即步骤s41~步骤s42为步骤s10的准备步骤。在神经网络模型的训练过程中,本实施例可以从服务网格中获取历史的监控数据,并基于历史的监控数据完成神经网络模型的训练。本实施例可以通过kubernetes系统获取与历史的监控数据对应的配置数据,其中,历史的监控数据作为监控样本,对应的配置数据作为监控样本的标签。由此可见,服务网格存在服务发现机制以及监控数据的收集机制。
128.本技术实施例先设置神经网络模型的结构,该结构包括:特征提取模块和特征预测分析模块,设置神经网络模型输入数据和输出数据的格式,设置包含预定义行为的特征预测分析策略,并定义误差函数。在特征预测分析策略中,当特征提取模块输出的参数的特征值高于既定阈值时,神经网络根据服务名称以及预定义命令调用kubernetes系统来启动微服务实例,以使微服务实例自动注册到服务网格中;神经网络模型调用预定义命令调用服务网格中的控制平面向数据平面下发流量分配信息。当特征提取模块输出的参数的特征值低于另一既定阈值时,神经网络根据服务名称以及预定义命令调用kubernetes系统来停止微服务实例;神经网络模型调用预定义命令调用服务网格中的控制平面删除数据平面中的流量分配信息。
129.在此基础上,本技术实施例基于机器学习方法完成神经网络模型的训练,在训练过程中使用步骤s41中收集的监控样本,并将监控样本传入特征提取模块,特征提取模块按照cpu使用率、内存使用率、并发数以及服务名称等参数分别提取对应的特征值,并将提取到的特征值输入到特征预测分析模块,以使特征预测分析模块根据特征预测分析策略输出服务名称以及与服务名称对应的预测结果。
130.例如,微服务a已有微服务实例10个,根据预设的特征预测分析策略得到的预测结果为:扩展类型,针对微服务a新注册5个微服务实例,且流量分配结果为每个微服务实例分配有一千个流量数据。因此,神经网络模型输出的预测结果包括但不限于:自动注册/停止微服务实例、微服务实例的数量以及微服务实例之间流量的分配。
131.又例如,微服务a有微服务实例三个:a、b、c,但是由于流量需求较少,实际只需要两组,但是根据预设的特征预测分析策略可知没有必要停止(即关掉)其中的一个微服务实例,因此神经网络向kubernetes系统发送第三指令,向控制平面下发的流量分配信息中,其中一个微服务实例对应的流量为0。
132.本技术实施例通过该训练过程,能够保证该神经网络模型预测的精确性。
133.一种可能的实现方式中,机器学习方法包括反向传播算法;上述机器学习方法或称为人工智能算法。为了提高模型的准确性,本实施例需要选择合适的人工智能算法。
134.步骤s41、基于训练样本集,采用机器学习方法对神经网络模型进行训练,包括以下步骤:
135.s411、基于训练样本集,对神经网络模型进行训练,并在训练过程中根据预定义的误差函数计算神经网络模型的误差。
136.本技术实施例对误差函数的类型、所采用的具体公式均不做具体限定。
137.s412、根据误差,采用反向传播算法更新神经网络模型的参数。
138.本技术实施例可以通过反向传播算法在训练过程中的参与,能够缩短该模型的训练时间。
139.本实施例能够充分利用服务网格的服务发现机制以及监控指标的收集机制,将服务网格中的控制平面收集到的历史的监控数据作为训练样本结合人工智能算法训练神经网络模型,得到预先训练好的神经网络模型,进而在应用过程中,通过预先训练好的神经网络模型来实现微服务实例的启动以及服务发现,实现快速地预警式的微服务实例的扩缩。
140.根据本技术的实施例,本技术还提供了一种服务器和一种可读存储介质。
141.图5为本技术实施例提供的一种服务器的结构示意图。该服务器包括接收器50、发送器51、至少一个处理器52和存储器53,由上述部件构成的该服务器可以用来实施本技术上述几个具体的实施例,此处不再赘述。
142.本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现上述实施例中方法中的各个步骤。
143.本技术实施例还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述实施例中方法中的各个步骤。
144.本技术以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
145.用于实施本技术的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
146.在本技术的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。计算机可读存储介质可以是机器可读信号介质或机器可读储存介质。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。计算机可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
147.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的
反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
148.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
149.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本技术公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本技术公开的技术方案所期望的结果,本文在此不进行限制。
150.上述具体实施方式,并不构成对本技术保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本技术的原则之内所作的修改、等同替换和改进等,均应包含在本技术保护范围之内。

技术特征:
1.一种微服务的扩缩容方法,其特征在于,应用于微服务的扩缩容系统,所述微服务的扩缩容系统包括:依次连接的kubernetes系统、配置生成模块和服务网格;其中,所述服务网格包含控制平面和数据平面;所述方法包括:所述配置生成模块从所述服务网格中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对所述监控数据进行特征提取和特征预测分析,得到预测结果;其中,所述目标微服务为容器化的支付服务;所述预测结果包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息;所述配置生成模块在所述扩缩类型为扩容/缩容类型时,向所述kubernetes系统发送携带所述待扩缩的微服务实例的数量且与所述扩缩类型对应的指令;所述kubernetes系统响应于所述指令,启用/停止所述待扩缩的微服务实例;所述配置生成模块在所述kubernetes系统响应完成时,通过所述控制平面向所述数据平面下发流量分配信息;所述数据平面根据所述流量分配信息实现不同微服务实例之间的调用。2.根据权利要求1所述的方法,其特征在于,所述预先训练好的神经网络模型包括训练好的特征提取模块和训练好的特征预测分析模块;所述利用预先训练好的神经网络模型对所述监控数据进行特征提取和特征预测分析,得到预测结果,包括:利用所述训练好的特征提取模块,从所述监控数据中提取出目标指标的特征值;所述目标指标包括以下至少之一的指标:目标宿主机的cpu使用率、目标宿主机的内存使用率、所述目标微服务的并发数;其中,所述目标宿主机为所述已有微服务实例所在的容器组所运行于的宿主机;基于所述目标指标的预设阈值,利用所述训练好的特征预测分析模块对所述目标指标的特征值进行特征预测分析,得到所述预测结果。3.根据权利要求1所述的方法,其特征在于,所述神经网络模型的训练过程,包括:获取用于训练由特征提取模块和特征预测分析模块构成的神经网络模型的训练样本集;所述训练样本集包括监控样本和所述监控样本的标签;所述监控样本的标签包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息;基于所述训练样本集,采用机器学习方法对所述神经网络模型进行训练,在训练结束后,得到训练好的模型参数,并将所述训练好的模型参数对应的神经网络模型作为预先训练好的神经网络模型。4.根据权利要求3所述的方法,其特征在于,所述机器学习方法包括反向传播算法;所述基于所述训练样本集,采用机器学习方法对所述神经网络模型进行训练,包括:基于所述训练样本集,对所述神经网络模型进行训练,并在训练过程中根据预定义的误差函数计算所述神经网络模型的误差;根据所述误差,采用所述反向传播算法更新所述神经网络模型的参数。5.根据权利要求1所述的方法,其特征在于,所述数据平面包含多个网络代理;在所述配置生成模块从所述服务网格中获取针对目标微服务配置的已有微服务实例的监控数据之前,所述方法还包括:所述控制平面向所述多个网络代理周期性的下发监控指令;
每个所述网络代理均响应于所述监控指令,针对目标微服务配置的与所述网络代理对应的已有微服务实例进行监控,得到流量数据;所述控制平面收集所有所述网络代理上传的所述流量数据,得到所述监控数据,并将所述监控数据返回给所述控制平面。6.根据权利要求2所述的方法,其特征在于,在所述利用所述训练好的特征提取模块,从所述监控数据中提取出目标指标的特征值之后,所述方法还包括:利用所述训练好的特征提取模块,从所述监控数据中提取出所述目标微服务的名称;将所述目标微服务的名称添加到所述指令中。7.根据权利要求6所述的方法,其特征在于,所述kubernetes系统响应于所述指令,启用/停止所述待扩缩的微服务实例,包括:所述kubernetes系统从所述指令中解析出所述目标微服务的名称和所述待扩缩的微服务实例的数量;所述kubernetes系统根据所述目标微服务的名称和所述待扩缩的微服务实例的数量,在所述目标微服务中启用/停止所述待扩缩的微服务实例。8.一种微服务的扩缩容系统,其特征在于,包括:依次连接的kubernetes系统、配置生成模块和服务网格;其中,所述服务网格包含控制平面和数据平面;所述配置生成模块从所述服务网格中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对所述监控数据进行特征提取和特征预测分析,得到预测结果;其中,所述目标微服务为容器化的支付服务;所述预测结果包括扩缩类型、待扩缩的微服务实例的数量和流量分配信息;所述配置生成模块在所述扩缩类型为扩容/缩容类型时,向所述kubernetes系统发送携带所述待扩缩的微服务实例的数量且与所述扩缩类型对应的指令;所述kubernetes系统响应于所述指令,启用/停止所述待扩缩的微服务实例;所述配置生成模块在所述kubernetes系统响应完成时,通过所述控制平面向所述数据平面下发流量分配信息;所述数据平面根据所述流量分配信息实现不同微服务实例之间的调用。9.一种服务器,其特征在于,包括:至少一个处理器和存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至7任一项所述的微服务的扩缩容方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的微服务的扩缩容方法。

技术总结
本申请提供一种微服务的扩缩容方法、系统、服务器及存储介质,可用于人工智能领域。该方法包括:配置生成模块从服务网格中获取针对目标微服务配置的已有微服务实例的监控数据,利用预先训练好的神经网络模型对监控数据进行特征提取和特征预测分析,得到预测结果;配置生成模块在扩缩类型为扩容/缩容类型时,向Kubernetes系统发送携带待扩缩的微服务实例的数量且与扩缩类型对应的指令;Kubernetes系统响应于指令,启用/停止待扩缩的微服务实例;配置生成模块在Kubernetes系统响应完成时,通过控制平面向数据平面下发流量分配信息;数据平面根据流量分配信息实现不同微服务实例之间的调用。本申请提高了微服务的扩缩容效率,进而提高了响应速率。进而提高了响应速率。进而提高了响应速率。


技术研发人员:邵靖斐
受保护的技术使用者:中国银行股份有限公司
技术研发日:2023.06.14
技术公布日:2023/9/13
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐