CN109067862B - API Gateway自动伸缩的方法与装置 - Google Patents
API Gateway自动伸缩的方法与装置 Download PDFInfo
- Publication number
- CN109067862B CN109067862B CN201810813601.2A CN201810813601A CN109067862B CN 109067862 B CN109067862 B CN 109067862B CN 201810813601 A CN201810813601 A CN 201810813601A CN 109067862 B CN109067862 B CN 109067862B
- Authority
- CN
- China
- Prior art keywords
- service
- data
- api gateway
- application
- service instances
- 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
Images
Classifications
-
- 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
- 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/54—Interprogram communication
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种在微服务架构下的API Gateway自动伸缩的方法与装置,其中,装置包括:API网关集群,用于根据服务等级协议SLA的协议等级定义对应的监控指标,并提供自定义监控指标;资源采集***,用于采集***数据和自定义监控指标的数据,并对***数据和自定义监控指标的数据进行组合,以得到应用资源监控数据;水平扩展控制器,用于在第一预设时间内接收应用资源监控数据,并将应用资源监控数据与预设资源使用阈值进行比较,并根据自动伸缩算法得到目标调整服务实例的个数;伸缩控制器,用于根据目标调整服务实例的个数进行调整,以维持服务实例的个数达到目标值。该装置可以实现资源的高效利用,同时保证服务的性能与稳定性。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种API Gateway自动伸缩的方法与装置。
背景技术
微服务架构是一种新的软件架构模式,微服务将复杂的***切分为数十个甚至上百个单独的小服务。每个服务负责实现一个单独的逻辑。各个小服务部署单独部署在不同的进程中。不同的服务通信通过一些轻量级交互机制来实现交互,如RPC(RemoteProcedure Call,远程过程调用)、HTTP(HyperText Transfer Protocol,超文本传输协议)等。各个服务可以独立伸缩。每个服务边界定义明确,不同的服务可以采用不同的技术栈来实现,由独立的团队来维护。
传统的微服务模式是使用应用与提供服务的后端微服务之间进行直接的交互。采用微服务架构后,原来进程内的方法调用变成了进程间的远程调用。应用的一次请求可能需要调用多个后端服务,导致大量的前后端交互导致相应缓慢,影响客户体验。同时后端服务随着业务的发展可能需要进一步拆分,如果直接与后端交互可能导致所有的应用都需要修改适配。通过引入API gateway作为应用与后端服务交互的唯一入口,可以通过API编排减少应用与后端交互的次数,同时后端的修改对应用是透明的。API gateway作为应用与后端服务的唯一入口,若其宕机将导致所有服务不可用,所以必须保证API gateway服务的高可用和服务质量。
现有的负载均衡方法和自动扩展方法,主要是预先在虚拟机中部署一定应用的实例,在前端使用Nginx做负载均衡,把用户请求均匀的负载的***中。***中应用的实例的数量是一定的。另一种方法是通过使用动态扩展的方法,通过迁移和增加虚拟机的数量来增加应用实例的数量。
比如,一种动态负载均衡方法及装置。通过集群管理设备对集群中各个主机值的监控,获取各个主机中的负载值;通过把获取的监控值与预设的预警值进行比较;若监控值大于或等于预警值,则将预设数目的虚拟机迁移到其他负载相对较轻的主机上。通过自动控制虚拟机的动态迁移,实现负载均衡,来达到资源调度的准确及时高效。另外,云计算***中的应用扩展装置和应用扩展的方法,该方法主要包含三个部分:扩展点解析单元用于解析预定义的扩展点,已确定监控对象。监控单元,用以监控虚拟机对象和应用对象的监控指标数据。扩展处理单元,用于所述指标值大于或等于第一预设的指标阈值,根据应用所绑定的虚拟机的镜像模板向上进行应用的动态扩展。或小于第二指标阈值是,向下扩展应用的实例。
然而,现有的方案中,都是在虚拟机中部署应用的实例,在前端使用Nginx做负载均衡,把用户请求均匀的负载的***中。对虚拟机的内存或CPU(Central ProcessingUnit,中央处理器)以及应用进行监控。通过监控指标与预设的预警值比较来动态增加虚拟机的数量的方式增加应用实例的个数。但是虚拟机是一种对硬件进行虚拟的方式,虚拟化技术,相比与Linux Container为基础的Docker容器技术更加笨重和浪费资源。同时基于虚拟机的动态伸缩将会有更大的时延,导致***的服务等级无法满足SLA(Service-LevelAgreement,服务等级协议)协议。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明设计了一种API Gateway***,作为应用与后端服务的入口,减少了应用与后端服务的交互的复杂性,减少了微服务架构下,应用开发的负载性。
本发明的一个目的在于提出一种API Gateway自动伸缩的装置,该装置可以实现资源的高效利用,同时保证服务的性能与稳定性。
本发明的另一个目的在于提出一种API Gateway自动伸缩的方法。
为达到上述目的,本发明一方面实施例提出了一种API Gateway自动伸缩的装置,包括:API网关集群,用于根据服务等级协议SLA的协议等级定义对应的监控指标,并提供自定义监控指标;资源采集***,用于采集***数据和所述自定义监控指标的数据,并对所述***数据和所述自定义监控指标的数据进行组合,以得到应用资源监控数据,其中,所述***包括API gateway***和主机***;水平扩展控制器,用于在第一预设时间内接收所述应用资源监控数据,并将所述应用资源监控数据与预设资源使用阈值进行比较,并根据自动伸缩算法得到目标调整服务实例的个数;伸缩控制器,用于根据所述目标调整服务实例的个数进行调整,以维持所述服务实例的个数达到目标值。
本发明实施例的API Gateway自动伸缩的装置,可以根据不同的服务等级协议SLA,定义不同的监控指标,来自动扩展,根据自定义指标动态的增加或减少应用的实例,使***满足不同等级的SLA,并根据应用程序的负载动态的调整***的期望状态,从而实现资源的高效利用,同时保证服务的性能与稳定性。
另外,根据本发明上述实施例的API Gateway自动伸缩的装置还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述资源采集***包括:第一采集模块,用于采集***数据,其中,所述***数据包括资源使用率和内存使用量;第二采集模块,用于根据所述API网关集群提供HTTP接口在第二预设时间内采集所述自定义监控指标的数据。
进一步地,在本发明的一个实施例中,还包括:API Server,用于提供用户接口,设置所述资源使用率的最大使用率,并设置所述服务实例的最大个数和所述服务实例的最小个数。
进一步地,在本发明的一个实施例中,所述伸缩控制器还用于在所述应用资源监控数据未超过所述预设资源使用阈值时,根据预设yaml文件模板拉取指定的镜像创建所述目标调整服务实例的个数的所述服务实例,并在所述应用资源监控数据超过所述预设资源使用阈值时,根据所述yaml文件模板扩容至所述最大服务实例的个数。
进一步地,在本发明的一个实施例中,所述伸缩控制器还用于在所述服务实例异常退出或所在的节点宕机时,从另外的节点上重新启动所述服务实例。
进一步地,在本发明的一个实施例中,所述API gateway***包括:核心子***,所述核心子***用于用户认证、授权、服务发现、服务编排、服务路由和结果处理,并具有路由功能;网关控制***,所述网关控制***用于流量控制、可视化编排、API生命周期管理和权限管理;监控子***,所述监控子***包括监控部分和API的统计部分,用于对所述APIgateway***进行监控和响应数据的统计。
为达到上述目的,本发明另一方面实施例提出了一种API Gateway自动伸缩的方法,包括以下步骤:根据服务等级协议SLA的协议等级定义对应的监控指标,并提供自定义监控指标;采集***数据和所述自定义监控指标的数据,并对所述***数据和所述自定义监控指标的数据进行组合,以得到应用资源监控数据,其中,所述***包括API gateway***和主机***;在第一预设时间内接收所述应用资源监控数据,并将所述应用资源监控数据与预设资源使用阈值进行比较,并根据自动伸缩算法得到目标调整服务实例的个数;根据所述目标调整服务实例的个数进行调整,以维持所述服务实例的个数达到目标值。
本发明实施例的API Gateway自动伸缩的方法,可以根据不同的服务等级协议SLA,定义不同的监控指标,来自动扩展,根据自定义指标动态的增加或减少应用的实例,使***满足不同等级的SLA,并根据应用程序的负载动态的调整***的期望状态,从而实现资源的高效利用,同时保证服务的性能与稳定性。
另外,根据本发明上述实施例的API Gateway自动伸缩的方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述采集API gateway***的***数据和所述自定义监控指标的数据,进一步包括:采集所述***数据,其中,所述***数据包括资源使用率和内存使用量;根据提供的HTTP接口在第二预设时间内采集所述自定义监控指标的数据。
进一步地,在本发明的一个实施例中,还包括:设置所述资源使用率的最大使用率,并设置所述服务实例的最大个数和所述服务实例的最小个数。
进一步地,在本发明的一个实施例中,所述根据所述目标调整服务实例的个数调整服务实例的个数,以维持所述服务实例的个数达到目标值,进一步包括:如果所述应用资源监控数据未超过所述预设资源使用阈值时,则根据预设yaml文件模板拉取指定的镜像创建所述目标调整服务实例的个数的所述服务实例;如果所述应用资源监控数据超过所述预设资源使用阈值时,则根据所述yaml文件模板扩容至所述最大服务实例的个数;如果所述服务实例异常退出或所在的节点宕机时,则从另外的节点上重新启动所述服务实例。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的API Gateway自动伸缩的装置的结构示意图;
图2为根据本发明一个实施例的API Gateway部署yaml文件;
图3为根据本发明一个实施例的HPA yaml文件;
图4为根据本发明一个实施例的基于API gateway的交互示意图;
图5为根据本发明一个实施例的API gateway架构的示意图;
图6为根据本发明一个实施例的自动扩展模型的示意图;
图7为根据本发明一个实施例的API Gateway自动伸缩的方法的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参照附图描述根据本发明实施例提出的API Gateway自动伸缩的方法与装置,首先将参照附图描述根据本发明实施例提出的API Gateway自动伸缩的装置。
图1是本发明一个实施例的API Gateway自动伸缩的装置的结构示意图。
如图1所示,该API Gateway自动伸缩的装置10包括:API网关集群100、资源采集***200、水平扩展控制器300和伸缩控制器400。
其中,API网关集群100用于根据服务等级协议SLA的协议等级定义对应的监控指标,并提供自定义监控指标;资源采集***200用于采集***数据和自定义监控指标的数据,并对***数据和自定义监控指标的数据进行组合,以得到应用资源监控数据,其中,***包括API gateway***和主机***。水平扩展控制器300用于在第一预设时间内接收应用资源监控数据,并将应用资源监控数据与预设资源使用阈值进行比较,并根据自动伸缩算法得到目标调整服务实例的个数。伸缩控制器400用于根据目标调整服务实例的个数进行调整,以维持服务实例的个数达到目标值。本发明实施例的装置10根据应用程序的负载动态的调整***的期望状态,从而实现资源的高效利用,同时保证服务的性能与稳定性。
在本发明的一个实施例中,资源采集***200包括:第一采集模块和第二采集模块。
其中,第一采集模块用于采集***数据,其中,***数据包括资源使用率和内存使用量。第二采集模块,用于根据API网关集群提供HTTP接口在第二预设时间内采集自定义监控指标的数据。其中,第一采集模块可以为kubelet,第二采集模块可以为Prometheus。
如图1所示,本发明实施例的装置10为基于Kubernetes和Prometheus的自动伸缩***,下面将对装置10的各个部分进行详细阐述。
具体而言,API网关集群100:API gateway***根据不同的SLA协议等级定义不同监控指标并暴露自定义的监控指标,并提供HTTP接口供Prometheus定期采集监控数据。
资源采集***(Resource metric monitoring):资源采集***200主要负责收集***资源使用情况,以及应用程序自定义监控指标数据。其中,Prometheus主要负责从用户应用程序提供的HTTP接口获取用户自定义的监控指标数据。Adapter扩展实现了Kubernetes提供的customer metric API负责从Prometheus获取用户自定义的监控数据并对数据进行相应的预处理,例如:本发明实施例可以根据Metrics aggregator的格式和规范进行处理并供其调用,其中,以Metrics aggregator为例,将***中kubelet采集的***数据如CUP的使用率、内存的使用量,以及Prometheus中采集的用户自定义的检测指标进行组合并提供统一的接口供HPA定期的获取需要自动扩展进行参考的指标。
水平扩展控制300:周期性的从Metrics aggregator获取应用资源监控数据与预设的资源使用阈值进行比较并根据自动伸缩算法计算出需要调整的实例个数。计算出需要动态调整的实例的个数后,HPA则调用scale部分来动态调整应用的实例个数。
伸缩控制(Scale):伸缩控制400根据HPA部分自动伸缩算法计算出的***的期望状态来调整应用实例的个数。
进一步地,在本发明的一个实施例中,伸缩控制器400还用于在服务实例异常退出或所在的节点宕机时,从另外的节点上重新启动服务实例。
具体而言,Deployment负责根据HPA计算的实例个数来调整集群应用实例的个数,从而保证数量维持在用户期望的状态。例如,当某一个API Gateway实例异常退出或者APIGateway实例所在的节点宕机了,Scale部分会另外的节点上重新启动API Gateway实例,使***维持在期望的状态。
进一步地,在本发明的一个实施例中,伸缩控制器还用于在应用资源监控数据未超过预设资源使用阈值时,根据预设yaml文件模板拉取指定的镜像创建目标调整服务实例的个数的服务实例,并在应用资源监控数据超过预设资源使用阈值时,根据yaml文件模板扩容至最大服务实例的个数。
进一步地,在本发明的一个实施例中,本发明实施例的装置10还包括:APIServer。其中,API Server用于提供用户接口,设置资源使用率的最大使用率,并设置服务实例的最大个数和服务实例的最小个数。
下面将对API Gateway自动伸缩的装置10的自动伸缩的工作原理进行进一步阐述,具体包括:
步骤一,用户通过API Server提供的用户接口创建API Gateway的HPA,并设置需要参考的资源指标的限额使用率,如***的QPS(Query Per Second,每秒查询率)、CPU的使用率和内存的使用量。设置API Gateway资源实例的个数的最大和最小阈值。需要说明的是,服务实例也即为资源实例。
步骤二,HPA管理控制器每隔一定的时间间隔(如30秒时间间隔)从resourceMetrics API中获取设定的资源的监控数据。
步骤三,把获取的监控的应用资源使用情况与创建时设置的指标阈值(平均值之和/限额)进行比较,计算出目标调整的实例个数。
步骤四,目标调整的实例数不能超过步骤1中设定的最大,也不能小于最小实例数。如果没有超过预先设定的阈值,则根据设置的yaml文件模板拉取指定的镜像创建计算出的实例的个数。若超过预先设定的阈值则扩容根据yaml文件扩容至设置的最大的实例个数。
步骤五,重复执行步骤2到步骤4。
下面通过具体实施例的方式对API Gateway自动伸缩的装置10的自动伸缩的工作原理进行进一步阐述,例如,使用该自动伸缩***部署API Gateway***,设置CPU的使用率和QPS(即每秒请求数)作为自动伸缩指标。部署步骤如下:
步骤一,使用yaml文件在kubernetes集群中部署API Gateway***。并使APIGateway***暴露自定义的监控指标接口。部署的yaml文件如图2所示。
步骤二,用户通过API Server创建HPA,并在yaml文件中设置监控指标的使用阈值以及自动伸缩的范围,yaml文件如图3所示。
步骤三,HPA管理控制器每隔一定的时间间隔从resource Metric API中获取监控CPU的使用率数据和每秒请求数数据(QPS)。使用获取的监控数据和yaml文件中设置的阈值进行比较,并根据扩展算法计算出需要扩展的实例的个数。
步骤四,Scale获取计算的实例个数并与预先设置的伸缩范围阈值进行比较,本HPA中伸缩的范围在2到15个之间。若计算的实例个数未超过伸缩范围阈值则根据部署时的yaml中容器创建模板文件,增加或减少容器实例的个数。
步骤五,重复步骤2到步骤5。
进一步地,本发明实施例设计一个API Gateway作为微服务的入口,它减少应用和后端服务交互的次数,同时后端服务的修改对应用是透明的,并实现了以可视化拖拽界面的方式对服务进行编排。本发明实施例以容器的方式部署API Gateway应用,并设计了基于Kubernetes和Prometheus设计了一个API Gateway的自动伸缩***。自动扩展***可以根据API Gateway***的SLA服务等级协议定义不同的监控指标,***可以根据自定义指标动态的增加或减少应用的实例,使***符合SLA。下面将对API Gateway自动伸缩的装置10的设计过程进行详细阐述。
首先,基于API Gateway的交互
在微服务架构下,一个单体应用被拆分为多个微服务进程后,原本进程内的方法调用变成了进程间的远程调用。应用的某些请求,需要与多个后端服务进行交互,将会导致大量的远程调用。大量的远程调用将会导致大量的延迟,影响用户的体验。基于微服务架构的后端通常是动态的,随着业务的发展后端服务可能需要进一步划分。直接交互的模式,将导致后端服务的拆分,所有应用都需要修改适配。而本发明实施例通过引入API Gateway作为应用与后端服务的中间层,后端服务对应用是透明的。基于API Gateway的通信架构如图4所示,主要包含三个部分:App、API Gateway和back-end service。
1、APP:是服务的消费者,需要调用back-end service提供的服务,是由各种语言编写的客户端。如web网站、移动应用等。
2、API Gateway:是应用与后端服务交互的接口。应用所有的请求都通过APIGateway到达后端服务。
3、back-end Service:是一个个提供单独服务的应用程序并通过服务地址提供其服务能力。
基于API网关的微服务架构的通信流程:
(1)back-end service启动服务时把其服务地址注册到Consul中。
(2)App需要调用back-end service提供的服务是向API Gateway发送请求。
(3)API Gateway接收到客户端的请求后,通过Consul进行服务发现,查找客户端需要调用的服务地址。
(4)API Gateway获取后端服务的地址后,把应用请求路由到back-end service。获取结果后进行相应的处理后返回给调用的客户端。
(5)APP获取结果后,返回想要页面相应用户。
进一步地,在本发明的一个实施例中,API gateway***包括:核心子***、网关控制***和监控子***。
其中,核心子***用于用户认证、授权、服务发现、服务编排、服务路由和结果处理,并具有路由功能。网关控制***用于流量控制、可视化编排、API生命周期管理和权限管理。监控子***包括监控部分和API的统计部分,用于对API gateway***进行监控和响应数据的统计。
具体而言,本发明实施例使用node JS和Consul设计并实现了API gateway其整体架构图如5所示。其中主要包含三个部分,分别是:核心子***、网关控制***和监控子***
1、核心子***Core subsystem:是API Gateway***的核心功能部分,主要对用户的请求进行认证授权路由等功能,其主要包含用户认证、授权、服务发现、服务编排、服务路由和结果处理等部分。
(1)认证(Authentication):对请求的用户进行认证,简化后端服务之间的调用逻辑。
(2)授权(Authorization):对用户的请求进行授权。
(3)服务发现(Service Discover):在Consul中对用户的请求进行服务地址进行发现。
(4)服务路由(Service routing):获取用户请求的服务地址后,把用户的请求路由到相应的服务后端。
(5)服务编排(Orchestration):对后端应用提供的一些服务进行编排组合,提供组合服务接口供客户端应用调用。减少应用对后端应用的请求次数。
(6)结果处理(Result Processing):获取到后端应用返回的调用结果,***根据不用应用的调用对结果进行相应的处理,以适应不同的客户端。如手机应用请求、web应用请求等。
2、网关控制***(API gateway admin subsystem):管理控制台主要是对核心功能的一些控制和配置。主要包括流量控制、可视化编排、API生命周期管理,权限管理。
(1)流量限制(Flow limit):主要对***中流量进行控制。如设置用户对特定后端服务的调用次数进行限制。
(2)可视化编排(Visual orchestration):以可视化拖拽的方式进行服务的编排,把后端应用提供的原子服务,编排成组合服务。供应用程序调用,减少应用程序请求后端应用的请求次数。
(3)生命周期管理(Life Cycle Management):对API的生命周期进行管理。管理服务的上线,下线。存活时间等。
(4)授权管理(Authority Management):对核心功能的权限的控制。如设置某些服务只有特权用户才能进行调用。
3、监控子***(Monitor subsystem):主要对对API gateway***进行监控和响应数据的统计。主要包括监控部分和API的统计部分。
(1)监控报警(Monitor warning):对***中提供服务的应用的健康状态和核心子***的健康状态进行监控,例如api响应时间、内存、CPU等使用情况等。监控模块可以根据用户自定义的监控指标进行监控,并能把能提供HTTP接口供外部***调用***中的监控数据。
(2)接口统计(API statistic):主要统计***中各个API的调用情况。
进一步地,对API Gateway的自动伸缩进行说明。
本发明实施例使用轻量级Linux Container虚拟化技术Docker容器部署APIGateway***的动态伸缩。相比虚拟机的方式更加节省资源和减少动态伸缩是所耗费的时间,使***在大多数时间里满足SLA等级协议。其中,Kubernetes和Prometheus设计并实现了API gateway的动态伸缩。Kubernetes负责集群中API Gateway的调度以及容器的调度和跨主机通信。Prometheus负责API Gateway集群的资源监控。
自动扩展模型如图6所示,自动扩展就是根据应用程序的负载情况,与预设的阈值进行比较动态的增加或减少应用的实例个数来进行动态负载均衡,保证应用的高可用的同时,达到资源的合理利用。
(1)Minimum Size:最小服务实例的数量。当应用在最低负载时,***中提供服务的实例的数量。
(2)Maximum Size:***中提供最多服务实例的数量。在***高负载的时候***中能提供最多的应用服务实例的数量。
***根据应用程序的负载情况来调整***的期望状态:当服务有异常退出或者服务所在的节点宕机,自动扩展***在其他节点重新启动一个服务实例使应用保持我们的期望状态。同时通过参数指定服务的最大阈值和最小阈值,根据应用程序的负载动态的调整***的期望状态,在应用在最低负载的时候只部署最少的服务数量运行业务,在应用的负载上升,超过单个服务的负载阈值,根据应用的负载创建更多的应用来均衡负载。实现资源的高效利用,同时保证服务的性能与稳定性。
根据本发明实施例提出的API Gateway自动伸缩的装置,可以根据不同的服务等级协议SLA,定义不同的监控指标,来自动扩展,根据自定义指标动态的增加或减少应用的实例,使***满足不同等级的SLA,并根据应用程序的负载动态的调整***的期望状态,从而实现资源的高效利用,同时保证服务的性能与稳定性。
其次参照附图描述根据本发明实施例提出的API Gateway自动伸缩的方法。
图7是本发明一个实施例的API Gateway自动伸缩的方法的流程图。
如图7所示,该API Gateway自动伸缩的方法包括以下步骤:
在步骤S701中,根据服务等级协议SLA的协议等级定义对应的监控指标,并提供自定义监控指标。
在步骤S702中,采集***数据和自定义监控指标的数据,并对***数据和自定义监控指标的数据进行组合,以得到应用资源监控数据,其中,***包括API gateway***和主机***。
在步骤S703中,在第一预设时间内接收应用资源监控数据,并将应用资源监控数据与预设资源使用阈值进行比较,并根据自动伸缩算法得到目标调整服务实例的个数。
在步骤S704中,根据目标调整服务实例的个数进行调整,以维持服务实例的个数达到目标值。
进一步地,在本发明的一个实施例中,采集API gateway***的***数据和自定义监控指标的数据,进一步包括:采集***数据,其中,***数据包括资源使用率和内存使用量;根据提供的HTTP接口在第二预设时间内采集自定义监控指标的数据。
进一步地,在本发明的一个实施例中,本发明实施例的方法还包括:设置资源使用率的最大使用率,并设置服务实例的最大个数和服务实例的最小个数。
进一步地,在本发明的一个实施例中,根据目标调整服务实例的个数调整服务实例的个数,以维持服务实例的个数达到目标值,进一步包括:如果应用资源监控数据未超过预设资源使用阈值时,则根据预设yaml文件模板拉取指定的镜像创建目标调整服务实例的个数的服务实例;如果应用资源监控数据超过预设资源使用阈值时,则根据yaml文件模板扩容至最大服务实例的个数;如果服务实例异常退出或所在的节点宕机时,则从另外的节点上重新启动服务实例。
需要说明的是,前述对API Gateway自动伸缩的装置实施例的解释说明也适用于该实施例的API Gateway自动伸缩的方法,此处不再赘述。
根据本发明实施例提出的API Gateway自动伸缩的方法,可以根据不同的服务等级协议SLA,定义不同的监控指标,来自动扩展,根据自定义指标动态的增加或减少应用的实例,使***满足不同等级的SLA,并根据应用程序的负载动态的调整***的期望状态,从而实现资源的高效利用,同时保证服务的性能与稳定性。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (7)
1.一种API Gateway自动伸缩的装置,其特征在于,包括:
API 网关集群,用于根据服务等级协议SLA的协议等级定义对应的监控指标,并提供自定义监控指标;
资源采集***,用于采集***数据和所述自定义监控指标的数据,并对所述***数据和所述自定义监控指标的数据进行组合,以得到应用资源监控数据,其中,所述***包括API gateway***和主机***;水平扩展控制器,用于在第一预设时间内接收所述应用资源监控数据,并将所述应用资源监控数据与预设资源使用阈值进行比较,并根据自动伸缩算法得到目标调整服务实例的个数,具体地:使用轻量级Linux Container 虚拟化技术Docker容器部署API Gateway***的动态伸缩,通过Kubernetes和Prometheus实现了APIgateway的动态伸缩,其中,Kubernetes负责集群中API Gateway的调度以及容器的调度和跨主机通信,Prometheus负责API Gateway集群的资源监控;自动扩展就是根据应用程序的负载情况,与预设的阈值进行比较动态的增加或减少应用的实例个数来进行动态负载均衡,保证应用的高可用的同时,达到资源的合理利用,其中,最小服务实例的数量为:当应用在最低负载时,***中提供服务的实例的数量;最多服务实例的数量为:在***高负载的时候***中能提供最多的应用服务实例的数量;以及
伸缩控制器,用于根据所述目标调整服务实例的个数进行调整,以维持所述服务实例的个数达到目标值,其中,所述伸缩控制器还用于在所述应用资源监控数据未超过所述预设资源使用阈值时,根据预设yaml文件模板拉取指定的镜像创建所述目标调整服务实例的个数的所述服务实例,并在所述应用资源监控数据超过所述预设资源使用阈值时,根据所述yaml文件模板扩容至所述服务实例的最大个数; 在所述服务实例异常退出或所在的节点宕机时,从另外的节点上重新启动所述服务实例。
2.根据权利要求1所述的API Gateway自动伸缩的装置,其特征在于,所述资源采集***包括:
第一采集模块,用于采集***数据,其中,所述***数据包括资源使用率和内存使用量;
第二采集模块,用于根据所述API 网关集群提供HTTP接口在第二预设时间内采集所述自定义监控指标的数据。
3.根据权利要求2所述的API Gateway自动伸缩的装置,其特征在于,还包括:
API Server,用于提供用户接口,设置所述资源使用率的最大使用率,并设置所述服务实例的最大个数和所述服务实例的最小个数。
4.根据权利要求1所述的API Gateway自动伸缩的装置,其特征在于,所述API gateway***包括:
核心子***,所述核心子***用于用户认证、授权、服务发现、服务编排、服务路由和结果处理,并具有路由功能;
网关控制***,所述网关控制***用于流量控制、可视化编排、API生命周期管理和权限管理;
监控子***,所述监控子***包括监控部分和API的统计部分,用于对所述APIgateway***进行监控和响应数据的统计。
5.一种API Gateway自动伸缩的方法,其特征在于,包括以下步骤:
根据服务等级协议SLA的协议等级定义对应的监控指标,并提供自定义监控指标;
采集***数据和所述自定义监控指标的数据,并对所述***数据和所述自定义监控指标的数据进行组合,以得到应用资源监控数据,其中,所述***包括API gateway***和主机***;
在第一预设时间内接收所述应用资源监控数据,并将所述应用资源监控数据与预设资源使用阈值进行比较,并根据自动伸缩算法得到目标调整服务实例的个数,具体地:使用轻量级Linux Container 虚拟化技术Docker容器部署API Gateway***的动态伸缩,通过Kubernetes和Prometheus实现了API gateway的动态伸缩,其中,Kubernetes负责集群中API Gateway的调度以及容器的调度和跨主机通信,Prometheus负责API Gateway集群的资源监控;自动扩展就是根据应用程序的负载情况,与预设的阈值进行比较动态的增加或减少应用的实例个数来进行动态负载均衡,保证应用的高可用的同时,达到资源的合理利用,其中,最小服务实例的数量为:当应用在最低负载时,***中提供服务的实例的数量;最多服务实例的数量为:在***高负载的时候***中能提供最多的应用服务实例的数量;以及
根据所述目标调整服务实例的个数进行调整,以维持所述服务实例的个数达到目标值,其中,所述根据所述目标调整服务实例的个数进行调整,以维持所述服务实例的个数达到目标值,进一步包括:如果所述应用资源监控数据未超过所述预设资源使用阈值时,则根据预设yaml文件模板拉取指定的镜像创建所述目标调整服务实例的个数的所述服务实例;如果所述应用资源监控数据超过所述预设资源使用阈值时,则根据所述yaml文件模板扩容至最大服务实例的个数;如果所述服务实例异常退出或所在的节点宕机时,则从另外的节点上重新启动所述服务实例。
6.根据权利要求5所述的API Gateway自动伸缩的方法,其特征在于,所述采集APIgateway***的***数据和所述自定义监控指标的数据,进一步包括:
采集所述***数据,其中,所述***数据包括资源使用率和内存使用量;
根据提供的HTTP接口在第二预设时间内采集所述自定义监控指标的数据。
7.根据权利要求6所述的API Gateway自动伸缩的方法,其特征在于,还包括:
设置所述资源使用率的最大使用率,并设置所述服务实例的最大个数和所述服务实例的最小个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810813601.2A CN109067862B (zh) | 2018-07-23 | 2018-07-23 | API Gateway自动伸缩的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810813601.2A CN109067862B (zh) | 2018-07-23 | 2018-07-23 | API Gateway自动伸缩的方法与装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109067862A CN109067862A (zh) | 2018-12-21 |
CN109067862B true CN109067862B (zh) | 2020-10-16 |
Family
ID=64836105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810813601.2A Active CN109067862B (zh) | 2018-07-23 | 2018-07-23 | API Gateway自动伸缩的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109067862B (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109728974B (zh) * | 2018-12-27 | 2023-04-14 | 北京航天智造科技发展有限公司 | 在线接口调试平台 |
CN109710223B (zh) * | 2018-12-29 | 2021-03-12 | 北京邮电大学 | 基于分布式kv存储***的api网关热插拔*** |
CN109618002B (zh) * | 2019-01-11 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | 一种微服务网关优化方法、装置及存储介质 |
CN109976872B (zh) * | 2019-02-21 | 2021-05-18 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110262944A (zh) * | 2019-06-21 | 2019-09-20 | 四川长虹电器股份有限公司 | 一种对K8s集群容器资源进行监控并进行告警的方法 |
CN110347377B (zh) * | 2019-07-08 | 2023-04-18 | 紫光云技术有限公司 | 一种Prometheus exporter数据库监控*** |
CN111400049A (zh) * | 2020-03-26 | 2020-07-10 | 北京搜房科技发展有限公司 | 资源调整方法及装置 |
CN112000460A (zh) * | 2020-04-14 | 2020-11-27 | 华为技术有限公司 | 一种基于改进贝叶斯算法的服务扩缩容的方法及相关设备 |
CN111651170B (zh) * | 2020-05-29 | 2022-11-08 | 深圳平安医疗健康科技服务有限公司 | 一种实例动态调整方法、装置及相关设备 |
CN111666156B (zh) * | 2020-06-03 | 2022-02-18 | 科东(广州)软件科技有限公司 | 一种容器编排方法、装置、设备和存储介质 |
CN112416699A (zh) * | 2020-06-05 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 指标数据收集方法及*** |
CN112068934B (zh) * | 2020-09-08 | 2023-02-10 | 广州汇智通信技术有限公司 | 一种容器云服务实例收缩的控制***和方法 |
CN113010260B (zh) * | 2020-09-29 | 2024-06-21 | 证通股份有限公司 | 容器数量弹性伸缩方法以及容器数量弹性伸缩方法*** |
CN112559186B (zh) * | 2020-12-22 | 2021-09-24 | 北京云思畅想科技有限公司 | 一种Kubernetes容器资源扩缩容方法 |
CN112291104B (zh) * | 2020-12-30 | 2021-04-06 | 望海康信(北京)科技股份公司 | 微服务自动伸缩***、方法及相应设备和存储介质 |
CN112328385B (zh) * | 2021-01-04 | 2021-04-06 | 鹏城实验室 | 基于插件化的多场景Kubernetes任务提交方法 |
CN113032097A (zh) * | 2021-03-22 | 2021-06-25 | 浪潮云信息技术股份公司 | 一种可自动伸缩实例数量的api网关实现方法及*** |
CN113051131A (zh) * | 2021-03-23 | 2021-06-29 | 北京沃东天骏信息技术有限公司 | 采集端、管理控制平台、Prometheus服务调整方法及*** |
CN113190329A (zh) * | 2021-05-24 | 2021-07-30 | 青岛聚看云科技有限公司 | 服务器及容器云集群资源自动伸缩的方法 |
CN113254209B (zh) * | 2021-05-28 | 2023-08-29 | 北京奇艺世纪科技有限公司 | 一种容量管理方法、装置、电子设备及可读存储介质 |
CN113407347B (zh) * | 2021-06-30 | 2023-02-24 | 北京百度网讯科技有限公司 | 资源调度方法、装置、设备和计算机存储介质 |
CN113641552B (zh) * | 2021-07-22 | 2023-12-05 | 深圳软通动力信息技术有限公司 | 监控数据采集横向扩展方法、***、电子设备和存储介质 |
CN113792192B (zh) * | 2021-08-09 | 2022-12-30 | 万翼科技有限公司 | 开源业务函数支撑***及业务函数的控制方法 |
CN113923200A (zh) * | 2021-10-12 | 2022-01-11 | 上海中通吉网络技术有限公司 | 海量api网关服务的实现方法及装置 |
CN114125055B (zh) * | 2021-11-30 | 2023-12-12 | 神州数码***集成服务有限公司 | 多协议自动适配云原生网关***控制方法、***、设备及应用 |
CN115361385B (zh) * | 2022-08-15 | 2024-05-10 | 山东体育学院 | Docker Swarm环境中云原生应用自动弹性伸缩***和伸缩方法 |
CN116755764B (zh) * | 2023-08-22 | 2023-11-17 | 山东浪潮数字商业科技有限公司 | 一种自动伸缩的无侵入式灰度发布*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105827446A (zh) * | 2016-03-31 | 2016-08-03 | 深圳市金溢科技股份有限公司 | 一种智能交通api网关及智能交通业务*** |
CN105933448A (zh) * | 2016-06-29 | 2016-09-07 | 江苏电力信息技术有限公司 | 一种自管理的微服务架构及其服务方法 |
CN106330576A (zh) * | 2016-11-18 | 2017-01-11 | 北京红马传媒文化发展有限公司 | 容器化微服务自动伸缩及迁移调度的方法、***和设备 |
CN106506605A (zh) * | 2016-10-14 | 2017-03-15 | 华南理工大学 | 一种基于微服务架构的SaaS应用构建方法 |
CN106603284A (zh) * | 2016-12-14 | 2017-04-26 | 国网天津市电力公司 | 基于Docker虚拟容器微应用平台***及运行方法 |
CN107612955A (zh) * | 2016-07-12 | 2018-01-19 | 深圳市远行科技股份有限公司 | 微服务提供方法、装置及*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9870273B2 (en) * | 2016-06-13 | 2018-01-16 | 1Qb Information Technologies Inc. | Methods and systems for quantum ready and quantum enabled computations |
CN107426034B (zh) * | 2017-08-18 | 2020-09-01 | 国网山东省电力公司信息通信公司 | 一种基于云平台的大规模容器调度***及方法 |
CN108270858A (zh) * | 2018-01-15 | 2018-07-10 | 郑州云海信息技术有限公司 | 一种基于api网关的私有云架构及其数据处理方法 |
-
2018
- 2018-07-23 CN CN201810813601.2A patent/CN109067862B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105827446A (zh) * | 2016-03-31 | 2016-08-03 | 深圳市金溢科技股份有限公司 | 一种智能交通api网关及智能交通业务*** |
CN105933448A (zh) * | 2016-06-29 | 2016-09-07 | 江苏电力信息技术有限公司 | 一种自管理的微服务架构及其服务方法 |
CN107612955A (zh) * | 2016-07-12 | 2018-01-19 | 深圳市远行科技股份有限公司 | 微服务提供方法、装置及*** |
CN106506605A (zh) * | 2016-10-14 | 2017-03-15 | 华南理工大学 | 一种基于微服务架构的SaaS应用构建方法 |
CN106330576A (zh) * | 2016-11-18 | 2017-01-11 | 北京红马传媒文化发展有限公司 | 容器化微服务自动伸缩及迁移调度的方法、***和设备 |
CN106603284A (zh) * | 2016-12-14 | 2017-04-26 | 国网天津市电力公司 | 基于Docker虚拟容器微应用平台***及运行方法 |
Non-Patent Citations (2)
Title |
---|
API经济与媒体的未来;刁毅刚;《中国传媒科技》;20180630;参见第1-3章 * |
SCAling:SLA-driven Cloud Auto-scaling;Yousri KOUKI等;《Proceedings of the 28th Annual ACM Symposium on Applied Computing》;20130322;参见第1-2页,附图1 * |
Also Published As
Publication number | Publication date |
---|---|
CN109067862A (zh) | 2018-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109067862B (zh) | API Gateway自动伸缩的方法与装置 | |
EP3530037B1 (en) | System and method for network slice management in a management plane | |
US10812395B2 (en) | System and method for policy configuration of control plane functions by management plane functions | |
Li et al. | SSLB: self-similarity-based load balancing for large-scale fog computing | |
WO2020258920A1 (zh) | 一种网络切片资源管理方法及设备 | |
JP6514241B2 (ja) | ソフトウェア定義ネットワークにおけるサービスオーケストレーション方法及び装置、記憶媒体 | |
US11106560B2 (en) | Adaptive thresholds for containers | |
US9485197B2 (en) | Task scheduling using virtual clusters | |
CN107040479B (zh) | 一种云计算资源调节的方法和装置 | |
US8627123B2 (en) | Managing power provisioning in distributed computing | |
Li et al. | Maximizing user service satisfaction for delay-sensitive IoT applications in edge computing | |
US10993127B2 (en) | Network slice instance management method, apparatus, and system | |
CN105159775A (zh) | 基于负载均衡器的云计算数据中心的管理***和管理方法 | |
CN108595306A (zh) | 一种面向混部云的服务性能测试方法 | |
WO2017193850A1 (zh) | 一种终端的接入调度方法、装置及计算机存储介质 | |
CN111526031B (zh) | 一种业务虚拟网络功能vnf的扩缩容方法及设备 | |
CN103957237A (zh) | 一种弹性云的体系结构 | |
EP3061209B1 (en) | Methods, nodes and computer program for enabling of resource component allocation | |
US11108673B2 (en) | Extensible, decentralized health checking of cloud service components and capabilities | |
CN111865817A (zh) | 遥测采集器负载均衡管控方法、装置、设备及存储介质 | |
CN106878389B (zh) | 用于在云***中进行资源调度的方法和装置 | |
WO2023221846A1 (zh) | 计算集群及其数据采集方法、设备及存储介质 | |
Wu et al. | Dynamically adjusting scale of a kubernetes cluster under qos guarantee | |
CN112486634A (zh) | 一种实现容器云平台整体监控的方法 | |
Gohar et al. | Minimizing the cost of 5G network slice broker |
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 |