信息交互方法、介质、装置和计算设备与流程

文档序号:16326764发布日期:2018-12-19 05:57阅读:152来源:国知局
信息交互方法、介质、装置和计算设备与流程

本发明的实施方式涉及互联网技术领域,更具体地,本发明的实施方式涉及一种信息交互方法、介质、装置和计算设备。

背景技术

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

服务网关可以接收用户系统的服务请求,并根据该服务请求从第三方系统中调用相应的服务并反馈给用户系统。目前,大部分的多实例服务网关系统,一般利用前端负载均衡机制分发用户系统的访问请求,从而保证服务高可用。多实例服务网关系统通常采取共享应用容器(如tomcat)的线程池资源方式从第三方系统进行服务调用。然而,当某些调用任务的线程异常且无法结束,而用户系统又不断发起这类任务时,共享应用容器的线程资源会慢慢会被耗尽,甚至导致其他正常任务也受到牵连而无法正常执行。当所有应用实例均出现异常且不断堆积时,整个多实例网关系统就会面临雪崩式风险,甚至有可能导致服务整体瘫痪。

另外,服务网关对第三方系统的同步调用通常采用httpclient或类似rpc(远程过程调用)的方式,同时设置连接超时时间、读超时时间等参数。当第三方系统出现响应超时、请求不可达、或读数据超时等异常时,服务网关对任务的处理需要等到预先设定超时参数生效才会结束。然而,如果第三方系统始终无法正常响应,而用户系统由于长期无法收到响应而不断发起重试,就会导致更多的请求访问持续不断地到达第三方系统,形成恶性的滚雪球效应。



技术实现要素:

因此在现有技术中,服务网关系统如何实现灵活地故障隔离是非常令人烦恼的过程。

为此,非常需要一种改进的信息交互方式,以使服务网关提供的各种服务内部能够实现灵活的故障隔离,使得即使其中一种调用服务的执行出现故障时,也不会影响其他正常的调用服务任务的执行。

在本上下文中,本发明的实施方式期望提供一种能够实现服务网关内高效地故障隔离的信息交互机制。

在本发明实施方式的第一方面中,提供了一种信息交互方法。所述方法包括:接收用户系统发送的第一服务请求;响应于所述第一服务请求,通过第一调用服务经由第一线程池调用所述第一服务请求对应的服务,其中所述第一线程池为与所述第一调用服务所在的执行组对应的线程池,所述第一调用服务为服务网关提供的多种调用服务中的一种,每种调用服务按照预定规则被分类至相应的执行组,不同的执行组对应于不同的线程池,并且不同的线程池之间相互独立;以及,基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息。

在本发明的一个实施例中,所述方法还包括对于所述多种调用服务中的每一种调用服务,获取所述调用服务的调用方法和/或降级方法,其中,所述调用方法用于执行所述调用服务以实现从第三方系统获取对应的服务;所述降级方法用于在所述调用方法执行失败后暂停执行所述调用服务并向所述用户系统返回表征所述调用服务执行失败的信息,以及将所述调用服务、与所述调用方法和/或所述降级方法进行封装,得到所述调用服务对应的执行单元。

在本发明的另一实施例中,所述方法还包括基于所述调用服务,将所述调用服务对应执行单元按照所述预定规则分类至相应的执行组。

在本发明的又一实施例中,所述方法还包括对每个执行组设置对应的线程池,以使每个执行组中的调用服务经由所述执行组对应线程池来执行调用任务。

在本发明的再一实施例中,所述方法还包括配置所述多种调用服务中的每一种调用服务的属性。

在本发明的再一实施例中,配置所述多种调用服务中的每一种调用服务的属性,包括配置集群的共享属性,所述集群包括多个所述执行组,所述集群的共享属性被所述集群中的所有调用服务共享,和/或对于具有不同于所述集群的共享属性的特例执行组,配置所述特例执行组的共享属性,所述特例执行组的共享属性被所述特例执行组中的所有调用服务共享。

在本发明的再一实施例中,配置所述多种调用服务中的每一种调用服务的属性,包括配置每个执行组的共享属性,其中所述执行组的共享属性被所述执行组中的所有调用服务共享,和/或对于具有不同于所在执行组的共享属性的特例执行单元,配置所述特例执行单元中的调用服务的属性。

在本发明的再一实施例中,所述方法还包括,对于所述多种调用服务中的每一种调用服务,在所述调用服务的属性中配置熔断策略,所述熔断策略包括触发熔断的熔断条件、和/或熔断后的恢复条件。

在本发明的再一实施例中,所述响应于所述第一服务请求,通过第一调用服务经由第一线程池调用所述第一服务请求对应的服务,包括响应于所述第一服务请求,判断所述第一调用服务是否达到熔断条件,以及在所述第一调用服务未达到熔断条件的情况下,通过所述第一调用服务经由所述第一线程池调用所述第一服务请求对应的服务。

在本发明的再一实施例中,所述方法还包括在所述第一调用服务达到熔断条件的情况下,熔断所述第一调用服务以停止调用所述第一服务请求对应的服务。

