CN111552587A - 一种基于滑动时间窗的服务熔断方法 - Google Patents

一种基于滑动时间窗的服务熔断方法 Download PDF

Info

Publication number
CN111552587A
CN111552587A CN202010361930.5A CN202010361930A CN111552587A CN 111552587 A CN111552587 A CN 111552587A CN 202010361930 A CN202010361930 A CN 202010361930A CN 111552587 A CN111552587 A CN 111552587A
Authority
CN
China
Prior art keywords
service
fusing
function
calling
queue
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
Application number
CN202010361930.5A
Other languages
English (en)
Inventor
张路路
李耀
田骏
彭磊
杨志文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Zhongbang Bank Co Ltd
Original Assignee
Wuhan Zhongbang Bank Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Zhongbang Bank Co Ltd filed Critical Wuhan Zhongbang Bank Co Ltd
Priority to CN202010361930.5A priority Critical patent/CN111552587A/zh
Publication of CN111552587A publication Critical patent/CN111552587A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0775Content or structure details of the error report, e.g. specific table structure, specific error fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本发明涉及流量控制领域,提供了一种基于滑动时间窗的服务熔断方法,其主旨在于解决目前的熔断机制一般都是基于数据库或者缓存,这种方式统计效率低下,资源消耗过大的问题。其主要方案包括根据时间窗口大小T和时间滑动刻度k构建包含n个元素、元素动态下标为index的服务异常调用次数登记环队列和服务总调用次数登记环队列,每个元素用于存放对应滑动刻度k内服务请求次数;当服务器接收服务请求时,通过是否需要熔断判断功能shouldFuse,判断是否熔断,如是熔断则直接将服务调用返回,不处理业务,否则登记服务总调用次数,如果调用业务逻辑服务异常或者超时,则登记异常服务调用总次数;返回业务逻辑处理结果。

Description

