一种服务请求的方法、装置、计算机设备及存储介质与流程

文档序号:26835635发布日期:2021-10-01 09:35阅读:96来源:国知局
一种服务请求的方法、装置、计算机设备及存储介质与流程

本发明涉及计算机网络技术领域,更为具体来说,本发明能够提供一种服务请求的方法、装置、计算机设备及存储介质。

背景技术

在微服务架构中,熔断机制属于一种使用频率较高的微服务链路保护机制。在启动服务熔断之后,根据预先设定的间隔时间段后关闭熔断重新进行服务请求,如果服务仍不可用再次启动服务熔断以及经过间隔时间段重新发起服务请求和判断服务是否可用,反复执行上述等待和判断过程,直至服务正常可用。很显然,这种不断尝试的方法不仅造成了大量资源的浪费,而且通过服务请求判断是否可用的过程增加了服务提供方的负担,导致恢复服务正常调用的时间非常长,一般都需要经过多个上述间隔时间段(MMTR,Mean Time To Recover from downtime,平均停机恢复时间),进而导致用户的等待时间过长、用户体验非常差等问题,故亟待需要解决。



技术实现要素:

为解决常规技术在服务熔断后存在的恢复时间长、用户等待时间过长等问题,本发明能够提供一种服务请求的方法、装置、计算机设备及存储介质,以达到极大地缩短服务恢复至正常的时间、提高用户满意度等目的。

为实现上述的技术目的,本发明提供了一种服务请求的方法,该方法可包括但不限于如下的至少一个步骤。

获取用于当前服务的熔断状态信息,所述熔断状态信息包括熔断打开和熔断关闭;

若所述熔断状态信息为熔断打开的状态,向提供所述当前服务的接口发出握手连接请求,并确定握手连接成功或握手连接失败;

基于发出的所述握手连接请求统计预设时间段内的握手连接成功的次数;其中,若握手连接失败,则重新统计握手连接成功的次数;

若所述握手连接成功的次数达到第一阈值,停止熔断当前服务并更新所述熔断状态信息为熔断关闭;

响应于所述当前服务熔断关闭的状态,发出当前服务的请求信息。

进一步地,所述基于发出的所述握手连接请求统计预设时间段内的握手连接成功的次数包括:

根据发出握手连接请求触发定时计数器启动,所述定时计数器用于在被触发后的所述预设时间段内进行计数;

在所述预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化;

根据所述定时计数器数值统计握手连接成功的次数。

进一步地,所述在所述预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化包括:

根据握手连接成功的消息控制定时计数器数值增加,和/或根据握手连接失败的消息控制定时计数器数值复位为初始值;

判断定时计数器已启动时长,以及根据所述已启动时长达到所述预设时间段停止定时计数器计数,或者根据所述已启动时长小于所述预设时间段继续根据握手连接成功和/或失败的消息控制定时计数器数值变化。

进一步地,所述熔断状态信息还包括熔断半打开。

所述统计预设时间段内的握手连接成功的次数之后还包括:

根据所述握手连接成功的次数达到第二阈值,更新所述熔断状态信息为熔断半打开;所述第二阈值小于所述第一阈值;

根据所述熔断状态信息为熔断半打开,向提供所述当前服务的接口发出测试服务;所述测试服务占用的流量小于所述当前服务占用的流量;

根据所述测试服务请求成功更新所述熔断状态信息为熔断关闭,或者根据所述测试服务请求失败更新所述熔断状态信息为熔断打开。

进一步地,所述根据所述熔断状态信息为熔断半打开,向提供所述当前服务的接口发出测试服务包括:

根据所述熔断状态信息为熔断半打开创建线程池;

通过所述线程池提供用于形成测试服务的至少一个线程;

利用所述至少一个线程向提供所述当前服务的接口发出测试服务。

进一步地,所述向提供所述当前服务的接口发出握手连接请求包括:

