一种底层接口自动熔断方法及装置与流程

文档序号:15694717发布日期:2018-10-19 18:51阅读:193来源:国知局

本发明涉及h5页面应用领域,尤其涉及一种底层接口自动熔断方法及装置。



背景技术:

大型电商网站设有众多子系统,如h5,是嵌套在app的直接面向用户的页面,需要调用众多子系统接口,当某一个子系统接口不可用时,可能就会影响到h5页面业务,进而影响到用户正常使用,为了最大限度提升用户服务,当部分业务对应的底层接口不可用时,h5可以采用自动熔断机制,不调用这些不可用的接口,提升系统响应时间,并返回备份数据继续服务用户。

当前电商针对底层接口不可用的情况会采取一定的接口熔断机制,一般是通过设置降级服务进行解决:当确定某个底层接口不可用时,通过后台手工设置降低服务,即关闭页面该接口对应的功能。

然而,设置降级服务方式通常需要工作人员手工降级和手工解除降级,响应速度慢,当知道发生接口不可用要进行手工设置时可能发现问题已经恢复,或者手工设置降级后,底层接口恢复正常服务,工作人员却忘记了解除降级。



技术实现要素:

本发明实施例提供了一种底层接口自动熔断方法及装置,能够快速实现对页面的底层接口的熔断响应和熔断解除。

本发明提供了一种底层接口自动熔断方法,包括:

s0:当运行至当前预置时间段的初始时刻时,初始化底层接口的调用成功次数和调用失败次数;

s1:在当前预置时间段内,获取到底层接口的调用指令后,判断调用成功次数和调用失败次数是否满足预置判据,若是,执行s2,若不是,则执行s3;

s2:熔断底层接口,获取与底层接口对应的备用数据并发送至底层接口对应的页面;

s3:调用底层接口,并根据底层接口的服务正常与否对调用成功次数或调用失败次数进行计数;

s4:当运行至当前预置时间段的结束时刻时,进入下一个预置时间段,并将下一个预置时间段作为当前时间段,重新执行步骤s0。

优选地,步骤s1具体为:

在当前预置时间段内,获取到底层接口的调用指令后,判断底层接口是否满足底层接口调用失败的累计次数大于预置失败次数且调用失败比率大于预置失败比率,若是,执行s2,若不是,则执行s3;

其中,调用失败比率=调用失败次数/(调用成功次数+调用失败次数)。

优选地,步骤s3具体为:

s31:调用底层接口,并判断底层接口是否正常服务,若是,执行s32,若不是,则执行s33;

s32:将调用成功次数增加一;

s33:将调用失败次数增加一,再获取与底层接口对应的备用数据并发送至底层接口对应的页面。

优选地,步骤s32具体为:

将调用成功次数增加一,并将与被成功调用的底层接口对应的当前数据在缓存中更新为备用数据。

优选地,当前预置时间段为一分钟。

优选地,本发明还提供了一种底层接口自动熔断装置,包括:

初始化单元,用于当运行至当前预置时间段的初始时刻时,初始化底层接口的调用成功次数和调用失败次数;

判断单元,用于在当前预置时间段内,获取到底层接口的调用指令后,判断调用成功次数和调用失败次数是否满足预置判据,若是,触发获取单元,若不是,则触发计数单元;

获取单元,用于熔断底层接口,获取与底层接口对应的备用数据并发送至底层接口对应的页面;

计数单元,用于调用底层接口,并根据底层接口的服务正常与否对调用成功次数或调用失败次数进行计数;

循环单元,用于当运行至当前预置时间段的结束时刻时,进入下一个预置时间段,并将下一个预置时间段作为当前时间段,重新触发初始化单元。

优选地,判断单元还用于在当前预置时间段内,获取到底层接口的调用指令后,判断底层接口是否满足底层接口调用失败的累计次数大于预置失败次数且调用失败比率大于预置失败比率,若是,触发获取单元,若不是,则触发计数单元;

其中,调用失败比率=调用失败次数/(调用成功次数+调用失败次数)。

优选地,计数单元具体包括:

判断子单元,用于调用底层接口,并判断底层接口是否正常服务,若是,触发第一计数子单元,若不是,则触发第二计数子单元;