一种基于滑动时间窗的服务熔断方法
技术领域
本发明涉及用于互联网行业应用服务器的流量控制领域,提供了一种基于滑动时间窗的服务熔断方法。
背景技术
现在的很多应用都是面向互联网的,其背后的服务器就面临着高并发的难题,由于服务器的资源是有限的,所以为保证***服务的稳定,流量控制的概念就被提了出来。而服务熔断就是流量控制手段中的一种。服务熔断指的是在一定的时间窗口内,某些服务调用异常的指标(失败率/数量或者超时率/数量)达到了预先设计的阀值,则将该服务熔断(停止对外服务)一段时间,等熔断时间过后再对外提供服务。
目前的熔断机制一般都是基于数据库或者缓存的,将每次的服务调用状态都保存到数据库或者缓存,每次服务调用前都访问数据库或者缓存去统计过去某个时间段内的指标。这种方式统计精确,但存在统计效率低下,资源消耗过大的问题。
发明内容
本发明的目的在于解决目前的熔断机制一般都是基于数据库或者缓存的,将每次的服务调用状态都保存到数据库或者缓存,每次服务调用前都访问数据库或者缓存去统计过去某个时间段内的指标。这种方式统计精确,但存在统计效率低下,资源消耗过大的问题。
为解决上述技术问题,本发明采用以下技术方案:
本发明提供了一种基于滑动时间窗的服务熔断方法,包括如下步骤:
步骤1、根据时间窗口大小T和时间滑动刻度k构建,构建包含n个元素的环形队列,每个元素用于存放对应滑动刻度k内服务请求次数,即元素值value;
根据时间窗口大小T和时间滑动刻度k,配置一个与当前滑动刻度k对应的一个动态下标index,动态下标index指向当前时间滑动刻度k对应的元素的位置;
步骤2、按照步骤1分别得到服务异常调用次数登记环队列实例q1、服务总调用次数登记环队列q2;
步骤3、当服务器接收服务请求时,通过是否需要熔断判断功能shouldFuse,判断是否熔断,将结果保存至a;
步骤4:如果a等于true,则直接将服务调用返回,不处理业务,这里返回的可以是一个服务熔断的提示;
步骤5:如果a等于false,则执行如下步骤
步骤6:调用serviceRecord功能,登记服务总调用次数,如果调用业务逻辑服务异常或者超时,则调用expServiceRecord功能,登记异常服务调用总次数;
步骤7:返回业务逻辑处理结果。
上述技术方案中,步骤1具体包括以下步骤:
步骤1.1:声明时间窗大小T,时间窗滑动刻度k,动态下标index,数组queue;
步骤1.2:定义环形队列类构造函数queueInit参数(a,b),得到功能queueInit,功能如下:
步骤1.2.1:设置T=a,k=b;
步骤1.2.2:设置队列的大小为size=T/k;
步骤1.3:定义一个定时器task,定时任务执行周期k(该定时器启动后采用独立线程执行任务,任务执行周期为k),执行任务如下:
步骤1.3.1:queue[index+1]=0;
步骤1.3.2:index=(index+1)%size。
上述技术方案中,步骤6中对响应服务次数进行服务登记处理包括如下步骤:
步骤6.1:定义入队列功能pushQueue,处理步骤如下:
步骤6.1.1:加同步锁;
步骤6.1.2:获取动态下标index;
步骤6.1.3:获取queue在index下标处的元素值value;
步骤6.1.4:将queue在index下标处的元素值设置为(value+1);
步骤6.1.5:释放同步锁。
上述技术方案中,步骤2包括以下步骤:
步骤2.1:声明时间窗T,滑动刻度k、服务异常调用次数登记队列实例q1,服务总调用次数登记队列q2,熔断类型t,异常服务调用次数阈值p,异常服务调用比例阈值q,熔断时长n,熔断开始时间bg,熔断结束时间ed,服务是否熔断中fi,fi初始值为false;
步骤2.2:按照异常服务总数次数熔断,定义熔断枚举t1;
步骤2.3:按照异常服务比例熔断,定义熔断枚举t2;
步骤2.4:定义熔断服务类构造函数init参数(a,b,c,d,e,f);
步骤2.4.1:设置T=a,k=b,t=c,p=d,q=e,n=f;
步骤2.4.2:调用步骤1.1中所述功能queueInit,入参为(T,k)初始化实例q1,实例q2;
步骤2.4.3:分别启动实例q1、实例q2定时器task,执行定时任务。
上述技术方案中,步骤3中是否需要熔断判断功能shouldFuse,具体步骤如下:
步骤3.1:如果fi为true,执行3.2,否则,执行3.3,fi表示服务是否熔断状态,true为熔断中,false为未熔断中;
步骤3.2:步骤如下:
步骤3.2.1:获取当前时间currentTime;
步骤3.2.2:如果currentTime>=bg并且currentTime<=ed,则返回fi的值true,步骤结束;否则,执行3.2.3;
步骤3.2.3:将fi设置为false;
步骤3.2.4:调用实例q1重置功能resetQueue,重置实例q1;
步骤3.2.5:如果熔断类型t等于t2,调用实例q2重置功能resetQueue,重置实例q2;
步骤3.2.6:返回fi值false;
步骤3.3:步骤如下:
步骤3.3.1:调用实例q1求和功能sum,得到异常服务调用总数cnt;
步骤3.3.2:如果t等于t2,则调用q2求和功能sum,得到服务调用总次数cnt2
步骤3.3.3:如果t等于t1并且cnt大于等于p,或者t等于t2并且cnt/cnt2大于等于q,则执行3.3.4,否则设置fi等于false,并返回false;
步骤3.3.4:设置熔断开始时间和结束时间,步骤如下
步骤3.3.4.1:获取当前时间currentTime,将熔断开始时间bg设置为currentTime;
步骤3.3.4.2:将熔断结束时间ed设置为currentTime+n;
步骤3.3.4.3:设置fi等于true,并返回true。
上述技术方案中,步骤6中,定义异常服务调用次数登记功能expServiceRecord,步骤包括,调用实例q1入队列功能pushQueue;
定义服务调用次数登记功能serviceRecord,步骤包括,调用q2入队列功能pushQueue。
上述技术方案中,还包括queue重置功能resetQueue,步骤包括:遍历queue,将各个元素值设置为0。
上述技术方案中,元素值value的总和cnt通过以下步骤实现:
步骤A9.1.定义queue求和功能sum,其功能
步骤A9.2.:定义总数变量cnt=0;
步骤A9.3.:遍历queue,将各个元素值value相加结果赋值给cnt;
步骤A9.4:返回cnt。
因为本发明采用上述技术方案,因此具备以下有益效果:
1、滑动时间窗的熔断机制,则解决了上述问题。该机制定义了一个跨度较大的时间窗,同时将时间窗口拆分成可自定义的小刻度,窗口的滑动粒度则以这些小刻度为尺度。每当服务调用异常(失败或者超时),则将该服务统计到当前时间所对应的时间刻度内。而判断服务是否熔断的方式是统计整个时间窗内该服务调用异常总数量或者比率。通过这种方式,可以更精细的控制时间窗的滑动,同时也节省了资源,提升了实时性。
2、通过定义时间窗和滑动刻度两个维度,让时间窗按照更细的刻度滑动,使得服务器对流量的统计和控制更加平滑,减少因临界时刻数据统计的突增导致服务熔断。
3、通过在内存中开辟环形队列的方式进行统计,减少了传统的通过对数据库或者日志数据进行统计的资源(磁盘、CPU、内存)消耗。
4、通过在服务调用的时候实时进行数据统计和熔断判定,服务器对流量的统计和控制更加及时有效(对数据库或者日志进行统计,中间存在着数据落盘再统计的步骤,这种统计方式存在着一定的滞后性)。
5、通过配置表的方式可以让服务器的各个服务拥有不同的熔断规则参数,可以保证对服务器的各个服务进行更精细的熔断管理。
6、通过设定滑动刻度,让时间窗更加精细的滑动,可以减少恶意调用对服务器的攻击可能性。滑动刻度越小,时间窗滑动就越快,数据统计分布越均匀,服务器就不会因为某个时刻的恶意调用导致服务停摆。
附图说明
图1为服务异常调用次数登记环队示意图;
图2为环形队列随着时间窗滑动而变化示意图;
图3为时间窗的滑动到环形队列的演变示意图;
图4为时间窗的滑动对统计数据影响示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操1作1之441间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
实施例
还包括熔断服务调用入口实现步骤:
步骤B1:定义时间窗T,滑动刻度k,熔断类型t,熔断开始时间t1,熔断时长n,定义服务名称与服务熔断实例映射map,异常服务调用次数阈值p,异常服务调用比例阈值q0;
步骤B2:定服务熔断功能fuseProcess入参服务名称a,具体步骤如下:
步骤B2.1:根据a从map中获取该服务的服务熔断实例fuseService;
步骤B2.2:如果fuseService不存在,从配置表中读取当前服务a的熔断配置,其内容包括:时间窗T,滑动刻度k,熔断类型t,异常服务调用次数阈值p,异常服务调用比例阈值,然后调用S2熔断服务构造函数init;入参分别是(T,k.t,p,q,n),实例化一个熔断服务fuseService,并在map中保存a与fuseService映射。
步骤B2.3:调用fuseService的processFuse功能完成服务熔断调用。
在本实施例上述技术方案进一步的,S1:环形队列queue实现包括如下步骤
步骤0:声明时间窗大小T,时间窗滑动刻度k,动态下标为index(初始值为0)。数组queue;
步骤1:定义环形队列类构造函数queueInit参数(a,b),功能如下:
步骤1.1:设置T=a,k=b;
步骤1.2:设置队列的大小为size=T/k。
步骤2:定义一个定时器task,定时任务执行周期为k,执行任务如下:
步骤2.1:queue[index+1]=0;
步骤2.2:index=(index+1)%size。
进一步的这里定时器是单独的一个线程处理,模拟时间窗的滑动,目的就是不断地更新index,并将最新的index对应的元素置0。其实就是完成时间窗的滑动与环形队列元素的对应关系。
步骤3:定义入队列功能pushQueue,处理步骤如下:
步骤3.1:加同步锁;
步骤3.2:获取动态下标index;
步骤3.3:获取queue在index下标处的元素值value;
步骤3.4:将queue在index下标处的元素值设置为(value+1);
步骤3.5:释放同步锁。
步骤4:定义queue求和功能sum,其功能:
步骤4.1:定义总数变量cnt=0;
步骤4.2:遍历queue,将各个元素值value相加结果赋值给cnt;
步骤4.3:返回cnt;
步骤5:定义queue重置功能resetQueue,步骤如下:
步骤5.1:遍历queue,将各个元素值设置为0;
在本实施例上述技术方案中所述的服务熔断实例fuseService实现具体为:步骤0:声明时间窗T,滑动刻度k、服务异常调用次数登记队列实例q1,服务总调用次数登记队列q2,熔断类型t,异常服务调用次数阈值p,异常服务调用比例阈值q,熔断时长n,熔断开始时间bg,熔断结束时间ed,服务是否熔断中fi,初始值为false;其中,fuseService的各个属性变量,各个变量的值,是通过步骤B2传入进来赋值的。在面向对象的应用用一个类可以有很多实例,各个实例的属性变量通过过初始化函数代入的,因此在每个功能需要单独申明声明时间窗T,滑动刻度k等。
步骤1:按照异常服务总数次数熔断,定义熔断枚举t1;
步骤2:按照异常服务比例熔断,定义熔断枚举t2;
步骤3:定义熔断服务类构造函数init参数(a,b,c,d,e,f)
步骤3.1:设置T=a,k=b,t=c,p=d,q=e,n=f
步骤3.2:调用S1功能queueInit,入参为(T,k)初始化q1,q2
步骤3.3:分别启动q1、q2定时器task,执行定时任务
步骤4:定义是否需要熔断判断功能shouldFuse,具体步骤如下
步骤4.1:如果fi为true,执行4.2,否则,执行4.3
步骤4.2:步骤如下
步骤4.2.1:获取当前时间currentTime
步骤4.2.2:如果currentTime>=bg并且currentTime<=ed,则返回true;否则。执行4.2.3
步骤4.2.3:将fi设置为false
步骤4.2.4:调用q1重置功能resetQueue,重置q1
步骤4.2.5:如果t等于t2,调用q2重置功能resetQueue,重置q2
步骤4.2.6:返回false。
步骤4.3:步骤如下
步骤4.3.1:如果t等于t1,调用q1求和功能sum,得到异常服务调用总数cnt;
步骤4.3.2:如果t等于t2,则调用q2求和功能sum,得到服务调用总次数cnt2
步骤4.3.3:如果t等于t1并且cnt大于等于p,或者t等于t2并且cnt/cnt2大于等于q,则执行4.3.4,否则设置fi等于false,并返回false;
步骤4.3.4:设置熔断开始时间和结束时间,步骤如下
步骤4.3.4.1:获取当前时间currentTime,将熔断开始时间bg设置为currentTime
步骤4.3.4.2:将熔断结束时间ed设置为currentTime+n
步骤4.3.4.3:设置fi等于true,并返回true
步骤5:定义异常服务调用次数登记功能expServiceRecord,具体步骤如下
步骤5.1:调用q1入队列功能pushQueue
步骤6:定义服务调用调用次数登记功能serviceRecord,具体步骤如下:
步骤6.1:调用q2入队列功能pushQueue;
步骤7:定义服务熔断处理功能processFuse,步骤如下:
步骤7.1:调用是否需要熔断判断功能shouldFuse,将结果保存至a;
步骤7.2:如果a等于true,则直接将服务调用返回,不处理业务;
步骤7.3:如果a等于false,则执行如下步骤:
步骤7.3.1:如果t等于t2,则调用serviceRecord功能,登记服务总调用次数
步骤7.3.2:如果调用业务逻辑服务异常或者超时,则调用expServiceRecord功能,登记异常服务调用总次数。
步骤7.3.3:返回业务逻辑处理结果。
本领域技术人员应当得知这里调用业务逻辑可以是本地业务逻辑调用也可以是三方服务调用。