在本发明的再一实施例中,所述基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息,包括在所述调用的结果为获取到所述第一服务请求对应的服务时,向所述用户系统发送所述第一服务请求对应的服务,或者在所述调用的结果为所述第一调用服务执行失败时,向所述用户系统发送表征所述第一调用服务执行失败的信息,或者在所述调用的结果为所述第一调用服务被熔断时,向所述用户系统发送表征所述第一调用服务被熔断的信息。

在本发明的再一实施例中,所述在所述调用的结果为所述第一调用服务被熔断时,向所述用户系统发送表征所述第一调用服务被熔断的信息之后,所述方法还包括基于熔断后的恢复条件,向所述用户系统发送表征所述用户系统下一次请求的时机的信息。

在本发明的再一实施例中,在所述基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息之后,所述方法还包括记录所述调用的结果,以更新所述服务网关的服务健康状态。

在本发明的再一实施例中,所述执行单元和所述执行组以组件化形式存储于所述服务网关,其中,以注解的方式标识每种调用服务与执行单元和执行组的对应关系。

在本发明的再一实施例中,所述方法还包括动态配置所述执行单元中的调用服务的属性。

本发明实施方式的第二方面,提供了一种计算机可读存储介质,其上存储有可执行指令,所述指令在被处理器执行时使处理器执行根据本发明实施方式的第一方面所提供的信息交互方法。

本发明实施方式的第三方面,提供了一种信息交互装置。所述装置包括接收模块、调用模块、以及反馈模块。接收模块用于接收用户系统发送的第一服务请求。调用模块用于响应于所述第一服务请求,通过第一调用服务经由第一线程池调用所述第一服务请求对应的服务,其中所述第一线程池为与所述第一调用服务所在的执行组对应的线程池,所述第一调用服务为服务网关提供的多种调用服务中的一种,每种调用服务按照预定规则被分类至相应的执行组,不同的执行组对应于不同的线程池,并且不同的线程池之间相互独立。反馈模块用于基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息。

在本发明的一个实施例中,所述装置还包括获取模块和封装模块。获取模块用于对于所述多种调用服务中的每一种调用服务,获取所述调用服务的调用方法和/或降级方法,其中,所述调用方法用于执行所述调用服务以实现从第三方系统获取对应的服务;所述降级方法用于在所述调用方法执行失败后暂停执行所述调用服务并向所述用户系统返回表征所述调用服务执行失败的信息。封装模块用于将所述调用服务、与所述调用方法和/或所述降级方法进行封装,得到所述调用服务对应的执行单元。

在本发明的另一实施例中,所述装置还包括分类模块。分类模块用于基于所述调用服务,将所述调用服务对应执行单元按照所述预定规则分类至相应的执行组。

在本发明的又一实施例中,所述装置还包括线程池设置模块。线程池设置模块用于对每个执行组设置对应的线程池,以使每个执行组中的调用服务经由所述执行组对应线程池执行调用任务。

在本发明的再一实施例中,所述装置还包括属性配置模块。属性配置模块用于配置所述多种调用服务中的每一种调用服务的属性。

在本发明的再一实施例中,所述属性配置模块具体用于配置集群的共享属性,所述集群包括多个所述执行组,所述集群的共享属性被所述集群中的所有调用服务共享,和/或对于具有不同于所述集群的共享属性的特例执行组,配置所述特例执行组的共享属性,所述特例执行组的共享属性被所述特例执行组中的所有调用服务共享。

在本发明的再一实施例中,所述属性配置模块具体用于配置每个执行组的共享属性,其中所述执行组的共享属性被所述执行组中的所有调用服务共享,和/或对于具有不同于所在执行组的共享属性的特例执行单元,配置所述特例执行单元中的调用服务的属性。

在本发明的再一实施例中,所述装置还包括熔断配置模块。熔断配置模块用于对于所述多种调用服务中的每一种调用服务,在所述调用服务的属性中配置熔断策略,所述熔断策略包括触发熔断的熔断条件、和/或熔断后的恢复条件。

在本发明的再一实施例中,所述调用模块具体用于响应于所述第一服务请求,判断所述第一调用服务是否达到熔断条件,以及在所述第一调用服务未达到熔断条件的情况下,通过所述第一调用服务经由所述第一线程池调用所述第一服务请求对应的服务。

在本发明的再一实施例中,所述装置还包括熔断模块。熔断模块用于在所述第一调用服务达到熔断条件的情况下,熔断所述第一调用服务以停止调用所述第一服务请求对应的服务。

在本发明的再一实施例中,所述反馈模块具体用于在所述调用的结果为获取到所述第一服务请求对应的服务时,向所述用户系统发送所述第一服务请求对应的服务,或者在所述调用的结果为所述第一调用服务执行失败时,向所述用户系统发送表征所述第一调用服务执行失败的信息,或者在所述调用的结果为所述第一调用服务被熔断时,向所述用户系统发送表征所述第一调用服务被熔断的信息。