读取用于测试网络连接量的数据包;

通过所述数据包生成握手连接请求;

将所述握手连接请求发送至所述提供所述当前服务的接口。

进一步地,所述向提供所述当前服务的接口发出握手连接请求还包括:

发出握手连接请求的同时获取所述接口对应服务器的可用流量;

比较所述可用流量与所述当前服务占用的流量;

根据所述可用流量大于或等于所述当前服务占用的流量停止熔断当前服务,并更新所述熔断状态信息为熔断关闭;

为实现上述的技术目的,本发明还能够提供一种服务请求的装置,该装置包括但不限于熔断状态获取模块、连接请求发出模块、连接次数统计模块、服务熔断停止模块以及服务请求发出模块。

熔断状态获取模块,用于获取用于当前服务的熔断状态信息,所述熔断状态信息包括熔断打开和熔断关闭。

连接请求发出模块,用于根据所述熔断状态信息为熔断打开的状态,向提供所述当前服务的接口发出握手连接请求,并确定握手连接成功或握手连接失败。

连接次数统计模块,用于基于发出的所述握手连接请求统计预设时间段内的握手连接成功的次数。

服务熔断停止模块,用于根据所述握手连接成功的次数达到第一阈值,停止熔断当前服务以及更新所述熔断状态信息为熔断关闭。

服务请求发出模块,用于响应于所述当前服务熔断关闭的状态,发出当前服务的请求信息。

为实现上述的技术目的,本发明还能够提供一种计算机设备,计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行本发明任一实施例中所述服务请求的方法的步骤。

为实现上述的技术目的,本发明还可提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得所述一个或多个处理器执行本发明任一实施例中所述服务请求的方法的步骤。

本发明的有益效果为:相比于传统控制服务熔断结束的方案,本发明能够以握手连接成功的次数作为是否结束熔断的判断依据,以达到更快地恢复服务的目的,具有时效性更佳、效率高等技术效果,极大提升了用户体验和满意度。可见本发明能够保证上游服务器和下游服务器的正常运行,即保证服务提供方可正常地为服务请求方提供目标服务,以避免由于熔断机制停止服务而导致相关业务停止、用于等待时间过长以及用户体验差等问题,特别对于并发服务较高的场景,例如电商促销或保险限购场景,本发明的时效优势更为明显。另外,本发明通过握手连接请求作为判断服务请求方状态的依据,还有助于减少计算资源的浪费。

附图说明

图1示出了本发明一个或多个实施例中服务请求的方法的流程示意图。

图2示出了本发明一些实施例中通过定时计数器实现握手连接成功次数统计的流程示意图。

图3示出了本发明一些实施例中基于小流量测试服务控制服务熔断关闭的流程示意图。

图4示出了本发明一些实施例中生成以及发送握手连接请求的流程示意图。

图5示出了本发明一个或多个实施例中服务请求的装置的结构组成示意图。

图6示出了本发明一个或多个实施例中计算机设备的内部结构示意图。

具体实施方式

下面结合说明书附图对本发明所提供的一种服务请求的方法、装置、计算机设备及存储介质进行详细的解释和说明。

本发明中涉及的服务熔断是指:在软件系统中如果出现了过载现象,为了防止由于过载可能导致整个软件系统故障的问题而采用的一种保护措施,以避免故障影响的扩大和避免导致全局性的问题。通过服务熔断的方式能够快速地释放资源,以等待目标服务情况好转时再恢复对其的正常调用;但常规技术存在恢复目标服务正常调用的等待时间过长等问题。

鉴于常规技术存在的至少一个问题,本发明一个或多个实施例可提供一种服务请求的方法,达到缩短目标服务恢复至正常的时间、减少用户的等待时间以及提升用户体验等技术目的。

如图1所示,本发明实施例中服务请求的方法可包括但不限于如下的一个或多个步骤,具体说明如下。