Claims (8)

1.一种基于滑动时间窗的服务熔断方法,其特征在于,包括如下步骤:
步骤1、根据时间窗口大小T和时间滑动刻度k构建,构建包含n个元素的环形队列queue,每个元素用于存放对应滑动刻度k内服务请求次数,即元素值value;
根据时间窗口大小T和时间滑动刻度k,配置一个与当前滑动刻度k对应的一个动态下标index,动态下标index指向当前时间滑动刻度k对应的元素的位置;
步骤2、按照步骤1分别得到服务异常调用次数登记环队列实例q1、服务总调用次数登记环队列q2;
步骤3、当服务器接收服务请求时,通过是否需要熔断判断功能shouldFuse,判断是否熔断,将结果保存至a;
步骤4:如果a等于true,则直接将服务调用返回,不处理业务,这里返回的可以是一个服务熔断的提示;
步骤5:如果a等于false,则执行如下步骤
步骤6:调用serviceRecord功能,登记服务总调用次数,如果调用业务逻辑服务异常或者超时,则调用expServiceRecord功能,登记异常服务调用总次数;
步骤7:返回业务逻辑处理结果。
2.根据权利要求1所述的一种基于滑动时间窗的服务熔断方法,其特征在于,步骤1具体包括以下步骤:
步骤1.1:声明时间窗大小T,时间窗滑动刻度k,动态下标index,数组queue;
步骤1.2:定义环形队列类构造函数queueInit参数(a,b),得到功能queueInit,功能如下:
步骤1.2.1:设置T=a,k=b;
步骤1.2.2:设置队列的大小为size=T/k;
步骤1.3:定义一个定时器task,该定时器启动后采用独立线程执行任务,任务执行周期为k,执行任务如下:
步骤1.3.1:queue[index+1]=0;
步骤1.3.2:index=(index+1)%size。
3.根据权利要求2所述的一种基于滑动时间窗的服务熔断方法,其特征在于,步骤6中对响应服务次数进行服务登记处理包括如下步骤:
步骤6.1:定义入队列功能pushQueue,处理步骤如下:
步骤6.1.1:加同步锁;
步骤6.1.2:获取动态下标index;
步骤6.1.3:获取queue在index下标处的元素值value;
步骤6.1.4:将queue在index下标处的元素值设置为(value+1);
步骤6.1.5:释放同步锁。
4.根据权利要求3所述的一种基于滑动时间窗的服务熔断方法,其特征在于,步骤2包括以下步骤:
步骤2.1:声明时间窗T,滑动刻度k、服务异常调用次数登记队列实例q1,服务总调用次数登记队列q2,熔断类型t,异常服务调用次数阈值p,异常服务调用比例阈值q,熔断时长n,熔断开始时间bg,熔断结束时间ed,服务是否熔断中fi,fi初始值为false;
步骤2.2:按照异常服务总数次数熔断,定义熔断枚举t1;
步骤2.3:按照异常服务比例熔断,定义熔断枚举t2;
步骤2.4:定义熔断服务类构造函数init参数(a,b,c,d,e,f);
步骤2.4.1:设置T=a,k=b,t=c,p=d,q=e,n=f;
步骤2.4.2:调用步骤1.1中所述功能queueInit,入参为(T,k)初始化实例q1,实例q2;
步骤2.4.3:分别启动实例q1、实例q2定时器task,执行定时任务。
5.根据权利要求4所述的一种基于滑动时间窗的服务熔断方法,其特征在于,步骤3中是否需要熔断判断功能shouldFuse,具体步骤如下:
步骤3.1:如果fi为true,执行3.2,否则,执行3.3,fi表示服务是否熔断状态,true为熔断中,false为未熔断中;
步骤3.2:步骤如下:
步骤3.2.1:获取当前时间currentTime;
步骤3.2.2:如果currentTime>=bg并且currentTime<=ed,则返回fi的值true,步骤结束;否则,执行3.2.3;
步骤3.2.3:将fi设置为false;
步骤3.2.4:调用实例q1重置功能resetQueue,重置实例q1;
步骤3.2.5:如果熔断类型t等于t2,调用实例q2重置功能resetQueue,重置实例q2;
步骤3.2.6:返回fi值false;
步骤3.3:步骤如下:
步骤3.3.1:调用实例q1求和功能sum,得到异常服务调用总数cnt;
步骤3.3.2:如果t等于t2,则调用q2求和功能sum,得到服务调用总次数cnt2
步骤3.3.3:如果t等于t1并且cnt大于等于p,或者t等于t2并且cnt/cnt2大于等于q,则执行3.3.4,否则设置fi等于false,并返回false;
步骤3.3.4:设置熔断开始时间和结束时间,步骤如下
步骤3.3.4.1:获取当前时间currentTime,将熔断开始时间bg设置为currentTime;
步骤3.3.4.2:将熔断结束时间ed设置为currentTime+n;
步骤3.3.4.3:设置fi等于true,并返回true。
6.根据权利要求3所述的一种基于滑动时间窗的服务熔断方法,其特征在于,步骤6中,定义异常服务调用次数登记功能expServiceRecord,步骤包括,调用实例q1入队列功能pushQueue;
定义服务调用次数登记功能serviceRecord,步骤包括,调用q2入队列功能pushQueue。
7.根据权利要求1-6任一所述的一种基于滑动时间窗的服务熔断方法,其特征在于,queue重置功能resetQueue,步骤包括:遍历queue,将各个元素值设置为0。
8.根据权利要求5所述的一种基于滑动时间窗的服务熔断方法,其特征在于,元素值value的总和cnt通过以下步骤实现:
步骤A9.1.定义queue求和功能sum,其功能
步骤A9.2.:定义总数变量cnt=0;
步骤A9.3.:遍历queue,将各个元素值value相加结果赋值给cnt;
步骤A9.4:返回cnt。
CN202010361930.5A 2020-04-30 2020-04-30 一种基于滑动时间窗的服务熔断方法 Pending CN111552587A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010361930.5A CN111552587A (zh) 2020-04-30 2020-04-30 一种基于滑动时间窗的服务熔断方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010361930.5A CN111552587A (zh) 2020-04-30 2020-04-30 一种基于滑动时间窗的服务熔断方法