第一计数子单元,用于将调用成功次数增加一;

第二计数子单元,用于将调用失败次数增加一,再获取与底层接口对应的备用数据并发送至底层接口对应的页面。

优选地,第一计数子单元还用于将调用成功次数增加一,并将与被成功调用的底层接口对应的当前数据在缓存中更新为备用数据。

优选地,当前预置时间段为一分钟。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例提供了一种底层接口自动熔断方法及装置,本发明先通过在当前预置时间段的初始时刻初始化底层接口的调用成功次数和调用失败次数,在当前预置时间段中,获取到接口的调用指令后,根据调用成功次数和调用失败次数判断接口是否需要熔断,若需要则进行熔断则执行相应的熔断操作,若不需要,则调用该接口,并根据该接口是否正常服务对调用成功次数和调用失败次数进行计数,直至运行当前预置时间段的结束时刻。本发明在当前预置时间段中,可以获取到该接口多次调用的指令,在接口调用之前,需要根据调用成功次数和调用失败次数判断是否进行熔断,若该接口还未熔断,每一次调用均会根据该接口的服务情况对调用成功次数或调用失败次数进行计数,因此,在获取下一次接口调用指令之后,能根据上一次计数的成功次数和失败次数判断该接口是否需要进行熔断,能够快速响应接口熔断。当接口的调用成功次数和调用失败次数满足预置判据后,在当前预置时间段内将接口熔断后,则会一直保持熔断状态直至进入下一个预置时间段,若在某一个预置时间段内恢复正常,由于在进入每一个预置时间段的初始时刻会对调用成功次数和调用失败次数初始化,则可以在短时间内快速解除对接口的熔断。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明提供的一种底层接口自动熔断方法的一个实施例的流程示意图;

图2为本发明提供的一种底层接口自动熔断方法的另一个实施例的流程示意图;

图3为本发明提供的一种底层接口自动熔断装置的一个实施例的结构示意图。

具体实施方式

本发明实施例提供了一种底层接口自动熔断方法及装置,能够快速实现对页面的底层接口的熔断响应和熔断解除。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,本发明提供的一种底层接口自动熔断方法的一个实施例,包括:

101、当运行至当前预置时间段的初始时刻时,初始化底层接口的调用成功次数和调用失败次数;

102、在当前预置时间段内,获取到底层接口的调用指令后,判断调用成功次数和调用失败次数是否满足预置判据,若是,执行103,若不是,则执行104;

103、熔断底层接口,获取与底层接口对应的备用数据并发送至底层接口对应的页面;

104、调用底层接口,并根据底层接口的服务正常与否对调用成功次数或调用失败次数进行计数;

105、当运行至当前预置时间段的结束时刻时,进入下一个预置时间段,并将下一个预置时间段作为当前时间段,重新执行步骤101。

本发明先通过在当前预置时间段的初始时刻初始化底层接口的调用成功次数和调用失败次数,在当前预置时间段中,获取到接口的调用指令后,根据调用成功次数和调用失败次数判断接口是否需要熔断,若需要则进行熔断则执行相应的熔断操作,若不需要,则调用该接口,并根据该接口是否正常服务对调用成功次数和调用失败次数进行计数,直至运行当前预置时间段的结束时刻。本发明在当前预置时间段中,可以获取到该接口多次调用的指令,在接口调用之前,需要根据调用成功次数和调用失败次数判断是否进行熔断,若该接口还未熔断,每一次调用均会根据该接口的服务情况对调用成功次数或调用失败次数进行计数,因此,在获取下一次接口调用指令之后,能根据上一次计数的成功次数和失败次数判断该接口是否需要进行熔断,能够快速响应接口熔断。当接口的调用成功次数和调用失败次数满足预置判据后,在当前预置时间段内将接口熔断后,则会一直保持熔断状态直至进入下一个预置时间段,若在某一个预置时间段内恢复正常,由于在进入每一个预置时间段的初始时刻会对调用成功次数和调用失败次数初始化,则可以在短时间内快速解除对接口的熔断。