步骤100,获取用于当前服务的熔断状态信息。本发明中的熔断状态信息具体可包括熔断打开和熔断关闭。

本发明根据服务调用结果启动上述熔断状态信息的获取:具体可获取服务调用连续失败的次数,根据服务调用连续失败的次数达到阈值或者在指定时间段内失败比例达到设定比例,则启动获取熔断状态信息的步骤;本发明一些实施例中的阈值为20次,指定时间段为10分钟,设定比例为70%。应当理解的是,本发明中熔断打开是指不允许任何请求通过,熔断关闭是指允许所有请求通过。本实施例中服务请求方例如为上游服务器,服务提供方例如为下游服务器,服务调用连续失败的次数可为上游服务器调用下游服务器连续失败的次数。在将本发明技术方案应用于SpringCloud微服务框架下时能够通过Hystrix实现服务熔断功能情况下,下游服务器具体为微服务框架中的节点。

可选地,本发明实施例根据服务调用连续失败的次数达到阈值或者在指定时间段内失败比例达到设定比例且熔断状态信息为熔断关闭时,发出熔断打开指令,以能在其他功能组件未启动熔断情形下强制熔断当前服务。

步骤200,若熔断状态信息为熔断打开的状态,向提供当前服务的接口发出握手连接请求,并确定握手连接成功或握手连接失败。

如图4所示,本发明实施例向提供当前服务的接口发出握手连接请求包括步骤201~203。

步骤201,读取用于测试网络连接量的数据包。本实施例中的数据包为ping(Packet Internet Groper,因特网包探索器)包,该ping包可用于测试网络连接量。步骤202,通过数据包生成握手连接请求,即本发明该实施例可通过ping包实现握手连接功能。步骤203,将握手连接请求发送至提供当前服务的接口。本发明通过ping包实现握手请求连接的方式不需要等待消息回传即可确定请求连接结果,所以该方式消耗的时间更短,有助于更快判断出是否能够结束服务熔断状态,进一步减少用户等待时间和提升用户满意度。

可选地,本发明还有一些实施例能够实现向提供当前服务的接口发出握手连接请求:生成心跳检测信息,并基于该心跳检测信息生成握手连接请求,将具有心跳检测信息的握手连接请求发送给提供当前服务的接口。该方式能够更好地适用于跨平台环境或具有不同运行机制的上游服务器和下游服务器,从而提高握手连接请求的可靠性,为服务熔断的解除提供更准确的判断或依据。

可选地,本发明实施例向提供当前服务的接口发出握手连接请求还包括步骤204~206。步骤204,发出握手连接请求的同时获取接口对应服务器的可用流量;步骤205,比较可用流量与当前服务占用的流量;步骤206,根据可用流量大于或等于当前服务占用的流量停止熔断当前服务,并更新熔断状态信息为熔断关闭。

步骤300,基于发出的握手连接请求,统计预设时间段内的握手连接成功的次数;其中,若握手连接失败,则重新统计握手连接成功的次数。

如图2所示,本发明实施例基于发出的握手连接请求统计预设时间段内的握手连接成功的次数包括步骤301~303。

步骤301,根据发出握手连接请求触发定时计数器启动,定时计数器用于在被触发后的预设时间段内进行计数。其中,预设时间段例如可以是10秒,当然并不限于此。

步骤302,在预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化。由此可见,本发明能够通过握手连接结果改变定时计数器数值,从而通过定时计数器数值描述握手连接情况。

步骤303,在预设时间段内根据定时计数器数值统计握手连接成功的次数,以判断出服务提供方的状况。

本发明通过设置定时计数器数值可量化地反馈握手连接情况,该方式自动、智能且准确地记录与服务提供方成功连接的次数,具有运行稳定且可靠性高等优点。

可选地,本发明实施例在预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化包括步骤312和322。