Publications (1)

Publication Number Publication Date
CN111552587A true CN111552587A (zh) 2020-08-18

Family

ID=71999291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010361930.5A Pending CN111552587A (zh) 2020-04-30 2020-04-30 一种基于滑动时间窗的服务熔断方法

Country Status (1)

Country Link
CN (1) CN111552587A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113596109A (zh) * 2021-07-07 2021-11-02 上海浦东发展银行股份有限公司 业务请求运行方法、***、装置、设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110160585A1 (en) * 2009-07-01 2011-06-30 Medicinelodge, Inc. Dba Imds Co-Innovation Ultrasound for navigation through psoas muscle
CN102264104A (zh) * 2010-05-25 2011-11-30 中兴通讯股份有限公司 一种存储数据包的方法及设备
CN109240765A (zh) * 2018-08-28 2019-01-18 中国联合网络通信集团有限公司 服务资源的熔断方法、装置、设备及计算机可读存储介质
CN110377434A (zh) * 2019-07-04 2019-10-25 深圳前海微众银行股份有限公司 一种服务熔断方法、装置及消息中间件
CN111026606A (zh) * 2019-11-13 2020-04-17 苏宁云计算有限公司 基于hystrix熔断器监控的报警方法、装置及计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110160585A1 (en) * 2009-07-01 2011-06-30 Medicinelodge, Inc. Dba Imds Co-Innovation Ultrasound for navigation through psoas muscle
CN102264104A (zh) * 2010-05-25 2011-11-30 中兴通讯股份有限公司 一种存储数据包的方法及设备
CN109240765A (zh) * 2018-08-28 2019-01-18 中国联合网络通信集团有限公司 服务资源的熔断方法、装置、设备及计算机可读存储介质
CN110377434A (zh) * 2019-07-04 2019-10-25 深圳前海微众银行股份有限公司 一种服务熔断方法、装置及消息中间件
CN111026606A (zh) * 2019-11-13 2020-04-17 苏宁云计算有限公司 基于hystrix熔断器监控的报警方法、装置及计算机设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
飞向札幌的班机: "Hystrix浅入浅出:(二)断路器和滑动窗口", 《 HTTPS://BLOG.CSDN.NET/MANZHIZHEN/ARTICLE/DETAILS/80296655》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113596109A (zh) * 2021-07-07 2021-11-02 上海浦东发展银行股份有限公司 业务请求运行方法、***、装置、设备和存储介质
CN113596109B (zh) * 2021-07-07 2024-04-30 上海浦东发展银行股份有限公司 业务请求运行方法、***、装置、设备和存储介质