以上为一种底层接口自动熔断方法的一个实施例,为进行更具体的说明,下面提供一种底层接口自动熔断方法的另一个实施例,请参阅图2,本发明提供的一种底层接口自动熔断方法的另一个实施例,包括:

201、当运行至当前预置时间段的初始时刻时,初始化底层接口的调用成功次数和调用失败次数;

在本实施例中,每个预置时间段均是等长的,可以将其设置为时长一分钟,需要说明的是,该时长可以根据实际需求进行调整。在进入当前预置时间段的初始时刻时,将底层接口的调用成功次数和调用失败次数初始化为零,需要理解的是,本发明实施例可以在每个被调用的接口设置一个对应的独立计数器,该计数器用于对记录两个数据,即调用成功次数和调用失败次数,时间粒度即为预置时间段的时长,每过一个预置时间段,则开始重新计数。

202、在当前预置时间段内,获取到底层接口的调用指令后,判断底层接口是否满足底层接口调用失败的累计次数大于预置失败次数且调用失败比率大于预置失败比率,若是,执行203,若不是,则执行204;

经过当前预置时间段的初始时刻后,在当前预置时间段内,获取到底层接口的调用指令,可以理解的是,一个接口在当前预置时间段内可能被多次调用,因此会获取到多次该接口的调用指令,在获取到接口的每次调用指令后,均需要对该接口进行熔断需求判断,即判断该底层接口是否满足底层接口调用失败的累计次数大于预置失败次数且调用失败比率大于预置失败比率,若是,执行203,若不是,则执行204。其中,调用失败比率=调用失败次数/(调用成功次数+调用失败次数)。

203、熔断底层接口,获取与底层接口对应的备用数据并发送至底层接口对应的页面;

在判断底层接口在当前预置时间段内需要进行熔断后,获取与底层接口对应的备用数据并发送至底层接口对应的页面,如该底层接口在页面所对应的功能是分类,若用户在该页面选择使用分类功能时,由于该接口的已经被熔断,则在缓存中获取该接口最近执行分类的备份数据,发送至页面以供用户进行使用。

204、调用底层接口,并判断底层接口是否正常服务,若是,执行205,若不是,则执行206;

在判断底层接口在当前预置时间段内不需要进行熔断后,则调用该接口,然后确定该接口的服务情况,可以理解的是,该接口一般存在两种服务情况,即服务正常和服务不正常。

205、将调用成功次数增加一,并将与被成功调用的底层接口对应的当前数据在缓存中更新为备用数据;

若该底层接口服务正常,则将调用成功次数增加一,并将与被成功调用的底层接口对应的当前数据在缓存中更新为备用数据。如以上例子,分类功能的接口在服务正常后,将该接口被调用后,成功分类的数据储存进缓存中作为备份数据。

206、将调用失败次数增加一,再获取与底层接口对应的备用数据并发送至底层接口对应的页面;

若该底层接口服务不正常,则将调用失败次数增加一,再获取与底层接口对应的备用数据并发送至底层接口对应的页面。

207、当运行至当前预置时间段的结束时刻时,进入下一个预置时间段,并将下一个预置时间段作为当前时间段,重新执行步骤201。

可以理解的是,在当前预置时间段内,可以发生多次接口被调用,即发生多次步骤202至206,若当前预置时间段结束后,则进入下一个预置时间段,重新执行步骤201。

以下将提供一个具体应用场景对本发明进行更为具体的说明:

本场景将预置时间段的时长设置为一分钟。

(1)在当前一分钟a开始时,将接口的调用成功次数和调用失败次数初始化为零;

(2)在进行到当前这一分钟a的第5秒时,获取到用户的底层接口调用指令,则根据判据判断该接口是否熔断,具体判据为判断该底层接口是否满足底层接口调用失败的累计次数大于预置失败次数(本场景设置为5)且调用失败比率大于预置失败比率(本场景设置为0.5),其中,调用失败比率=调用失败次数/(调用成功次数+调用失败次数)。

由于此时调用成功次数和调用失败次数均为零,故不满足该判据,则判断该接口不需要进行熔断。