步骤312,根据握手连接成功的消息控制定时计数器数值增加,和/或根据握手连接失败的消息控制定时计数器数值复位为初始值。本实施例中一次握手连接成功可使定时计数器数值加1,一次握手连接失败可使定时计数器数值复位为0,即本实施例定时计数器的初始值为0。可见在计数过程中,只要有一次握手连接失败,则定时计数器重新开始计数。

步骤322,判断定时计数器已启动时长,以及根据已启动时长达到预设时间段停止定时计数器计数,即停止本次判断过程;或者,根据已启动时长小于预设时间段,继续根据握手连接成功和/或失败的消息控制定时计数器数值变化,即返回步骤312。可见在预设时间段内,本实施例基于连续握手成功的条件对握手连接成功次数进行总计,即基于握手连接成功的连续性作为定时计数器累计计数的依据,该方式能够更准确、更可靠地判断出服务提供方的实际状态,以尽快地结束熔断和恢复目标业务。

如图3所示,在一些改进的方案中,本发明实施例统计预设时间段内的握手连接成功的次数之后还包括步骤410~430。本实施例中的熔断状态信息还包括熔断半打开,熔断半打开是指允许部分请求通过。

步骤410,根据握手连接成功的次数达到第二阈值,更新熔断状态信息为熔断半打开。第二阈值小于第一阈值,本实施例中第一阈值例如可以为10,第二阈值例如可以为6。

步骤420,根据上述熔断状态信息为熔断半打开,向提供当前服务的接口发出测试服务;测试服务占用的流量小于当前服务占用的流量,本实施例中的测试服务占用的流量=15%×当前服务占用的流量,或测试服务占用的流量=5%×服务提供方(例如下游服务器)总负荷,为测试服务分配的流量可根据实际情况进行设定,本实施例不再进行赘述。

可选地,本发明实施例向提供当前服务的接口发出测试服务包括步骤421~423。步骤421,根据熔断状态信息为熔断半打开创建线程池,线程池能够用于同时管理多个线程的调度和使用。步骤422,通过线程池提供用于形成测试服务的至少一个线程,并为形成测试服务的线程设置一定的流量;例如,本实施例中测试服务占用的流量=5%×服务提供方总负荷对应的流量。步骤423,再利用其中至少一个线程向提供当前服务的接口发出测试服务。本发明一些实施例通过新创建的线程池对流量进行合理分配,从而有效避免服务请求带来的流量一次性涌入下游服务器而可能导致的下游服务器雪崩效应,提高了当前服务请求访问的可靠性和安全性。通过避免雪崩效应的发生而保证业务的正常运行,减少服务熔断的次数,提升用户体验。其中,雪崩效应是指服务提供者的不可用导致服务请求者的不可用,并将不可用逐渐放大的过程。

另外,基于线程池管理方式,本实施例中用户发出的服务请求不需要直接访问服务,而是可通过线程池中的空闲线程对服务进行访问,即使在线程池中无空闲线程,也不会堵塞用户服务请求,至少会反馈给用户一个对应执行结果,例如相关提示信息等,避免用户无休止地等待结果,由此进一步提升了用户的使用体验。

可选地,本发明一些实施例中的用于向提供当前服务的接口发出测试服务的线程为延时线程。在启动延时线程后,经过指定延时时间再向接口发出测试服务请求,其中延时时间<握手连续成功次数达到第一阈值占用的时长-握手连续成功次数达到第一阈值占用的时长。本实施例能够通过延时线程方式进一步保护下游服务器,尽可能地为下游服务器恢复正常的工作争取时间,以进一步避免服务器雪崩效应的发生。

步骤430,根据测试服务请求成功更新熔断状态信息为熔断关闭,或者根据测试服务请求失败更新熔断状态信息为熔断打开和控制定时计数器复位为初始值。

由此可见,本发明一些实施例能够在握手连续成功次数达到第二阈值而未达到第一阈值时启动熔断半打开状态,以通过小流量探测的方式判断服务提供方是否能够正常地提供目标服务。这种改进后的方式能够有助于更早地结束熔断状态,实现进一步缩短目标业务恢复时间,用户体验更好、满意度更高。