Similar Documents

Publication Publication Date Title
CN109814994B (zh) 一种动态调度线程池的方法及终端
Golab et al. Scheduling updates in a real-time stream warehouse
Sang et al. Precise, scalable, and online request tracing for multitier services of black boxes
CN109614270A (zh) 基于Hbase的数据读写方法、装置、设备及存储介质
CN112202617A (zh) 资源管理***监控方法、装置、计算机设备和存储介质
CN111552587A (zh) 一种基于滑动时间窗的服务熔断方法
US11620164B1 (en) Virtual partitioning of a shared message bus
CN110865877B (zh) 一种任务请求的响应方法及设备
CN111563115B (zh) 一种分布式数据库中数据分布信息的统计方法及装置
CN108255704B (zh) 一种脚本调用事件的异常响应方法及其终端
CN115858499A (zh) 一种数据库分区处理方法、装置、计算机设备和存储介质
CN114138499B (zh) Gpu资源利用率的监控方法、装置、计算机设备及介质
CN112448855B (zh) 区块链***参数更新方法和***
Yoshihisa et al. A low-load stream processing scheme for IoT environments
CN116405543A (zh) 一种微服务动态调度的方法、装置、设备及介质
CN115563015B (zh) 一种代码热度统计方法、装置、设备和存储介质
CN108536438B (zh) 处理用户行为数据的打点模块、方法及计算机可读介质
US20220405191A1 (en) Software development kit with independent automatic crash detection
CN113282405B (zh) 一种负载调整的优化方法及终端
CN117155814A (zh) 压测环境控制方法、装置、电子设备及可读存储介质
CN118093211A (zh) 一种分布式锁的处理方法、装置、设备及介质
CN116112442A (zh) 请求响应方法、装置、计算机设备、存储介质和程序产品
CN114979153A (zh) 负载均衡方法、计算机设备及存储装置
CN116302371A (zh) 事务可见性判断方法、装置、设备及存储介质
CN117493395A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20200818

RJ01 Rejection of invention patent application after publication