用于微服务的自适应断路器链的制作方法

文档序号:18249122发布日期:2019-07-24 09:35阅读:180来源:国知局
用于微服务的自适应断路器链的制作方法

本发明涉及微服务领域,并且更具体地说,涉及微服务架构中的断路器利用。



背景技术:

微服务架构指将软件应用开发为一套可独立部署的小型模块化服务,其中每个服务作为一个独特的过程执行,并且通过定义明确的轻型机制进行通信以服务业务目标。每个模块化服务可以利用任何期望的通信协议与其它模块化服务通信,尽管通常情况下模块化服务利用轻型协议(例如具有包含Javascript对象表示法(JSON)的代表性状态传输(REST)的超文本传输协议(HTTP))彼此通信。

微服务架构与单体架构形成对比。与微服务不同,单体应用具有单个自主单元的架构。在客户机-服务器模型中,服务器侧应用充当处理HTTP请求、执行逻辑、以及检索和更新底层数据存储中的数据的单体。但是,将如认识到的,在单体架构中,所有更改(即使对应用的最小部分的更改)都需要重建整个应用。同样,如果需要扩展单体应用的一部分,则导致需要扩展整个单体应用。相比之下,在微服务架构中,对服务的更改保持与该服务隔离,而不需要重建整个服务套件。此外,如果需要扩展微服务架构应用中的一个服务,则不需要扩展微服务架构应用中的所有服务。

微服务架构还可以与面向服务的架构(SOA)形成对比。在SOA中,以高度协调的方式来组合组件的构成,从而需要使用高级应用编程接口(API),API适于在应用的一个或多个组件上协调整个操作。相比之下,在微服务架构中,由每个服务特有的对应简单接口公开每个服务的低级细节,并且服务之间的协调通过使用不复杂的通信管道发生,通过这些通信管道发出对服务的相应API的调用并且返回结果。使用高级API(这是SOA的特征),很难将小组件重新连接在一起,因为服务设计者已通过提供单个高级接口,移除了可以采取的许多接缝或选择。

在微服务架构中,因为每个服务彼此独立,所以当通过通信链路向另一个服务发出方法调用时,调用服务允许一个时段,在该时段内调用服务期望来自被调用服务的响应。在该时段内的一次或多次尝试之后,“断路器”组件主动停止进一步尝试并且注意到被调用服务的不可用性。但是,可以想象以下情况:其中为了满足调用服务的请求,被调用服务本身必须变成又一个被调用服务的调用服务。如果被调用服务链中的被调用服务引起延迟,则每个被调用服务中的断路器执行适当断路的能力变得复杂并且容易出错。



技术实现要素:

本发明的实施例解决关于微服务架构中的断路器的操作的本领域缺陷,并且提供用于微服务架构中的自适应断路器链的新颖和非显而易见的方法、系统和计算机程序产品。在本发明的一个实施例中,一种用于配置微服务架构中的自适应断路器链的方法包括:在微服务架构应用中的服务集合中的上游服务与所述微服务架构应用中的所述服务中的目标服务之间以及还在所述服务中的所述目标服务与所述微服务架构应用中的所述服务集合中的下游服务之间建立轻型通信链路。所述方法还包括:从所述上游服务向所述服务的所述目标服务发送请求,以及在所述上游服务的断路器中接收来自所述服务中的所述目标服务的断路器的响应,所述响应指示不能提供对所发送的请求的响应并且包括元数据,所述元数据描述了所述服务中的所述目标服务的所述断路器从所述服务中的所述下游服务接收是提供对由所述上游服务发送的所述请求的响应所必需的、对所述服务中的所述目标服务的底层请求的响应的尝试。最后,如果所述元数据指示所述服务中的所述目标服务的所述断路器在接收对所述底层请求的响应中引起延迟,则所述方法包括从默认延迟模式改变由所述上游服务的所述断路器施加的延迟模式。

在该实施例的一个方面,所改变的延迟模式是在向所述服务中的所述目标服务重新发送所述请求之前,增加由所述上游服务的所述断路器施加的延迟的时间。在该实施例的另一个方面,所改变的延迟模式是所述上游服务的所述断路器向所述服务中的所述目标服务重新发送所述请求的尝试次数的变化。在该实施例的又一个方面,所改变的延迟模式是将所述服务中的所述目标服务标记为在由所述服务中的所述下游服务的不可用性的元数据指示的时间量内不可用。注意,所述上游服务与所述服务中的所述目标服务之间的所述轻型通信链路是HTTP/REST,所述元数据包括在从所述服务中的所述目标服务到所述上游服务的所述响应的HTTP标头中。但是,作为备选方案,所述元数据存储在能够由所述微服务架构应用的每个所述服务访问的中央储存库中。