步骤400,若握手连接成功的次数达到第一阈值,停止熔断当前服务并更新熔断状态信息为熔断关闭。本实施例中的第一阈值可以是一个具体值,本发明另一些实施例中的第一阈值可以是一个变量,具体为最大成功连接数变量,并可根据实际应用场景而改变具体值,本发明能够通过最大成功连接数变量作为连续握手连接成功次数的判断依据。

步骤500,响应于当前服务熔断关闭的状态,发出当前服务的请求信息。可选地,本发明一些实施例在向用于提供当前服务(即目标服务)的接口发出握手连接请求的同时获取下游服务器的可用流量,以及读取当前服务所需流量;将可用流量与所需流量进行比较,根据可用流量大于所需流量关闭熔断以及发出当前服务的请求信息,或者根据可用流量等于当前服务所需流量延迟关闭熔断和发出当前服务的请求信息。可见本发明能够预判下游服务器是否具有承载当前服务的能力,以订单系统(服务请求方)调用财务系统(服务提供方)为例,当前财务系统已经占用90%的负荷,如果关闭熔断后服务请求的流量超过财务系统总负荷的10%,则很可能会导致财务系统的雪崩和服务瘫痪,本发明实施例能够有助于避免该问题的发生。

可选地,本发明还有一些实施例包括:发出当前服务的请求信息之后获取下游服务器的运行状态信息,以及根据运行状态信息判断下游服务器出现故障的概率;根据故障的概率大于或等于安全值时再次熔断当前服务以及返回本发明步骤100,或者可根据故障的概率小于安全值时锁定熔断状态在设定次数服务请求过程中始终保持关闭;其中安全值例如为0.78。本发明能够根据下游服务器的良好状态在一段时间内避免服务熔断发生,通过该方式能够避免因判断失误等原因导致的意外熔断问题,以提高业务运行的可靠性和稳定性。

如图5所示,与服务请求的方法基于同一发明构思,本发明实施例还提供一种服务请求的装置,该装置包括熔断状态获取模块、连接请求发出模块、连接次数统计模块、服务熔断停止模块以及服务请求发出模块。

熔断状态获取模块用于获取用于当前服务的熔断状态信息。熔断状态信息包括熔断打开和熔断关闭。

连接请求发出模块用于根据熔断状态信息为熔断打开的状态,则向提供当前服务的接口发出握手连接请求,并确定握手连接成功或握手连接失败。

连接请求发出模块具体可用于读取用于测试网络连接量的数据包,并用于通过数据包生成握手连接请求,以及用于将握手连接请求发送至提供当前服务的接口。

可选地,连接请求发出模块还能够用于发出握手连接请求的同时获取接口对应服务器的可用流量,并能够用于比较可用流量与当前服务占用的流量,以及用于根据可用流量大于或等于当前服务占用的流量停止熔断当前服务,并更新熔断状态信息为熔断关闭。

连接次数统计模块用于基于发出的握手连接请求统计预设时间段内的握手连接成功的次数;其中,连接次数统计模块用于根据握手连接失败重新统计握手连接成功的次数。

连接次数统计模块具体用于根据发出握手连接请求触发定时计数器启动,定时计数器用于在被触发后的预设时间段内进行计数;以及用于在预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化;并用于根据定时计数器数值统计握手连接成功的次数。更为具体地,连接次数统计模块用于根据握手连接成功的消息控制定时计数器数值增加,和/或用于根据握手连接失败的消息控制定时计数器数值复位为初始值,并用于判断定时计数器已启动时长,以及用于根据已启动时长达到预设时间段停止定时计数器计数,或者用于根据已启动时长小于预设时间段继续根据握手连接成功和/或失败的消息控制定时计数器数值变化。