在本发明的再一实施例中,所述装置还包括恢复信息发送模块。恢复信息发送模块,用于在所述调用的结果为所述第一调用服务被熔断时,向所述用户系统发送表征所述第一调用服务被熔断的信息之后,基于熔断后的恢复条件,向所述用户系统发送表征所述用户系统下一次请求的时机的信息。

在本发明的再一实施例中,所述装置还包括记录模块。记录模块用于在所述基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息之后,记录所述调用的结果,以更新所述服务网关的服务健康状态。

在本发明的再一实施例中,所述执行单元和所述执行组以组件化形式存储于所述服务网关,其中,以注解的方式标识每种调用服务与执行单元和执行组的对应关系。

在本发明的再一实施例中,所述装置还包括动态配置模块。动态配置模块用于动态配置所述执行单元中的调用服务的属性。

本发明实施方式的第四方面提供了一种计算设备。该计算设备包括:存储有可执行指令的一个或多个存储器,以及一个或多个处理器。所述处理器执行所述可执行指令,用以实现根据本发明实施方式的第一方面所提供的信息交互方法。

根据本发明实施方式的信息交互方法、介质、装置和计算设备,可以将多种调用服务分类到不同的执行组,每个执行组对应一个独立的线程池,从而使得每个执行组成为了线程隔离的最小单位。不同执行组均拥有独立的线程池,不同线程池中运行的任务互不影响,从而显著地降低了在单个调用服务任务执行失败且又无法停止的情况下,导致其他调用服务任务受到牵连而引起整个服务网关崩溃的可能性。以此方式,有效地实现了服务网关内部任务之间灵活、高效地故障隔离。

根据本发明的实施例,还将每种调用服务与对应的调用方法和降级方法进行封装得到执行单元。从而当第三方系统出现响应超时、请求不可达、或读数据超时等异常时,可以及时通过降级方法进行处理(例如,向用户系统反馈调用失败的信息),避免用户系统由于长期无法收到响应而不断发起重试,对第三方系统形成有效的保护,降低了整个信息交互过程受第三方系统异常的侵扰程度。

附图说明

通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:

图1示意性地示出了根据本发明实施方式的信息交互方法、介质、装置及计算设备的应用场景;

图2示意性地示出了根据本发明一实施例的信息交互方法的流程图;

图3示意性地示出了根据本发明另一实施例的信息交互方法的流程图;

图4示意性地示出了根据本发明实施例的执行单元的示意图;

图5示意性地示出了根据本发明实施例的不同执行组拥有独立的线程池时的服务调用示意图;

图6a示意性地示出了据本发明又一实施例的信息交互方法的流程图;

图6b示意性地示出了图6a中操作s610配置每一种调用服务的属性的一个实例示意图;

图7示意性地示出了根据本发明再一实施例的信息交互方法的流程图;

图8示意性地示出了根据本发明实施的信息交互方法中服务调用可能出现的不同结果的示意图;

图9示意性示出了根据本发明实施例的适用于信息交互的程序产品的示意图;

图10示意性地示出了根据本发明实施例的信息交互装置的方框图;以及

图11示意性地示出了根据本发明实施例的适用于进行信息交互的计算设备的框图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。

本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

根据本发明的实施方式,提出了一种信息交互方法、介质、装置和计算设备。

下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。

发明概述

本发明人发现,目前大部服务网关缺少单实例内的调用服务之间的故障隔离,无法应对系统突发的异常状况。在单实例内小部分调用服务任务的异常,均有可能通过共用的内存、线程、硬盘等资源对其他调用服务任务的执行造成影响。

为了实现调用服务之间的故障隔离,可以将服务网关提供的多种调用服务分类为不同的执行组(例如,可以将对应于不同类型的代理的调用服务归于不同执行组)。以执行组为线程隔离的最小单位,不同执行组均拥有独立的线程池,不同线程池中运行的任务互不影响。这样,既能够保障服务网关的执行效率和配置效率,同时当某一个执行组中的调用服务故障导致请求大量超时、失败,不影响其他执行组中的正常调用服务的进行。

更进一步地,考虑到现有技术中当服务网关从第三方系统进行服务调用发生异常时,不能够及时将异常反馈给用户系统,导致用户系统持续不断地发起重试,从而对第三方系统造成恶性入侵的现象,发明人在本技术方案的构思中发现,可以在服务调用异常时采取一定的策略使得服务可以快速降级以保护第三方系统,采用较为贴近系统本身的方式保护系统尽量少受第三方系统异常的侵扰。

在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。

应用场景总览

首先参考图1。

图1示意性地示出了根据本发明实施方式的信息交互方法、介质、装置及计算设备的应用场景100。需要注意的是,图1所示仅为可以应用本发明实施例的应用场景的示例,以帮助本领域技术人员理解本发明的技术内容,但并不意味着本发明实施例不可以用于其他设备、系统、环境或场景。

如图1所示,该应用场景100包括用户系统11、服务网关12和第三方系统13三部分。用户系统11包括例如各种类型的用户终端。在一些实施例中,用户系统11也可以是与用户终端通信连接的服务器或服务器集群。服务网关12包括提供多实例服务网关的服务器或服务器集群。第三方系统13可以是提供各种服务(例如,用户注册或认证、或者数据库存储与查询等)的服务器或服务器集群。