在本发明的另一个实施例中,一种微服务架构数据处理系统被配置用于微服务架构中的自适应断路器链。所述系统包括主机计算系统,其具有一个或多个计算机,每个计算机具有存储器和至少一个处理器。所述系统还包括多个服务,其被布置为形成在所述主机计算系统的所述存储器中执行的微服务架构应用,每个所述服务利用至少一个轻型通信链路与其它所述服务通信。最后,每个所述服务包括断路器。所述断路器包括程序代码,所述程序代码在由所述处理器执行期间能够:从所述服务中作为上游服务的对应服务向所述服务中的目标服务发送请求;从所述服务中的所述目标服务的断路器接收响应,所述响应指示不能提供对所发送的请求的响应并且包括元数据,所述元数据描述了所述服务中的所述目标服务的所述断路器从所述服务中的所述下游服务接收是提供对由所述上游服务发送的所述请求的响应所必需的、对所述服务中的所述目标服务的底层请求的响应的尝试;以及如果所述元数据指示所述服务中的所述目标服务的所述断路器在接收对所述底层请求的响应中引起延迟,则从默认延迟模式改变由所述上游服务的所述断路器施加的延迟模式。

本发明的额外方面将在下面的说明书中部分地给出,并且部分地将从说明书中显而易见,或者可以通过本发明的实践来学习。借助于在所附权利要求中具体指出的元素和组合,将实现和获得本发明的各方面。要理解,以上一般描述和以下详细描述两者都仅是示例性和解释性的,而不是对要求保护的本发明的限制。

附图说明

结合在本说明书中并构成本说明书的一部分的附图示出本发明的实施例,并且与说明书一起用于解释本发明的原理。在此示出的实施例当前是优选的,但是要理解,本发明并不限于所示的精确布置和工具,这些附图是:

图1是用于配置微服务架构中的自适应断路器链的过程的图;

图2是被配置用于微服务架构中的自适应断路器链的数据处理系统的示意图;以及

图3是示出用于配置微服务架构中的自适应断路器链的过程的流程图。

具体实施方式

本发明的实施例提供微服务架构中的自适应断路器链。根据本发明的一个实施例,微服务架构中的不同服务适于分别包括不同的断路器。服务中的对应服务内的每个不同的断路器包括计算机程序代码,该计算机程序代码被配置为向上游调用服务的断路器报告不能向上游调用服务提供对来自上游调用服务的请求的响应,这是由于下游服务不能响应服务中的对应服务的请求(该响应是响应来自上游调用服务的请求所必需的)。同样,程序代码能够提供具有报告的元数据,该报告代表服务中的对应服务尝试的重试次数。因此,上游调用服务的断路器的程序代码能够修改用于管理来自上游调用服务的请求的重试以考虑元数据的过程。

在进一步例示中,图1以图形方式示出用于配置微服务架构中的自适应断路器链的过程。如图1中所示,微服务架构应用100包括不同的服务110、150、180,它们通过轻型通信链路140以通信方式彼此链接。具体地说,上游服务110调用不同的操作120A、120N,这些操作转而依赖于在目标服务150中调用对应的操作160A、160N。在两种情况下,断路器130A、130N通过以下操作来管理上游服务110与目标服务150之间的请求-响应交互:考虑请求135、155之后的非响应时段,以及基于由于在接收对每个请求135、155的响应中的感测延迟而导致的预定动作模式,确定一个或多个补救动作。

在这点上,预定动作模式可以指示延迟重新发出请求145、155的尝试,其中延迟时段要么固定(无论已发生多少次尝试),要么根据先前尝试的重新发出次数而变化。预定动作模式还可以包括确定在预定重新发出次数之后的故障状况。无论如何,在接收对对应请求135的响应145时,断路器130A将响应传递到上游服务110以进行处理。但是,可以在断路器130N中接收对请求155的不同响应175(以错误状况的形式)。不同的响应175可以不仅指示与请求155有关的错误状况,而且不同的响应175还可以附带断路器元数据165。