服务熔断停止模块用于根据握手连接成功的次数达到第一阈值,停止熔断当前服务以及更新熔断状态信息为熔断关闭。

可选地,熔断状态信息还可包括熔断半打开。本发明一些实施例中的服务熔断停止模块还用于根据握手连接成功的次数达到第二阈值,更新熔断状态信息为熔断半打开;第二阈值小于第一阈值;并用于根据熔断状态信息为熔断半打开,向提供当前服务的接口发出测试服务;测试服务占用的流量小于当前服务占用的流量;以及用于根据测试服务请求成功更新熔断状态信息为熔断关闭,或者根据测试服务请求失败更新熔断状态信息为熔断打开。其中服务熔断停止模块具体还用于根据熔断状态信息为熔断半打开创建线程池,并用于通过线程池提供用于形成测试服务的至少一个线程,以及用于利用至少一个线程向提供当前服务的接口发出测试服务。

服务请求发出模块用于响应于所述当前服务熔断关闭的状态,发出当前服务的请求信息。

如图6所示,与服务请求的方法基于同一发明技术构思,本发明还有一些实施例可提供一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行本发明任一实施例中服务请求的方法的步骤。服务请求的方法具体可包括:步骤100,获取用于当前服务的熔断状态信息。本发明中的熔断状态信息包括熔断打开、熔断关闭以及熔断半打开。步骤200,根据熔断状态信息为熔断打开的状态,向提供当前服务的接口发出握手连接请求,并确定握手连接成功或握手连接失败。可选地,本发明实施例向提供当前服务的接口发出握手连接请求包括步骤201~203。步骤201,读取用于测试网络连接量的数据包;步骤202,通过数据包生成握手连接请求;步骤203,将握手连接请求发送至提供当前服务的接口。可选地,本发明实施例向提供当前服务的接口发出握手连接请求还包括步骤204~206。步骤204,发出握手连接请求的同时获取接口对应服务器的可用流量;步骤205,比较可用流量与当前服务占用的流量;步骤206,根据可用流量大于或等于当前服务占用的流量停止熔断当前服务,并更新熔断状态信息为熔断关闭。步骤300,基于发出的握手连接请求统计预设时间段内的握手连接成功的次数;其中,若握手连接失败,则重新统计握手连接成功的次数。可选地,本发明实施例基于发出的握手连接请求统计预设时间段内的握手连接成功的次数包括步骤301~303。步骤301,根据发出握手连接请求触发定时计数器启动,定时计数器用于在被触发后的预设时间段内进行计数。步骤302,在预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化。步骤303,根据定时计数器数值统计握手连接成功的次数。可选地,本发明实施例在预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化包括步骤312和322。步骤312,根据握手连接成功的消息控制定时计数器数值增加,和/或根据握手连接失败的消息控制定时计数器数值复位为初始值。步骤322,判断定时计数器已启动时长,以及根据已启动时长达到预设时间段停止定时计数器计数,或者根据已启动时长小于预设时间段继续根据握手连接成功和/或失败的消息控制定时计数器数值变化。可选地,本发明实施例统计预设时间段内的握手连接成功的次数之后还包括步骤410~430。步骤410,根据握手连接成功的次数达到第二阈值,更新熔断状态信息为熔断半打开;第二阈值小于第一阈值。步骤420,根据熔断状态信息为熔断半打开,向提供当前服务的接口发出测试服务;测试服务占用的流量小于当前服务占用的流量。可选地,本发明实施例向提供当前服务的接口发出测试服务包括步骤421~423。步骤421,根据熔断状态信息为熔断半打开创建线程池。步骤422,通过线程池提供用于形成测试服务的至少一个线程。步骤423,再利用其中至少一个线程向提供当前服务的接口发出测试服务。步骤430,根据测试服务请求成功更新熔断状态信息为熔断关闭,或者根据测试服务请求失败更新熔断状态信息为熔断打开。步骤400,若握手连接成功的次数达到第一阈值,停止熔断当前服务并更新熔断状态信息为熔断关闭。步骤500,响应于当前服务熔断关闭的状态,发出当前服务的请求信息。