用户系统11、服务网关12以及第三方系统13之间可以通过有线或无线连接通信。信息交互过程包括服务网关12接收用户系统11发起的服务请求,并根据该服务请求从第三方系统13中调用相应的服务,并根据调用结果反馈给用户系统11。

需要说明的是,本发明实施例所提供的信息交互方法可以由服务网关12执行。相应地,本发明实施例所提供的信息交互介质、装置或计算设备一般可以设置于服务网关12中。

应该理解,图1中的用户终端、服务网关和第三方系统的服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目、任意类型的用户终端、服务网关和第三方系统服务器。

示例性方法

下面结合图1的应用场景,参考图2~图8来描述根据本发明示例性实施方式的信息交互方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。

图2示意性地示出了根据本发明一实施例的信息交互方法的流程图。

如图2所示,该信息交互方法包括操作s210~操作s230。

在操作s210接收用户系统发送的第一服务请求。

然后,在操作s220,响应于所述第一服务请求,通过第一调用服务经由第一线程池调用所述第一服务请求对应的服务,其中所述第一线程池为与所述第一调用服务所在的执行组对应的线程池,所述第一调用服务为服务网关提供的多种调用服务中的一种,每种调用服务按照预定规则被分类至相应的执行组,不同的执行组对应于不同的线程池,并且不同的线程池之间相互独立。

接着,在操作s230,基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息。

根据本发明实施方式的信息交互方法,可以将多种调用服务分类到不同的执行组,每个执行组对应一个独立的线程池,从而使得每个执行组成为了线程隔离的最小单位。不同执行组均拥有独立的线程池,不同线程池中运行的任务互不影响,从而显著地降低了单个调用服务任务执行失败且又无法停止的情况下,导致其他任务受到牵连而引起整个服务网关的崩溃的可能性。以此方式,有效地实现了服务网关内部不同的调用服务任务之间灵活、高效地故障隔离。

图3示意性地示出了根据本发明另一实施例的信息交互方法的流程图。

如图3所示,根据本发明的实施例,该信息交互方法除了操作s210~操作s230以外,还可以包括操作s310和操作s320。

具体地,在操作s310,对于所述服务网关提供的多种调用服务中的每一种调用服务,获取所述调用服务的调用方法和/或降级方法,其中,所述调用方法用于执行所述调用服务以实现从第三方系统获取对应的服务;所述降级方法用于在所述调用方法执行失败后执行,例如用于在所述调用方法执行失败后暂停执行所述调用服务并向所述用户系统返回表征所述调用服务执行失败的信息。

然后在操作s320,将所述调用服务与所述调用方法和/或所述降级方法进行封装,得到所述调用服务对应的执行单元。

图4示意性地示出了根据本发明实施例的执行单元的示意图

如图4所示,根据本发明的实施例,将服务网关提供的每种调用服务、与该调用服务对应的调用方法和/或所述降级方法进行封装,得到该调用服务对应的执行单元。其中,执行方法用于封装该调用服务对第三方系统进行调用的逻辑,降级方法用于封装在该调用服务的执行方法失败后的降级逻辑。例如,该降级方法可以暂停所述调用服务任务的执行,并将执行失败的信息及时反馈给用户系统,以避免用户系统长时间收不到响应后不断发起重试。

执行单元可以作为最小配置单位和运行单位。例如,可以在执行单元中配置线程池和熔断器。线程池用于限定该执行单元中的调用服务执行时可以利用的线程资源。熔断器中可以配置调用服务的熔断策略、熔断执行、以及熔断后的处理和恢复机制。

继续参考图3,根据本发明的另一些实施例,该信息交互方法在操作s310和操作s320之后,还可以进一步包括操作s330。

在操作s330,基于所述调用服务,将所述调用服务对应执行单元按照所述预定规则分类至相应的执行组。

更进一步地,根据本发明的另一些实施例,该信息交互方法在操作s330之后,还可以包括操作s340。

在操作s340,对每个执行组设置对应的线程池,以使每个执行组中的调用服务经由所述执行组对应线程池来执行调用任务。

根据本发明的实施例,考虑到执行单元粒度较小,将执行单元按照预定规则进行分类,获得较大粒度执行组,对每个执行组设置对应的线程池,既能保证服务网关的配置效率,又能够有效实现不同调用服务之间的隔离。将执行单元按照预定规则进行分类,例如可以是,根据不同执行单元中的调用服务的业务内容划分执行组。例如,可以将提供登陆验证服务的执行单元归为一个执行组,以及将提供数据存储和查询的执行单元归类为另一个执行组等。执行组与执行单元存在1对n的关系,其中n为大于等于1的整数,即1个执行组由多个执行单元组成。

根据本发明的实施例,执行组作为线程隔离的最小单位,每个执行组均具有独立的线程池资源,其包含的执行单元中的调用服务的执行均从该线程池中获取线程,例如图5的示意。

图5示意性地示出了根据本发明实施例的不同执行组拥有独立的线程池时的服务调用示意图。