在这点上,如图1中的示例所示,由上游服务110向目标服务150发出的请求155可以依赖于在下游服务180中调用对应操作190N以及对管理从目标服务150到下游服务180的请求185的断路器170N进行中间管理。更具体地说,断路器170N可以标识响应于请求185而返回的错误195,该错误195转而可以导致响应于请求155的延迟,这对于上游服务110而言显而易见。因此,断路器170N可以随不同响应175一起提供断路器元数据165,断路器元数据165指示请求185的同时期的状态和重新发出请求185的尝试次数、以及由断路器170N在尝试重新发出请求185之间施加的任何延迟。

断路器130N转而可以在修改预定模式时考虑元数据165。例如,断路器130N可以在向目标服务150重新发送请求155之前,增加由断路器130N施加的延迟的时间。作为另一个示例,断路器130N可以改变上游服务110的断路器130N向目标服务150重新发送请求155的尝试次数。作为又一个示例,断路器130N可以将目标服务150标记为在由下游服务180的不可用性的元数据165指示的时间量内不可用。以这种方式,上游服务110的断路器130N在执行断路动作时考虑下游服务180相对于目标服务150的响应性或缺乏响应性,尽管上游服务110和下游服务180未关于目标服务150发送到下游服务180的请求185进行直接通信以支持上游服务110发送到目标服务150的请求155。

结合图1描述的过程可以在数据处理系统中实现。在进一步例示中,图2示意性地示出被配置用于微服务架构中的自适应断路器链的数据处理系统。该系统包括主机计算系统,其包括一个或多个计算机,每个计算机具有存储器210、至少一个处理器220和允许不同计算机之间的网络通信的网络通信电路230。操作系统240利用处理器220在存储器210中执行,并且支持微服务架构应用的一个或多个服务250的操作。每个服务250(仅为了便于说明仅示出服务中的单个服务)包括断路器300。

断路器300是计算机程序模块,其包括计算机可读并且能够由处理器220执行的指令。断路器300的指令能够监视对服务250中的关联上游服务发送到服务250中的目标服务的请求的响应,并且基于预定模式(例如依赖于接收对请求的响应的尝试次数)来应用断路动作。断路器300的指令还能够从接收自服务250中的目标服务的错误响应中提取断路器元数据,以及根据元数据,例如通过改变重新发出请求中的任何延迟的持续时间或重新发出请求的尝试次数来修改模式。

最后,断路器300的指令能够使用错误响应以及有关在从服务250中的下游服务接收响应(需要该响应以便响应从服务250的进一步上游服务接收的请求)时经历的任何延迟的元数据,响应从服务250中的进一步上游服务接收的请求。连同对接收的请求的响应一起提供的元数据可以指示重新发出请求的尝试次数、或者在向服务250的下游服务重新发出请求的尝试之间引起的任何延迟的持续时间(仅举出两个这种示例)。

在断路器300的操作的再进一步例示中,图3是示出用于配置微服务架构中的自适应断路器链的过程的流程图。从方框305开始,上游服务通过轻型通信链路向目标服务发送请求。在方框310中,断路器将重试计数重置为零,并且在方框315中,断路器加载断路器延迟模式,基于该断路器延迟模式,断路器基于对目标服务的请求的响应或不响应来管理一个或多个动作。此后,在决策方框320中,断路器判定是否已响应于请求而从目标服务接收到响应。

如果断路器确定没有从目标服务接收到响应,则在方框325中,断路器递增重试计数,并且在方框330中,基于加载的模式和计数来检索要执行的动作。在方框335中,断路器执行所检索的动作,并且在决策方框340中,判定动作是否是推断请求失败的动作。如果是,则在方框345中断路器向对应服务返回错误状况,否则,在决策方框320中重复该过程。

在这点上,在决策方框320中,如果断路器确定已响应于请求而接收到响应,则在决策方框350中,断路器进一步判定响应指示错误状况还是对请求的成功响应。如果断路器确定响应是成功响应,则在方框355中,断路器向对应服务返回响应。否则,在决策方框360中,断路器判定元数据是否具有指示错误状况的响应。如果不具有,则在方框345中,断路器向对应服务返回错误状况的指示。

但是,如果断路器确定已提供具有响应的元数据,则在方框365中,断路器调整加载的模式以考虑元数据的内容,例如通过改变一个或多个延迟时段以超过在元数据中指示的延迟。此后,在方框325中,断路器递增重试计数,并且在方框330中,断路器基于修改后的模式和计数来检索要执行的动作。在方框335中,断路器然后执行所检索的动作,并且在决策方框340中,判定动作是否是推断请求失败的动作。如果是,则在方框345中,断路器向对应服务返回错误状况,否则,在决策方框320中重复该过程。

本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是—但不限于—电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。

在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,从而,存储有指令的计算机可读存储介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

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