(3)调用该接口,若该接口正常服务,则将调用成功次数加一,且将被成功调用的接口对应的当前数据在缓存中更新为备份数据。该接口服务不正常,则将调用失败次数加一,从缓存中获取该接口的备用数据发送至页面供用户使用;

(4)进行当前这一分钟a的第8秒时,又再获取到用户调用该接口的指令,则重复执行以上步骤(2)和(3)。在这一分钟第8秒至第20秒时,有若干次该接口的调用指令,每一次指令均执行步骤(2)和(3),此处不再赘述。

(5)在当前这一分钟a的第25秒时,获取到该接口的指令后,对调用成功次数和调用失败次数进行计算后满足判据,则将该接口熔断。当确认该接口熔断后,直至这一分钟结束时,该接口均为熔断状态。

(6)当前这一分钟a结束后,进入下一分钟b,依旧对该接口的调用成功次数和调用失败次数初始化为零,此时,无论该接口的服务状态如何(即恢复正常或依旧处于服务不正常),均需重新进行熔断判断和接口正常服务判断,有以下两种情况:

情况一:在经历这一分钟b的初始时刻后,获取到该接口的某一次调用指令,假设接口还未恢复正常,仍根据调用成功次数和调用失败次数判断其是否需要熔断,因为接口未恢复正常,一开始调用失败次数累计不足时,无法满足判据,依旧会进入调用接口的步骤,调用失败后则进行计数,在接口被连续调用失败数次后直至满足判据后,则在这一分钟b内接口又进入了熔断状态,并以此状态进入下一分钟c。

情况二:在经历这一分钟b的初始时刻后,获取到该接口的某一次调用指令后,假设此时还未满足判据且接口恢复正常(可以是刚进入这一分钟b时就恢复正常,也可以是在这一分钟b内已经调用失败数次后,但未达到累计次数后的某一秒时恢复正常),依旧根据调用成功次数和调用失败次数判断其是否需要熔断,因为不满足判据故不需对接口进行熔断,进入调用接口的步骤,此时则解除了对接口的熔断。因此,由于有判据的存在,当接口恢复正常服务后,最多一分钟内就可以实现解除熔断,且在这一分钟内,接口恢复服务了就不会再触发熔断,所以熔断和解除熔断时效性强。

以上是对本发明提供的一种底层接口自动熔断方法进行的详细说明,以下将对本发明提供的一种底层接口自动熔断装置进行说明,请参阅图3,本发明提供的一种底层接口自动熔断装置的一个实施例包括:

初始化单元301,用于当运行至当前预置时间段的初始时刻时,初始化底层接口的调用成功次数和调用失败次数;

判断单元302,用于在当前预置时间段内,获取到底层接口的调用指令后,判断调用成功次数和调用失败次数是否满足预置判据,若是,触发获取单元303,若不是,则触发计数单元304;

获取单元303,用于熔断底层接口,获取与底层接口对应的备用数据并发送至底层接口对应的页面;

计数单元304,用于调用底层接口,并根据底层接口的服务正常与否对调用成功次数或调用失败次数进行计数;

循环单元305,用于当运行至当前预置时间段的结束时刻时,进入下一个预置时间段,并将下一个预置时间段作为当前时间段,重新触发初始化单元301。

更进一步地,判断单元302还用于在当前预置时间段内,获取到底层接口的调用指令后,判断底层接口是否满足底层接口调用失败的累计次数大于预置失败次数且调用失败比率大于预置失败比率,若是,触发获取单元303,若不是,则触发计数单元304;

其中,调用失败比率=调用失败次数/(调用成功次数+调用失败次数)。

更进一步地,计数单元304具体包括:

判断子单元3041,用于调用底层接口,并判断底层接口是否正常服务,若是,触发第一计数子单元3042,若不是,则触发第二计数子单元3043;

第一计数子单元3042,用于将调用成功次数增加一;

第二计数子单元3043,用于将调用失败次数增加一,再获取与底层接口对应的备用数据并发送至底层接口对应的页面。

更进一步地,第一计数子单元3041还用于将调用成功次数增加一,并将与被成功调用的底层接口对应的当前数据在缓存中更新为备用数据。

更进一步地,当前预置时间段为一分钟。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1