如图5所示,该服务网关中不同执行组均拥有独立的线程池,不同线程池中运行的任务互不影响。具体地,该服务网关将不同类型的代理(对应于不同调用服务任务)归于不同执行组,保证了对每一个任务节点,不同种类的调用服务的异常互不影响。当某一种调用服务故障导致请求大量超时、或失败,不影响其他正常调用服务的调用。另外,每一个线程池均可独立配置容量、最大容量、等待队列长度、闲置线程回收时间等参数,从而可以提供丰富、灵活的故障隔离,保障整个服务网关的高效能、高可用性。

对于一个服务网关而言,其所有对第三方系统的调用逻辑封装于不同的执行单元,并按照一定的方式将各个执行单元分类于若干执行组。在运行时每个执行组使用不同的线程池资源。从而,根据本发明的实施例,执行组与执行单元构成服务网关中故障隔离和熔断保护的基本单位和核心架构。

图6a示意性地示出了据本发明又一实施例的信息交互方法的流程图。

如图6a所示,根据本发明的实施例,该信息交互方法可以除了操作s210~操作s230之外,还可以包括操作s610。

在操作s610,配置所述多种调用服务中的每一种调用服务的属性。

根据本发明的实施例,操作s610具体可以包括:配置集群的共享属性,所述集群包括多个所述执行组,所述集群的共享属性被所述集群中的所有调用服务共享,和/或对于具有不同于所述集群的共享属性的特例执行组,配置所述特例执行组的共享属性,所述特例执行组的共享属性被所述特例执行组中的所有调用服务共享。

或者,根据本发明的另一实施例,操作s610具体可以包括:配置每个执行组的共享属性,其中所述执行组的共享属性被所述执行组中的所有调用服务共享;和/或对于具有不同于所在执行组的共享属性的特例执行单元,配置所述特例执行单元中的调用服务的属性。

图6b示意性地示出了图6a中操作s610配置每一种调用服务的属性的一个实例示意图。

如图6b所示,在执行单元、执行组、集群的层级分类基础上,为满足服务网关中的调用服务的默认属性的快速配置、以及个别调用服务的特殊属性的单独配置,可以通过类内属性propertygroup的分级继承进行配置:

propertygroup的属性配置方法示例如下:

-parent:propertygroup父类属性配置

-keys:set配置的影响范围

-localconfig:set该层调用服务所具有的具体配置

-actualgroup:propertygroup最低端的引用,用于获取实际配置值

-privategetvalue(property,stringkey):如果keys包含key且localconfig中能获取该property的值,则返回该值,否则使用parent.getvalue

-updatevalue(property,object):更新localconfig,遍历keys,对于每个key,调用actualgroup.getvalue获取配置值,并使用该值进行配置更新

-init():调用父亲(如有)的init,然后根据localconfig依次调用updatevalue

在图6b的示意中,对集群classa中配置该集群的共享属性(或者,称之为默认属性)。classa中的配置的影响范围包括deleteserver、createserver、getnetworkid等。其中classa中配置的超时时长参数为2000。

对于集群中的执行组nova,单独配置了deleteserver、createserver...的超时时长参数为10000,而其他属性继承其父亲classa中的配置。

对于nova组中的执行单元getnetworkid,单独配置了createserver...的超时时长参数为20000,其他属性继承其父类执行组nova中的配置。

由此可见,综合执行单元、执行组、和集群的层级分类与propertygroup的属性分级继承配置,可以将服务网关的默认配置统一在一个或多个集群中配置,将同一集群中具有特殊配置的执行组的属性在该执行组中配置,将执行单元的特殊配置在执行单元中配置。以此方式,集群中的属性配置实现“默认”,执行组、执行单元配置实现属性“覆盖”,配置优先级为执行单元优于执行组,执行组优于集群。即根据生效优先级顺序,重叠配置优先使用执行单元的配置,执行单元无相关配置则获取其父辈(执行组、或集群)的配置。

根据本发明的实施例,将服务网关中的多种调用服务按照集群、执行组和执行单元三个层级进行分类,通过子类继承父类属性的方式实现类内的调用服务共享属性的配置,并且对于区别与类内共享属性的调用服务还可以进行单独地动态配置。通过这种多级继承的动态地属性配置方案,可以实现对服务网关内的多种调用服务的属性的快速动态配置。

图7示意性地示出了根据本发明再一实施例的信息交互方法的流程图。

如图7所示,根据本发明的实施例,该信息交互方法包括操作s710~操作s750,其中包括了操作s210、操作s220和操作s230,其中操作s230具体为操作s231、操作s232或操作s233中的一种。

在操作s710,对于所述服务网关提供的多种调用服务中的每一种调用服务,在所述调用服务的属性中配置熔断策略,所述熔断策略包括触发熔断的熔断条件、和/或熔断后的恢复条件。

然后,在操作s210中接收用户系统发送的第一服务请求。

之后,在操作s720,响应于所述第一服务请求,判断所述第一调用服务是否达到熔断条件。若否,则执行操作s220;若是,则执行操作s730。

