CN114064326A - 微服务请求的处理方法、装置、计算机设备及存储介质 - Google Patents
微服务请求的处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114064326A CN114064326A CN202111436277.5A CN202111436277A CN114064326A CN 114064326 A CN114064326 A CN 114064326A CN 202111436277 A CN202111436277 A CN 202111436277A CN 114064326 A CN114064326 A CN 114064326A
- Authority
- CN
- China
- Prior art keywords
- target
- micro
- service
- server
- index
- 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.)
- Pending
Links
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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5022—Workload threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请为熔断保护技术领域,本申请提供了一种微服务请求的处理方法、装置、计算机设备及存储介质,其中,该方法包括:确定微服务请求需要运行的目标微服务,判断目标微服务是否需要调用目标接口,若是,从日志数据中提取指标数据,根据指标数据确定服务器的指标值;判断指标值是否超过预设阈值,若是,查询指标值对应的目标熔断降级策略,根据目标熔断降级策略生成相应的目标熔断降级触发指令,按照目标熔断降级触发指令对目标微服务进行熔断降级,若否,则调用目标接口运行目标微服务。本申请在指标值过大时,有目的性的主动熔断降级,保证其他微服务的接口可用,避免服务器全线崩溃,确保服务器正常提供服务,提高用户体验。
Description
技术领域
本申请涉及熔断保护技术领域,具体而言,本申请涉及一种微服务请求的处理方法、装置、计算机设备及存储介质。
背景技术
随着移动互联网的快速发展,人们也从对实体产品的功能需求转向对虚拟产品的微服务需求。目前的线上运行系统在远程调用微服务时,由于网络环境的复杂性和不确定性,容易导致用户请求访问的资源阻塞,以致使微服务不可用,甚至最终导致服务器全线崩溃。
发明内容
本申请的主要目的为提供一种微服务请求的处理方法、装置、计算机设备及存储介质,以提供过载保护机制,确保服务器正常提供服务,提高用户体验。
为了实现上述发明目的,本申请提供一种微服务请求的处理方法,其包括以下步骤:
服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
优选地,所述指标数据包括多个子指标数据,所述根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值,包括:
获取每个所述子指标数据所处的时间节点,将相同时间节点的子指标数据划分在同一个数据集中,得到多个子指标数据集;
分别计算每个所述子指标数据集的指标值;
根据每个所述子指标数据集的指标值进行标准方差计算,得到标准方差值;其中,所述标准方差值用于评估所述服务器的波动程度;
判断所述标准方差值是否低于预设值;
若否,则判定所述指标值超过预设阈值。
优选地,所述指标值包括所述服务器的CPU占有率,所述根据所述指标数据确定所述服务器的指标值,包括:
根据所述指标数据查询当前每个微服务对应的进程识别号;
根据所述进程识别号获取每个所述微服务的进程信息;
解析每个所述微服务的所述进程信息,得到所述服务器的CPU占有率。
优选地,所述根据所述进程识别号获取每个所述微服务的进程信息,包括:
在预设的应用容器引擎环境下,遍历所述服务器内的每个微服务的标识;
若每个所述微服务的标识记载在预设的微服务列表中,则根据所述进程识别号获取每个所述微服务的进程信息。
优选地,所述调用所述目标接口运行所述目标微服务,包括:
当检测到所述目标微服务的数量为至少两个时,将每个目标微服务对应的代码均转换成中间代码包,得到多个目标中间代码包;
根据预设的应用程序构建工具将所有所述目标中间代码包进行组合,得到组合目标微服务;
调用所述目标接口运行所述组合目标微服务。
优选地,所述按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级,包括:
按照所述目标熔断降级触发指令确定所述目标微服务的探针;
利用所述探针将预置的熔断组件插入到所述目标微服务的当前处理进程中;其中,所述熔断组件用于对所述目标微服务的当前处理进程进行熔断降级。
优选地,所述调用所述目标接口运行所述目标微服务,包括:
获取预设时间段内所述目标接口的调用次数;
将所述调用次数与所述预设时间段内对应的调用次数阈值进行比对;
当所述目标接口的调用次数小于所述调用次数阈值时,则调用所述目标接口运行所述目标微服务。
本申请还提供一种微服务请求的处理装置,其包括:
确定模块,用于服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
第一判断模块,用于判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
获取模块,用于当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
第二判断模块,用于从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
查询模块,用于当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
熔断降级模块,用于根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
调用模块,用于当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述任一项所述方法的步骤。
本申请所提供的一种微服务请求的处理方法、装置、计算机设备及存储介质,通过响应于微服务请求,确定微服务请求需要运行的目标微服务,判断目标微服务是否需要调用目标接口,当确定目标微服务需要调用目标接口时,获取服务器的日志数据,从日志数据中提取指标数据,根据指标数据确定服务器的指标值,判断指标值是否超过预设阈值,当确定指标值超过预设阈值时,查询指标值对应的目标熔断降级策略,根据目标熔断降级策略生成相应的目标熔断降级触发指令,按照目标熔断降级触发指令对目标微服务进行熔断降级,当确定指标值不超过预设阈值时,则调用目标接口运行目标微服务,以在指标值过大时,有目的性的主动熔断降级,保证其他微服务的接口可用,避免服务器全线崩溃,确保服务器正常提供服务,提高用户体验。同时,每种指标值对应的目标熔断降级策略不同,实现对目标微服务的精准熔断降级,功能更加强大;并在指标值不超过预设阈值时,则调用目标接口运行目标微服务,以合理分配接口,确保服务器稳定运行。
附图说明
图1为本申请一实施例的微服务请求的处理方法的流程示意图;
图2为本申请一实施例的微服务请求的处理装置的结构示意框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提出的一种微服务请求的处理方法,以服务器为执行主体,服务器可以是独立的服务器,也可以是提供云目标微服务、云数据库、云计算、云函数、云存储、网络目标微服务、云通信、中间件目标微服务、域名目标微服务、安全目标微服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算目标微服务的云服务器。
该微服务请求的处理方法用于解决当前在调用微服务时,由于网络环境的复杂性和不确定性,容易导致用户请求访问的资源阻塞,以使微服务不可用,甚至最终导致服务器全线崩溃的技术问题。参考图1,其中一个实施例中,该微服务请求的处理方法包括如下步骤:
S11、服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
S12、判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
S13、当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
S14、从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
S15、当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
S16、根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
S17、当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
如上述步骤S11所述,当用户所在终端向服务器发起微服务请求时,微服务请求中含有需要运行的目标微服务的标识,基于该标识从预先构建的列表中,查询该标识对应的微服务,以确定该微服务请求需要运行的目标微服务。其中,该列表中记录了每个标识对应的微服务。
目标微服务是指开发一个单个小型的但有业务功能的目标微服务,每个目标微服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。当企业目标微服务化以后,目标微服务之间会有错综复杂的依赖关系,例如,一个前端请求一般会依赖于多个后端目标微服务。在实际生产环境中,目标微服务往往不是百分百可靠,目标微服务可能会出错或者产生延迟,如果一个应用不能对其依赖的故障进行容错和隔离,那么该应用本身就处在被拖垮的风险中。在一个高流量的网站中,某个单一后端一旦发生延迟,可能在数秒内导致所有应用资源(线程,队列等)被耗尽,造成所谓的雪崩效应,严重时可致整个网站瘫痪,因此需要根据服务器的运行状态,弹性伸缩配置资源。
如上述步骤S12所述,可通过注解的方式发现目标微服务是否需要调用运行特定目标微服务的目标接口。其中,该目标接口为预先为特定目标微服务配置的接口,微服务请求可以是自定义的目标微服务对应的请求;此外,也可以通过白名单文件、数据库等方式,监控并添加目标接口。
如上述步骤S13-S14所述,如果目标微服务不需要调用目标接口,则直接运行该目标微服务;否则根据相关算法,计算用于评估当前服务器运行状态的指标值,诸如CPU使用率、内存使用率等指标值。本实施例可通过日志数据提取出当前服务器的运行状态的指标数据,以根据指标数据计算得到当前服务器准确的指标值,判断指标值是否超过预设阈值,该预设阈值可自定义设置,如判断CPU使用率是否超过90%。
在一实施例中,所述提取的指标数据包括但不限于以下一种或者多种的组合:所述服务器中已使用的CPU容量、所述服务器中已使用的内存容量、所述服务器中目标微服务的请求成功率、所述服务器中目标微服务的平均请求响应时间。
如上述步骤S15-S16所述,当确定指标值达到阈值上限,则对目标微服务进行熔断降级;其中,目标微服务熔断的作用类似于我们家用的保险丝,当某目标微服务出现不可用或响应超时的情况时,为了防止整个服务器出现雪崩,暂时停止对该目标微服务的调用。目标微服务降级是从整个服务器的负荷情况出发和考虑,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fa l l back(退路)错误处理信息。这样,虽然提供的是一个有损的目标微服务,但却保证了整个系统的稳定性和可用性。
其中,熔断降级策略可以为多个,其具体数量可以基于满足的熔断降级条件的数量进行确定。本实施例可以将每种熔断降级策略对应的预设阈值配置信息与相应的指标值进行对比,从而可以确定出指标值对应的目标熔断降级策略。然后根据每个目标熔断降级策略生成相应的目标熔断降级触发指令,按照目标熔断降级触发指令对目标微服务进行熔断降级。例如,若目标熔断降级策略包括针对目标业务服务器的线程池隔离降级策略,则生成针对该目标业务服务器的目标线程池隔离降级触发指令。若目标熔断降级方式包括熔断策略、超时时间更改策略或者访问限流降级策略,则分别生成针对所有业务服务器的熔断触发指令、超时时间更改触发指令或者访问限流降级触发指令,按照生成的所有触发指令执行熔断降级。
如上述步骤S17所述,当确定所述指标值未超过预设阈值时,则调用目标接口运行目标微服务,以合理分配接口,确保服务器稳定运行。其中,所述目标接口可以是预设时间段内调用次数最少的接口,以选取调用次数最少的接口运行目标微服务,以快速响应目标微服务请求。
本申请所提供的一种微服务请求的处理方法,通过响应于微服务请求,确定微服务请求需要运行的目标微服务,判断目标微服务是否需要调用目标接口,当确定目标微服务需要调用目标接口时,获取服务器的日志数据,从日志数据中提取指标数据,根据指标数据确定服务器的指标值,判断指标值是否超过预设阈值,当确定指标值超过预设阈值时,查询指标值对应的目标熔断降级策略,根据目标熔断降级策略生成相应的目标熔断降级触发指令,按照目标熔断降级触发指令对目标微服务进行熔断降级,当确定指标值不超过预设阈值时,则调用目标接口运行目标微服务,以在指标值过大时,有目的性的主动熔断降级,保证其他微服务的接口可用,避免服务器全线崩溃,确保服务器正常提供服务,提高用户体验。同时,每种指标值对应的目标熔断降级策略不同,实现对目标微服务的精准熔断降级,功能更加强大;并在指标值不超过预设阈值时,则调用目标接口运行目标微服务,以合理分配接口,确保服务器稳定运行。
在一实施例中,所述指标数据包括多个子指标数据,所述根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值,可具体包括:
获取每个所述子指标数据所处的时间节点,将相同时间节点的子指标数据划分在同一个数据集中,得到多个子指标数据集;
分别计算每个所述子指标数据集的指标值;
根据每个所述子指标数据集的指标值进行标准方差计算,得到标准方差值;其中,所述标准方差值用于评估所述服务器的波动程度;
判断所述标准方差值是否低于预设值;
若否,则判定所述指标值超过预设阈值。
在本实施例中,服务器的指标数据波动大、易抖动、误伤目标接口概率大,需要将相同时间节点的子指标数据划分在同一个数据集中,得到多个子指标数据集,计算每个子指标数据集的指标值,即计算单位时间内的指标值的标准方差,得到标准方差值,该标准方差值用于描述服务器的波动程度。同类型的任务,方向压力的策略有所不同,同时计算密集型或IO密集型的任务,比较单机的数据指标;IO密集和计算密集型任务,需要依赖分布式指标数据,超过阈值则熔断降级目标接口,保证其他接口可用,提供持续稳定的目标微服务。
其中,所述根据每个所述子指标数据集的指标值进行标准方差计算,得到标准方差值的步骤,包括如下公式:
其中,M为单个指标值的某段时间内的平均指标值,xn表示某个子指标数据集的指标值;其中,所述M可通过如下公式计算得到:
此外,还可根据不同指标值对应的指标类型为每个指标值设置不同的权重,根据指标值及对应的权重计算得到的数值代替该指标值X=w1x1+w2xn(w1、w2表示权重),根据计算得到的指标值计算服务器的波动率:|T-X|<=D且波动率低于T(T表示阈值上限,X指标值,D常量,表示误差值)。
在一实施例中,所述指标值包括所述服务器的CPU占有率,所述根据所述指标数据确定所述服务器的指标值,可具体包括:
根据所述指标数据查询当前每个微服务对应的进程识别号;
根据所述进程识别号获取每个所述微服务的进程信息;
解析每个所述微服务的所述进程信息,得到所述服务器的CPU占有率。
通常情况下,需要采集CPU占有率和内存使用率,docker环境下的服务器采集机制有差异,对于服务器,一个目标微服务可能独占一台目标微服务,采集服务器的指标数据可满足需求;对于docker环境,可能部署多个目标微服务,需要采集本进程对应的CPU信息和内存信息。采集时,可获取应用对应的进程号PID,根据所述进程识别号获取每个微服务的进程信息,解析进程信息,可获得此刻进程CPU占有率、内存使用率等指标数据。其中,PID(Process Identification)操作系统里指进程识别号,也就是进程标识符。操作系统里每打开一个程序都会创建一个进程ID,即PID。
在一实施例中,还可根据需要设置一个预设值,通过预设值与CPU占有率的比较分析,可以来进行进一步地处理。即若所述CPU占有率大于预设值,则说明当前服务器无法运行目标微服务,此时需要进行进一步地处理,如将所述目标微服务分配至备用服务器。若所述CPU占有率小于预设值,则说明服务器可以运行目标微服务,并能不影响整体效率。
在一实施例中,所述根据所述进程识别号获取每个所述微服务的进程信息,可具体包括:
在预设的应用容器引擎环境下,遍历所述服务器内的每个微服务的标识;
若每个所述微服务的标识记载在预设的微服务列表中,则根据所述进程识别号获取每个所述微服务的进程信息。
在本实施例中,该应用容器引擎具体可以是Docker应用容器引擎,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。在docker环境下,可遍历服务器内每个独立的微服务的标识,若每个微服务的标识都记载在预设的微服务列表中,则根据进程识别号获取每个微服务的进程信息。其中,每个独立的微服务都预先分配有唯一的标识。
在一实施例中,所述调用所述目标接口运行所述目标微服务,可具体包括:
当检测到所述目标微服务的数量为至少两个时,将每个目标微服务对应的代码均转换成中间代码包,得到多个目标中间代码包;
根据预设的应用程序构建工具将所有所述目标中间代码包进行组合,得到组合目标微服务;
调用所述目标接口运行所述组合目标微服务。
在本实施例中,若所述目标微服务的数量为两个或两个以上,为了方便进行管理,此时可以将所有的目标微服务均转换为对应的中间代码包,以便实现对多个目标微服务的再次合并。
具体的,可以根据预设的应用程序构建工具将所有的中间代码包进行组合,从而得到具有对应的应用程序接口的组合目标微服务,该应用程序接口即为后续需要调用的目标接口。其中,预设的应用程序构建工具可以为Maven的POM工程工具。在完成多个目标微服务的组合并得到组合目标微服务后,可以将所得到的组合目标微服务直接部署至服务器上,调用目标接口运行组合目标微服务,得到执行结果,从而使得在多个目标微服务的情况下,通过组合的方式运行目标微服务,确保当前服务器稳定运行。
在一实施例中,所述按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级,可具体包括:
按照所述目标熔断降级触发指令确定所述目标微服务的探针;
利用所述探针将预置的熔断组件插入到所述目标微服务的当前处理进程中;其中,所述熔断组件用于对所述目标微服务的当前处理进程进行熔断降级。
其中,探针可以是由服务器利用Java虚拟机技术插入到微服务的进程中,探针插入到目标微服务的当前处理进程中时会携带熔断组件,该熔断组件包括实现熔断降级功能的组件库,以便探针被目标微服务的当前处理进程加载后,通过该熔断组件对目标微服务的当前处理进程进行熔断降级。
本实施例通过探针将熔断组件插入到目标微服务的当前处理进程中,以对微服务请求进行熔断降级,无需对原代码进行更改,也无需进行重复性接入,降低了开发和维护成本,止损效率高,而且能够根据获取的熔断降级策略实现精准的降级操作,保证服务器的高稳定性。
在一实施例中,所述调用所述目标接口运行所述目标微服务,可具体包括:
获取预设时间段内所述目标接口的调用次数;
将所述调用次数与所述预设时间段内对应的调用次数阈值进行比对;
当所述目标接口的调用次数小于所述调用次数阈值时,则调用所述目标接口运行所述目标微服务。
在本实施例中,预设时间段是较短的一段时间,如可获取3秒内目标接口的调用次数,将调用次数与预设时间段内对应的调用次数阈值进行比对,当目标接口的调用次数小于所述调用次数阈值时,则调用目标接口运行目标微服务,否则暂停调用该目标接口,避免调用该目标接口时发生故障。
参照图2,本申请实施例中还提供一种微服务请求的处理装置,包括:
确定模块11,用于服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
第一判断模块12,用于判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
获取模块13,用于当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
第二判断模块14,用于从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
查询模块15,用于当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
熔断降级模块16,用于根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
调用模块17,用于当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
在本实施例中,当用户所在终端向服务器发起微服务请求时,微服务请求中含有需要运行的目标微服务的标识,基于该标识从预先构建的列表中,查询该标识对应的微服务,以确定该微服务请求需要运行的目标微服务。其中,该列表中记录了每个标识对应的微服务。
目标微服务是指开发一个单个小型的但有业务功能的目标微服务,每个目标微服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。当企业目标微服务化以后,目标微服务之间会有错综复杂的依赖关系,例如,一个前端请求一般会依赖于多个后端目标微服务。在实际生产环境中,目标微服务往往不是百分百可靠,目标微服务可能会出错或者产生延迟,如果一个应用不能对其依赖的故障进行容错和隔离,那么该应用本身就处在被拖垮的风险中。在一个高流量的网站中,某个单一后端一旦发生延迟,可能在数秒内导致所有应用资源(线程,队列等)被耗尽,造成所谓的雪崩效应,严重时可致整个网站瘫痪,因此需要根据服务器的运行状态,弹性伸缩配置资源。
本实施例可通过注解的方式发现目标微服务是否需要调用运行特定目标微服务的目标接口。其中,该目标接口为预先为特定目标微服务配置的接口,微服务请求可以是自定义的目标微服务对应的请求;此外,也可以通过白名单文件、数据库等方式,监控并添加目标接口。
如果目标微服务不需要调用目标接口,则直接运行该目标微服务;否则根据相关算法,计算用于评估当前服务器运行状态的指标值,诸如CPU使用率、内存使用率等指标值。本实施例可通过日志数据提取出当前服务器的运行状态的指标数据,以根据指标数据计算得到当前服务器准确的指标值,判断指标值是否超过预设阈值,该预设阈值可自定义设置,如判断CPU使用率是否超过90%。
在一实施例中,所述提取的指标数据包括但不限于以下一种或者多种的组合:所述服务器中已使用的CPU容量、所述服务器中已使用的内存容量、所述服务器中目标微服务的请求成功率、所述服务器中目标微服务的平均请求响应时间。
当确定指标值达到阈值上限,则对目标微服务进行熔断降级;其中,目标微服务熔断的作用类似于我们家用的保险丝,当某目标微服务出现不可用或响应超时的情况时,为了防止整个服务器出现雪崩,暂时停止对该目标微服务的调用。目标微服务降级是从整个服务器的负荷情况出发和考虑,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的目标微服务,但却保证了整个系统的稳定性和可用性。
其中,熔断降级策略可以为多个,其具体数量可以基于满足的熔断降级条件的数量进行确定。本实施例可以将每种熔断降级策略对应的预设阈值配置信息与相应的指标值进行对比,从而可以确定出指标值对应的目标熔断降级策略。然后根据每个目标熔断降级策略生成相应的目标熔断降级触发指令,按照目标熔断降级触发指令对目标微服务进行熔断降级。例如,若目标熔断降级策略包括针对目标业务服务器的线程池隔离降级策略,则生成针对该目标业务服务器的目标线程池隔离降级触发指令。若目标熔断降级方式包括熔断策略、超时时间更改策略或者访问限流降级策略,则分别生成针对所有业务服务器的熔断触发指令、超时时间更改触发指令或者访问限流降级触发指令,按照生成的所有触发指令执行熔断降级。
当确定所述指标值未超过预设阈值时,则调用目标接口运行目标微服务,以合理分配接口,确保服务器稳定运行。其中,所述目标接口可以是预设时间段内调用次数最少的接口,以选取调用次数最少的接口运行目标微服务,以快速响应目标微服务请求。
如上所述,可以理解地,本申请中提出的所述微服务请求的处理装置的各组成部分可以实现如上所述微服务请求的处理方法任一项的功能,具体结构不再赘述。
参照图3,本申请实施例中还提供一种计算机设备,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括存储介质、内存储器。该存储介质存储有操作系统、计算机程序和数据库。该内存器为存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储指标数据、日志数据等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种微服务请求的处理方法。
上述处理器执行上述的微服务请求的处理方法,包括:
服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种微服务请求的处理方法,包括步骤:
服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
综上所述,本申请的最大有益效果在于:
本申请所提供的一种微服务请求的处理方法、装置、计算机设备及存储介质,通过响应于微服务请求,确定微服务请求需要运行的目标微服务,判断目标微服务是否需要调用目标接口,当确定目标微服务需要调用目标接口时,获取服务器的日志数据,从日志数据中提取指标数据,根据指标数据确定服务器的指标值,判断指标值是否超过预设阈值,当确定指标值超过预设阈值时,查询指标值对应的目标熔断降级策略,根据目标熔断降级策略生成相应的目标熔断降级触发指令,按照目标熔断降级触发指令对目标微服务进行熔断降级,当确定指标值不超过预设阈值时,则调用目标接口运行目标微服务,以在指标值过大时,有目的性的主动熔断降级,保证其他微服务的接口可用,避免服务器全线崩溃,确保服务器正常提供服务,提高用户体验。同时,每种指标值对应的目标熔断降级策略不同,实现对目标微服务的精准熔断降级,功能更加强大;并在指标值不超过预设阈值时,则调用目标接口运行目标微服务,以合理分配接口,确保服务器稳定运行。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种微服务请求的处理方法,其特征在于,包括:
服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
2.根据权利要求1所述的方法,其特征在于,所述指标数据包括多个子指标数据,所述根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值,包括:
获取每个所述子指标数据所处的时间节点,将相同时间节点的子指标数据划分在同一个数据集中,得到多个子指标数据集;
分别计算每个所述子指标数据集的指标值;
根据每个所述子指标数据集的指标值进行标准方差计算,得到标准方差值;其中,所述标准方差值用于评估所述服务器的波动程度;
判断所述标准方差值是否低于预设值;
若否,则判定所述指标值超过预设阈值。
3.根据权利要求1所述的方法,其特征在于,所述指标值包括所述服务器的CPU占有率,所述根据所述指标数据确定所述服务器的指标值,包括:
根据所述指标数据查询当前每个微服务对应的进程识别号;
根据所述进程识别号获取每个所述微服务的进程信息;
解析每个所述微服务的所述进程信息,得到所述服务器的CPU占有率。
4.根据权利要求3所述的方法,其特征在于,所述根据所述进程识别号获取每个所述微服务的进程信息,包括:
在预设的应用容器引擎环境下,遍历所述服务器内的每个微服务的标识;
若每个所述微服务的标识记载在预设的微服务列表中,则根据所述进程识别号获取每个所述微服务的进程信息。
5.根据权利要求1所述的方法,其特征在于,所述调用所述目标接口运行所述目标微服务,包括:
当检测到所述目标微服务的数量为至少两个时,将每个目标微服务对应的代码均转换成中间代码包,得到多个目标中间代码包;
根据预设的应用程序构建工具将所有所述目标中间代码包进行组合,得到组合目标微服务;
调用所述目标接口运行所述组合目标微服务。
6.根据权利要求1所述的方法,其特征在于,所述按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级,包括:
按照所述目标熔断降级触发指令确定所述目标微服务的探针;
利用所述探针将预置的熔断组件插入到所述目标微服务的当前处理进程中;其中,所述熔断组件用于对所述目标微服务的当前处理进程进行熔断降级。
7.根据权利要求1所述的方法,其特征在于,所述调用所述目标接口运行所述目标微服务,包括:
获取预设时间段内所述目标接口的调用次数;
将所述调用次数与所述预设时间段内对应的调用次数阈值进行比对;
当所述目标接口的调用次数小于所述调用次数阈值时,则调用所述目标接口运行所述目标微服务。
8.一种微服务请求的处理装置,其特征在于,包括:
确定模块,用于服务器响应于微服务请求,确定所述微服务请求需要运行的目标微服务;
第一判断模块,用于判断所述目标微服务是否需要调用目标接口;其中,所述目标接口为运行所述目标微服务的接口;
获取模块,用于当确定所述目标微服务需要调用所述目标接口时,获取所述服务器的日志数据;其中,所述日志数据包括用于评估所述服务器运行当前所有微服务时的运行状态的指标数据;
第二判断模块,用于从所述日志数据中提取所述指标数据,根据所述指标数据确定所述服务器的指标值,判断所述指标值是否超过预设阈值;
查询模块,用于当确定所述指标值超过预设阈值时,查询所述指标值对应的目标熔断降级策略;
熔断降级模块,用于根据所述目标熔断降级策略生成相应的目标熔断降级触发指令,按照所述目标熔断降级触发指令对所述目标微服务进行熔断降级;
调用模块,用于当确定所述指标值不超过所述预设阈值时,调用所述目标接口运行所述目标微服务。
9.一种计算机设备,其特征在于,包括:
处理器;
存储器;
其中,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的微服务请求的处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1-7任一项所述的微服务请求的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111436277.5A CN114064326A (zh) | 2021-11-29 | 2021-11-29 | 微服务请求的处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111436277.5A CN114064326A (zh) | 2021-11-29 | 2021-11-29 | 微服务请求的处理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064326A true CN114064326A (zh) | 2022-02-18 |
Family
ID=80277134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111436277.5A Pending CN114064326A (zh) | 2021-11-29 | 2021-11-29 | 微服务请求的处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064326A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562880A (zh) * | 2022-08-12 | 2023-01-03 | 华能烟台八角热电有限公司 | 一种基于微服务的治理方法及系统 |
CN116233250A (zh) * | 2022-11-28 | 2023-06-06 | 荣耀终端有限公司 | 一种服务调用方法及网关设备 |
CN116610534A (zh) * | 2023-07-18 | 2023-08-18 | 贵州海誉科技股份有限公司 | 一种基于Kubernetes集群资源的改进预测性弹性伸缩方法 |
-
2021
- 2021-11-29 CN CN202111436277.5A patent/CN114064326A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562880A (zh) * | 2022-08-12 | 2023-01-03 | 华能烟台八角热电有限公司 | 一种基于微服务的治理方法及系统 |
CN115562880B (zh) * | 2022-08-12 | 2023-09-12 | 华能烟台八角热电有限公司 | 一种基于微服务的治理方法及系统 |
CN116233250A (zh) * | 2022-11-28 | 2023-06-06 | 荣耀终端有限公司 | 一种服务调用方法及网关设备 |
CN116233250B (zh) * | 2022-11-28 | 2023-12-15 | 荣耀终端有限公司 | 一种服务调用方法及网关设备 |
CN116610534A (zh) * | 2023-07-18 | 2023-08-18 | 贵州海誉科技股份有限公司 | 一种基于Kubernetes集群资源的改进预测性弹性伸缩方法 |
CN116610534B (zh) * | 2023-07-18 | 2023-10-03 | 贵州海誉科技股份有限公司 | 一种基于Kubernetes集群资源的改进预测性弹性伸缩方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114064326A (zh) | 微服务请求的处理方法、装置、计算机设备及存储介质 | |
CN108965381B (zh) | 基于Nginx的负载均衡实现方法、装置、计算机设备和介质 | |
CN108632365B (zh) | 服务资源调整方法、相关装置和设备 | |
CN109688222B (zh) | 共享计算资源的调度方法、共享计算系统、服务器及存储介质 | |
JP7103705B1 (ja) | クラスタに基づく容量縮小処理方法及び装置 | |
CN112395140A (zh) | 去中心化的任务调度方法、装置、设备及介质 | |
CN112689007B (zh) | 资源分配方法、装置、计算机设备和存储介质 | |
CN111258746A (zh) | 资源分配方法和服务设备 | |
US20210349759A1 (en) | Dynamic throttling based on health metrics | |
CN111490963A (zh) | 基于quic协议栈的数据处理方法、系统、设备及存储介质 | |
CN112612618A (zh) | 接口限流方法、装置、计算机设备和存储介质 | |
CN111459681B (zh) | 一种基于微服务负载的动态弹性伸缩方法 | |
CN112732405A (zh) | Jvm线程监控方法、装置及电子设备 | |
CN107025129B (zh) | 一种数据处理方法以及装置 | |
US11444888B2 (en) | Scaling network functions | |
CN111835797A (zh) | 一种数据处理方法、装置及设备 | |
US10536394B2 (en) | Resource allocation | |
JPWO2021119216A5 (zh) | ||
CN114666272B (zh) | 限流处理方法、装置、设备及存储介质 | |
CN114756451A (zh) | 电网系统的安全测试方法、装置、计算机设备、存储介质 | |
CN111008064A (zh) | 虚机资源调度方法和装置、集群部署方法和装置 | |
CN117692401A (zh) | 消息发送方法、装置、服务器及存储介质 | |
CN114153696A (zh) | 云原生应用健康检测方法、装置、计算机设备及存储介质 | |
US20230246911A1 (en) | Control device, control method, control program and control system | |
CN114661545A (zh) | 处理器资源的监控方法、装置、设备及存储介质 |
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 |