与服务请求的方法基于同一发明技术构思,本发明另一些实施例还能提供一种存储有计算机可读指令的存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本发明任一实施例中的服务请求的方法的步骤。服务请求的方法具体包括:步骤100,获取用于当前服务的熔断状态信息。本发明中的熔断状态信息包括熔断打开、熔断关闭以及熔断半打开。步骤200,根据熔断状态信息为熔断打开的状态,向提供当前服务的接口发出握手连接请求,并确定握手连接成功或握手连接失败。可选地,本发明实施例向提供当前服务的接口发出握手连接请求包括步骤201~203。步骤201,读取用于测试网络连接量的数据包;步骤202,通过数据包生成握手连接请求;步骤203,将握手连接请求发送至提供当前服务的接口。可选地,本发明实施例向提供当前服务的接口发出握手连接请求还包括步骤204~206。步骤204,发出握手连接请求的同时获取接口对应服务器的可用流量;步骤205,比较可用流量与当前服务占用的流量;步骤206,根据可用流量大于或等于当前服务占用的流量停止熔断当前服务,并更新熔断状态信息为熔断关闭。步骤300,基于发出的握手连接请求统计预设时间段内的握手连接成功的次数;其中,若握手连接失败,则重新统计握手连接成功的次数。可选地,本发明实施例基于发出的握手连接请求统计预设时间段内的握手连接成功的次数包括步骤301~303。步骤301,根据发出握手连接请求触发定时计数器启动,定时计数器用于在被触发后的预设时间段内进行计数。步骤302,在预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化。步骤303,根据定时计数器数值统计握手连接成功的次数。可选地,本发明实施例在预设时间段内,根据握手连接成功和/或失败的消息控制定时计数器数值变化包括步骤312和322。步骤312,根据握手连接成功的消息控制定时计数器数值增加,和/或根据握手连接失败的消息控制定时计数器数值复位为初始值。步骤322,判断定时计数器已启动时长,以及根据已启动时长达到预设时间段停止定时计数器计数,或者根据已启动时长小于预设时间段继续根据握手连接成功和/或失败的消息控制定时计数器数值变化。可选地,本发明实施例统计预设时间段内的握手连接成功的次数之后还包括步骤410~430。步骤410,根据握手连接成功的次数达到第二阈值,更新熔断状态信息为熔断半打开;第二阈值小于第一阈值。步骤420,根据熔断状态信息为熔断半打开,向提供当前服务的接口发出测试服务;测试服务占用的流量小于当前服务占用的流量。可选地,本发明实施例向提供当前服务的接口发出测试服务包括步骤421~423。步骤421,根据熔断状态信息为熔断半打开创建线程池。步骤422,通过线程池提供用于形成测试服务的至少一个线程。步骤423,再利用其中至少一个线程向提供当前服务的接口发出测试服务。步骤430,根据测试服务请求成功更新熔断状态信息为熔断关闭,或者根据测试服务请求失败更新熔断状态信息为熔断打开。步骤400,若握手连接成功的次数达到第一阈值,停止熔断当前服务并更新熔断状态信息为熔断关闭。步骤500,响应于当前服务熔断关闭的状态,发出当前服务的请求信息。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,\"计算机可读存储介质\"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读存储介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM,Random Access Memory),只读存储器(ROM,Read-Only Memory),可擦除可编辑只读存储器(EPROM,Erasable Programmable Read-Only Memory,或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM,Compact Disc Read-Only Memory)。另外,计算机可读存储介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA,Programmable Gate Array),现场可编程门阵列(FPGA,Field Programmable Gate Array)等。

在本说明书的描述中,参考术语“本实施例”、“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。

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