在操作s220,在所述第一调用服务未达到熔断条件的情况下,响应于所述第一服务请求,通过所述第一调用服务经由所述第一线程池调用所述第一服务请求对应的服务。

在操作s730,在所述第一调用服务达到熔断条件的情况下,熔断所述第一调用服务以停止调用所述第一服务请求对应的服务。

根据本发明的实施例,操作s230具体为操作s231、操作s232或操作s233中的一种。

具体地,在第一调用服务未被熔断(操作s720的判断结果为否)时,执行操作s220。然后在操作s740判断操作s220是否获取到对应的服务。

接着,若操作s740的判断结果为是,则执行操作s231,在所述调用的结果为获取到所述第一服务请求对应的服务时,向所述用户系统发送所述第一服务请求对应的服务。

或者,若操作s740的判断结果为否,则执行操作s232,在所述调用的结果为所述第一调用服务执行失败时,向所述用户系统发送表征所述第一调用服务执行失败的信息。例如,执行该第一调用服务的降级方法,例如暂停第一调用服务,以及将执行失败的消息快速反馈给用户系统等,避免用户系统在得不到响应时不断发起重试。

再者,在第一调用服务被熔断(操作s720的判断结果为时)时,执行操作s730,并执行操作s233,在所述调用的结果为所述第一调用服务被熔断时,向所述用户系统发送表征所述第一调用服务被熔断的信息。以此方式,及时通知用户系统服务网关的当前状态,避免用户系统在得不到响应时不断发起重试。

根据本发明的实施例,在操作s233之后,还可以基于熔断后的恢复条件,向所述用户系统发送表征所述用户系统下一次请求的时机的信息。

此后,在操作s750,记录所述调用的结果(例如,操作s231、操作s232或操作s233其中之一),以更新所述服务网关的服务健康状态。

图8示意性地示出了根据本发明实施的信息交互方法中服务调用可能出现的不同结果的示意图。

如图8所示,在对第三方服务调用场景下,一般会有3种请求与相应情形。包括:(1)正常请求&响应;(2)请求正常,响应超时;(3)请求连接不可达,例如调用服务被熔断。

在(2)、(3)两种情形下,若异常信息不能及时反馈给用户系统,用户系统很可能会不断发起重试,从而很容易造成线程阻塞等状态。如果第三方服务长期处于异常状态,而用户系统的服务请求不断累积、重试,容易形成滚雪球效应,这时整个系统会存在系统性风险。根据本发明实施例的信息交互方法,可以通过服务降级和熔断策略避免这类系统性风险。

根据本发明的实施例,在操作s320中可以在执行单元中封装每个调用服务对应的降级方法,从而在出现(2)或(3)的情形时,及时执行降级逻辑。该降级方法为在服务调用失败、超时等异常情况发生时,可以自动切换到“失败时调用的方法”,进行必要的补偿逻辑或异常记录。

根据本发明的实施例,可以对每个执行单元设计熔断器(如图4的示意),具体地,在熔断器中根据操作s710中对每个调用服务配置熔断策略,具体设计触发熔断的熔断条件、和/或熔断后的恢复条件,并根据操作s730中当达到熔断条件时熔断调用服务。比如对某调用服务的访问可配置10s内失败5次即触发熔断,5s后重试。当达到熔断条件时,进入熔断逻辑,对服务的访问将不会落到第三方系统而是直接进入服务降级逻辑,5s后再次尝试请求,如果正常响应则结束熔断状态,如果依然异常则继续熔断状态。

下面是服务降级&熔断器执行伪代码:

当一个执行单元中的调用服务执行时,先检查当前调用服务的熔断器是否开启(开启说明达到熔断条件);若开启,则直接熔断该调用服务,执行该调用服务的降级方法;

若熔断器开关状态为关闭(即没有达到熔断条件),则检查当前调用服务的线程池是否能接收新的服务请求,若线程池已满则立即拒绝(不排队),执行该调用服务的降级方法;

若线程池能够接受请求,则开始执行该调用服务的执行方法,从第三方系统地调用相应的服务;

若服务执行失败,则执行该调用服务的降级方法,并将执行结果上报服务统计模块进行记录,以更新服务健康状况;

若服务执行超时,则执行调用服务的降级方法,并将执行结果上报服务统计模块进行记录,以更新服务健康状况;

若服务执行成功,返回正常结果;

若服务降级方法执行成功,则返回降级结果;

若服务降级方法执行失败,则抛出异常。

(流程end...)

根据本发明的实施例,在操作s230向所述用户系统发送所述第一服务请求对应的第一反馈信息之后,记录所述调用的结果,以更新所述服务网关的服务健康状态。例如,通过服务统计模块统计执行单元中调用服务的执行情况(成功、失败或超时),以及用户系统的请求数量、错误率、重试间隔等,来更新服务网关的服务健康状态,从而更新熔断策略和降级方法,进而影响用户系统请求第三方系统的服务的情况。

根据本发明的实施例,所述执行单元和所述执行组以组件化形式存储于所述服务网关,其中,以注解的方式标识每种调用服务与执行单元和执行组的对应关系。实现功能的组件化会对将故障隔离和熔断器等功能快速应用于其他系统提供很大便利。故障隔离与熔断器设计以独立工程的方式开发,编译、打包成sdk,其他系统只需要加入对sdk的依赖即可引入全部故障隔离、熔断等服务治理功能。

为方便使用功能组件sdk的系统可以快速为已有工程加入组件特性,并对已有系统程序尽量少的侵入,以注解的方式标识每种调用服务与执行单元和执行组的对应关系。只需要在目标的执行单元封装方法上加入@circuit执行单元,并提供必要的配置,即可标识一个方法以执行单元的模式进入到故障隔离、熔断器的范围。而具体对注解的处理由sdk内部的注解切面逻辑进行组件核心逻辑处理。

根据本发明的实施例,该信息交互方法还包括动态配置所述执行单元中的调用服务的属性。

根据本发明的实施例,除了在注解@circuit执行单元中加入静态默认配置外,对于组件化形式存储的执行单元和所述执行组,还可以进行动态配置。组件提供运行时修改线程池配置、熔断参数配置的接口,用户可定制自己的配置系统对相关参数进行设置、更新。组件还提供了细粒度控制不同执行组、执行单元熔断强制开启/关闭的接口,可由网关上不同服务方自主配置熔断开关,同时可以配置熔断不生效但报警的灰度方法,方便使用方灵活的设计功能和灰度策略。

示例性介质

在介绍了本发明示例性实施方式的方法之后,接下来,参考图9对本发明示例性实施方式的适用于信息交互的计算机可读存储介质进行说明。

图9示意性示出了根据本发明实施例的适用于信息交互的程序产品的示意图。

根据本发明的实施例,还提供了一种适用于信息交互的程序产品,其上存储有可执行指令,所述指令在被处理器执行时使处理器执行根据本发明实施例的信息交互方法。

在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算设备上运行时,所述程序代码用于使所述计算设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的信息交互方法中的步骤,例如,所述计算设备可以执行如图2中所示的操作s210,接收用户系统发送的第一服务请求;操作s220,响应于所述第一服务请求,通过第一调用服务经由第一线程池调用所述第一服务请求对应的服务,其中所述第一线程池为与所述第一调用服务所在的执行组对应的线程池,所述第一调用服务为服务网关提供的多种调用服务中的一种,每种调用服务按照预定规则被分类至相应的执行组,不同的执行组对应于不同的线程池,并且不同的线程池之间相互独立;操作s230,基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息。

所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

如图9所示,描述了根据本发明的实施方式的适用于信息交互的程序产品900。其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在计算设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆,rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言——诸如java,c++等,还包括常规的过程式程序设计语言——诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)一连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

示例性装置

在介绍了本发明示例性实施方式的介质之后,接下来,参考图10对本发明示例性实施方式的信息交互装置进行说明。

图10示意性地示出了根据本发明实施例的信息交互装置1000的方框图。

如图10所示,根据本发明实施例的信息交互装置1000包括接收模块1010、调用模块1020、以及反馈模块1030。

接收模块1010例如可以执行操作s210,用于接收用户系统发送的第一服务请求。

调用模块1020例如可以执行操作s220,用于响应于所述第一服务请求,通过第一调用服务经由第一线程池调用所述第一服务请求对应的服务,其中所述第一线程池为与所述第一调用服务所在的执行组对应的线程池,所述第一调用服务为服务网关提供的多种调用服务中的一种,每种调用服务按照预定规则被分类至相应的执行组,不同的执行组对应于不同的线程池,并且不同的线程池之间相互独立。

反馈模块1030例如可以执行操作s230,用于基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息。

根据本发明的实施例,信息交互装置1000还包括获取模块1040和封装模块1050。

获取模块1040例如可以执行操作s310,用于对于所述多种调用服务中的每一种调用服务,获取所述调用服务的调用方法和/或降级方法,其中,所述调用方法用于执行所述调用服务以实现从第三方系统获取对应的服务;所述降级方法用于在所述调用方法执行失败后暂停执行所述调用服务并向所述用户系统返回表征所述调用服务执行失败的信息。

封装模块1050例如可以执行操作s320,用于将所述调用服务、与所述调用方法和/或所述降级方法进行封装,得到所述调用服务对应的执行单元。

根据本发明的实施例,信息交互装置1000还包括分类模块1060。分类模块1060例如可以执行操作s330,用于基于所述调用服务,将所述调用服务对应执行单元按照所述预定规则分类至相应的执行组。

根据本发明的实施例,信息交互装置1000还包括线程池设置模块1070。线程池设置模块1070例如可以执行操作s340,用于对每个执行组设置对应的线程池,以使每个执行组中的调用服务经由所述执行组对应线程池执行调用任务。

根据本发明的实施例,信息交互装置1000还包括属性配置模块1080。属性配置模块1080例如可以执行操作s610,用于配置所述多种调用服务中的每一种调用服务的属性。

根据本发明的实施例,所述属性配置模块1080具体用于配置集群的共享属性,所述集群包括多个所述执行组,所述集群的共享属性被所述集群中的所有调用服务共享,和/或对于具有不同于所述集群的共享属性的特例执行组,配置所述特例执行组的共享属性,所述特例执行组的共享属性被所述特例执行组中的所有调用服务共享。

或者,所述属性配置模块1080具体用于配置每个执行组的共享属性,其中所述执行组的共享属性被所述执行组中的所有调用服务共享,和/或对于具有不同于所在执行组的共享属性的特例执行单元,配置所述特例执行单元中的调用服务的属性。

根据本发明的实施例,信息交互装置1000还包括熔断配置模块1090。熔断配置模块1090例如可以执行操作s710,用于对于所述多种调用服务中的每一种调用服务,在所述调用服务的属性中配置熔断策略,所述熔断策略包括触发熔断的熔断条件、和/或熔断后的恢复条件。

根据本发明的实施例,所述调用模块1020具体用于响应于所述第一服务请求,判断所述第一调用服务是否达到熔断条件,以及在所述第一调用服务未达到熔断条件的情况下,通过所述第一调用服务经由所述第一线程池调用所述第一服务请求对应的服务。

根据本发明的实施例,信息交互装置1000还包括熔断模块10100。熔断模块10100例如可以执行操作s730,用于在所述第一调用服务达到熔断条件的情况下,熔断所述第一调用服务以停止调用所述第一服务请求对应的服务。

根据本发明的实施例,所述反馈模块1030具体用于在所述调用的结果为获取到所述第一服务请求对应的服务时,向所述用户系统发送所述第一服务请求对应的服务(操作s231),或者在所述调用的结果为所述第一调用服务执行失败时,向所述用户系统发送表征所述第一调用服务执行失败的信息(操作s232),或者在所述调用的结果为所述第一调用服务被熔断时,向所述用户系统发送表征所述第一调用服务被熔断的信息(操作s233)。

根据本发明的实施例,信息交互装置1000还包括恢复信息发送模块。恢复信息发送模块,用于在所述调用的结果为所述第一调用服务被熔断时,向所述用户系统发送表征所述第一调用服务被熔断的信息之后,基于熔断后的恢复条件,向所述用户系统发送表征所述用户系统下一次请求的时机的信息。

根据本发明的实施例,信息交互装置1000还包括记录模块。记录模块例如可以执行操作s750,用于在所述基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息之后,记录所述调用的结果,以更新所述服务网关的服务健康状态。

根据本发明的实施例,所述执行单元和所述执行组以组件化形式存储于所述服务网关,其中,以注解的方式标识每种调用服务与执行单元和执行组的对应关系。

根据本发明的实施例,信息交互装置1000还包括动态配置模块。动态配置模块用于动态配置所述执行单元中的调用服务的属性。

根据本发明的实施例,信息交互装置1000可以用于执行参考图2~图8所描述的信息交互方法,实现了服务网关内部灵活、高效地故障隔离,以及对第三方系统的有效保护。

示例性计算设备

在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,参考图11对本发明示例性实施方式的适用于进行信息交互的计算设备进行说明。

根据本发明的实施例,还提供了一种计算设备。该计算设备包括:存储有可执行指令的一个或多个存储器,以及一个或多个处理器。所述处理器执行所述可执行指令,用以实现根据本发明实施例的信息交互方法。

本发明实施例还提供了一种计算设备。所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。

在一些可能的实施方式中,根据本发明的计算设备可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的信息交互方法中的步骤。例如,所述处理单元可以执行如图2中所示的操作s210,接收用户系统发送的第一服务请求;操作s220,响应于所述第一服务请求,通过第一调用服务经由第一线程池调用所述第一服务请求对应的服务,其中所述第一线程池为与所述第一调用服务所在的执行组对应的线程池,所述第一调用服务为服务网关提供的多种调用服务中的一种,每种调用服务按照预定规则被分类至相应的执行组,不同的执行组对应于不同的线程池,并且不同的线程池之间相互独立;操作s230,基于所述调用的结果,向所述用户系统发送所述第一服务请求对应的第一反馈信息。

下面参照图11来描述根据本发明的这种实施方式的适用于进行信息交互的计算设备1100。如图11所示的计算设备1100仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图11所示,计算设备1100以通用计算设备的形式表现。计算设备110的组件可以包括但不限于:上述至少一个处理单元1110、上述至少一个存储单元1120、连接不同系统组件(包括存储单元1120和处理单元1110)的总线1130。

总线1130包括数据总线、控制总线和地址总线。

存储单元1120可以包括易失性存储器,例如随机存取存储器(ram)1121和/或高速缓存存储器1122,还可以进一步包括只读存储器(rom)1123。

存储单元1120还可以包括具有一组(至少一个)程序模块1124的程序/实用工具1125,这样的程序模块1124包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

计算设备1100也可以与一个或多个外部设备1140(例如键盘、指向设备、蓝牙设备等)通信,这种通信可以通过输入/输出(i/0)接口1150进行。并且,计算设备1100还可以通过网络适配器1130与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器1130通过总线1130与计算设备1100的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备1100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

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