CN111373377B - 用于请求者和提供者之间的错误处理的方法和系统 - Google Patents
用于请求者和提供者之间的错误处理的方法和系统 Download PDFInfo
- Publication number
- CN111373377B CN111373377B CN201880074836.2A CN201880074836A CN111373377B CN 111373377 B CN111373377 B CN 111373377B CN 201880074836 A CN201880074836 A CN 201880074836A CN 111373377 B CN111373377 B CN 111373377B
- Authority
- CN
- China
- Prior art keywords
- provider
- request
- requirements
- algorithm
- error handling
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000012545 processing Methods 0.000 claims abstract description 93
- 230000003993 interaction Effects 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 22
- 238000004891 communication Methods 0.000 claims description 20
- 238000005516 engineering process Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 12
- 238000012790 confirmation Methods 0.000 claims description 7
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 6
- 238000011156 evaluation Methods 0.000 claims description 4
- 238000004590 computer program Methods 0.000 abstract description 16
- 230000015654 memory Effects 0.000 description 30
- 238000010586 diagram Methods 0.000 description 14
- 230000010354 integration Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000000344 soap Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003542 behavioural effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0709—Error 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 distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/079—Root cause analysis, i.e. error or fault diagnosis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
提供了一种方法、计算机程序产品和错误组件,其可以包括从请求者接收对提供者的服务的请求,确定请求的要求,以及由处理器基于请求的要求和服务提供者的特征来识别用于处理错误的处理算法。
Description
技术领域
本发明涉及错误处理,并且更具体地涉及请求者和提供者之间的错误处理。
背景技术
当前,许多业务过程依赖于分布式处理架构,诸如面向服务的架构(SOA)。该体系结构便于组件、系统和/或计算机通过诸如因特网等网络的协作,而无需达成一致的通信标准,例如用于这些计算机之间的通信的消息格式。
发明内容
提供了一种用于请求者和提供者之间的错误处理的方法、计算机程序产品和错误组件。计算系统的处理器从请求者接收对提供者的服务的请求。确定请求的要求。基于请求的要求和服务提供商的特征,识别用于处理错误的处理算法。
附图说明
现在将参考附图仅以示例的方式描述本发明的实施例,其中:
图1描述了根据本发明实施例的示例分布式系统的图形表示,在该示例分布式系统中可以实现说明性实施例的各方面。
图2描述了根据本发明实施例的示例数据处理系统的框图,在该系统中可以实现说明性实施例的各方面。
图3示出了根据本发明实施例的错误处理组件的示例性实现的简化框图。
图4描述了根据本发明实施例的处理算法的流程图。
图5描绘了根据本发明实施例的计算机实现的方法的流程图。
图6示出了根据本发明的实施例的被配置为生成贡献分数的系统。
具体实施方式
如果交互成功,则系统之间的交互的实现相对容易。然而,满足所有可能的错误条件的排列涉及理解诸如重试、幂等性、健康检查、事务边界、唯一性冲突、传输可靠性、延迟、超时等问题。组件、系统和/或计算机之间的集成的复杂方面涉及错误处理。
通常,错误处理算法需要用于所实现的每个交互的唯一代码或指令,诸如唯一消息流或连接器内的专用代码。因此,错误处理实现通常是唯一的,并且以请求者的运行时的编程语言/模型来编写。因此,这样的实现的写入和维护是复杂的,并且它们也可能难以重复使用。
在发现组件、系统和/或计算机之间的共性的情况下,通常仅将其嵌入在诸如Java连接器体系结构(Java Connector Architecture)等代码框架中,但这仍然是语言专用的方法,并且仍需要显著的附加的和/或独特的实现工作来解决交互的个体细微之处。
存在许多产品用于实现系统之间的集成,这些产品通常具有标准化的连接器框架,使得可以以最小的努力来编写新的连接器。一些连接器框架是标准化的,其中一个这样的例子是Java连接器体系结构,以便减少创建新连接器所需的工作量。然而,这些连接器通常是编程语言和/或运行时特定的,因此意味着一个平台的创建/配置不适合到另一平台的简单迁移/可移植性。而且,这样的连接器通常仅满足错误处理的低级属性,诸如重试的数目或超时值,而不是解决将使得能够选择完整算法的交互的逻辑特性。因此,为了满足总体的交互需求,通常必须由请求者实现附加的代码或流程逻辑。
此外,创建用于协议的标准化连接器的尝试经常忽略系统经常不严格遵守标准的事实,这将错误处理移回用于每个交互的代码或集成流程中。
本发明的实施例可以提供一种用于请求者和提供者之间的错误处理的方法,该方法可以提供集成实现的显著简化(例如,通过消除对定制的集成代码或流程逻辑的需要)。本发明的实施例还可以提供一种计算机程序产品,其包括用于当在数据处理系统的处理器上执行时实现该方法的计算机程序代码。本发明的实施例还可以提供一种适于执行该计算机程序代码的数据处理系统。本发明的实施例还可以提供用于请求者和提供者之间的错误处理组件。
根据本发明的实施例,可以提供一种用于请求者和提供者之间的错误处理的计算机实现的方法。该方法可以包括从请求者接收对提供者的服务的请求。该方法还可以包括确定请求的要求。基于所确定的请求的要求和服务提供商的特征,可以识别用于处理错误的处理算法。
本发明的实施例可以识别请求的要求和提供者的特征,然后使用所识别的要求和特征来确定用于处理错误的算法。例如,通过评估请求要求,可以确定在提供者处应当如何调用请求。
因此,实施例可以提供域特定的策略语言,用于以技术不可知的方式实现公共/通用错误处理逻辑/算法/场景/语义的配置和实现,从而减少集成实现代码并提供跨平台的可移植性。这样的策略语言可以例如通过采用包括范围广泛、变化、穷举、描述、特定和/或需求相关的术语的词汇表来提供增强的(例如,更大的)丰富性。由实施例提供的策略语言的改进的丰富性可以使得能够提供具有改进的、动态的和/或定制的逻辑的策略算法。
本发明的示例性实施方式可以提供一种声明性错误处理方法,其拦截对给定集成的请求,其中,该集成由一组请求者要求和提供者特征来定义。基于这些要求和特征,该方法可以识别用于管理可能发生的错误的算法。例如,该算法可以提供遗漏的行为,并且允许对非标准错误响应进行重新分类。因此,示例性实施例可以具有以下特性:
(i)平台不可知-可以跨平台/语言使用实施例,因为特性和算法是通用的;以及
(ii)代码最小化/移除-实施例可以减少对接口中用于错误处理的定制代码的需求,并且在许多情况下,可以完全移除对定制代码的需要,从而改变准备接口所需的技能集。
通过按照接口的特性来分类接口,并且给定一组客户端(例如请求者)要求,示例性实施例可以识别错误处理算法并且将该算法注入到过程流中。注入错误处理算法还可以被配置成提供提供者的任何缺失特征。
在示例性实施例中,可以考虑这样的实例,其中客户端(例如请求者)想要进行“创建”请求并且可以使用不可靠的介质,但是不想要重复(例如这可以是典型的基于超文本传输协议(HTTP)的REST请求)。对于这样的示例,可以考虑存在具有幂等性的HTTP接口的匹配提供者。如果需要重试,则注入的错误处理器算法可以多次调用接口。然而,如果上述服务不是幂等性的,则错误处理器算法可以执行延迟读取而不是重试,这将创建重复,以提供遗漏的“无重复”客户端需求。类似地,如果需要可靠的介质,则可以通过消息传送而不是经由web服务器请求来桥接呼叫,再次地,注入的错误处理器创建了缺失的接口特征。
本发明的示例性实施例可以被配置为允许可配置的覆盖策略来重新对准协议的非标准实现。
示例性实施例可以提供用于错误恢复语义的表达的域特定策略语言,其可以表达先前必须针对每个交互被具体编码和/或配置的大范围的错误恢复场景。因此,可以提供一种组件,其使得能够基于以技术不可知的方式描述交互的特征的域特定策略语言来选择和实现错误处理逻辑(例如,策略算法),这可以使得能够在逻辑上一次定义错误处理要求,并且然后跨多种技术纯粹通过配置来实现。
示例性实施例提供的益处因此可以包括以下方面:
(i)集成实现的显著简化-实施例可以消除定制的集成代码或流程逻辑,否则通常按协议编写并且进一步为每个服务操作定制这些代码或流程逻辑;
(ii)连接器的开发的加速;
(iii)通过公共配置的所实现的集成到不同语言运行时的简单迁移;以及
(iv)算法的标准化,使得错误处理行为可以是确定性的并且被很好地理解-显著地简化了集成回归测试的准备和执行。
因此,所述益处可以通过错误处理的根本简化来提供对现有技术的改进。
根据示例性实施例,可以提供一种域特定策略语言,其使用使得能够以技术不可知的方式配置和实现错误处理算法的组件,这可以减少集成实现代码和/或提供跨平台的改进的可移植性。
错误处理算法可以由关于交互的逻辑特征的关键集合来管理。示例可以包括是否可以安全地重试提供者接口而不引起重复(例如,幂等性),请求者是否期望立即响应(例如,阻塞),以及交互必须在什么时间帧中完成。这些特征是技术不可知的,并且可以仅与请求者的要求、提供者的能力以及实现算法的组件的能力相关。基于这些特征,可以选择用于如何执行错误处理的特定策略算法,其中算法可以是技术不可知的,使得可以在逻辑层描述算法以便以任意编程语言实现。
在示例性实施例中,请求的要求可以涉及以下中的至少一个:重复的可接受性;请求者要求的确认;响应时间;吞吐量;以及事务参与。因此,这些实施例可以考虑与请求和/或请求相关的限制因素或考虑,以便确定要实现的错误处理算法。本发明的实施例可以确定和/或考虑其它不同的要求,并且这些要求可以单独地或组合地考虑。
在示例性实施例中,提供者的特性可以涉及以下中的至少一个:提供者的接口;提供者的通信协议;检查测试的可用性;响应时间;吞吐量;提供者的交互方法;提供者的幂等能力;提供者的同步或异步性质;一个或多个错误类型;事务支持;以及提供者的行为特征。因此,实施例可以考虑与提供者有关的限制因素或考虑,以便确定要实现的错误处理算法。本发明的实施例可以确定和/或考虑其它不同的特征,可以单独地或组合地考虑这些特性。
因此,本发明的实施例可以采用分析请求者和提供者之间的交互的要求和特征的概念,以便确定最适当的错误处理算法。这样,示例性实施例可以被设计为确定适当的错误处理逻辑或处理步骤,以便确保减少、处理和/或管理错误,同时减少编程和/或实现复杂度。
在示例性实施例中,识别处理算法的步骤可以包括基于所确定的请求的要求和所确定的提供者的特征从多个算法中选择处理算法。因此,实施例可以利用潜在处理算法的集中式的或共享的资源。而且,选择处理算法可以包括基于所确定的请求的要求或所确定的提供者的特征是否与预定的通信协议有关来选择处理算法,这可以使得能够利用和使用针对特定通信协议的先前或已建立的错误处理知识,从而潜在地减少否则将需要用于实现处理算法的专业和/或定制编程的量。
在示例性实施例中,识别处理算法的步骤可以例如包括根据最佳适配评估选择处理算法。这样,可以针对所确定的交互的细节(例如,要求和特征)来评估最适当的处理算法,然后使用结果来识别要使用的处理算法。
处理算法可以被配置成确保将请求传送到提供者。例如,处理算法可以被配置成实现以下中的至少一个:重试过程;延迟过程;比较;以及合并过程,以便确保将请求传送到提供者。因此,实施例所采用的算法可以提供丢失的或需要的处理,以便确保可以正确地调用请求和/或可以正确地处理错误响应。
一些实施例可以包括确定提供者的特征的步骤。示例性实施例可以包括从数据储存库获得与提供者的一个或多个特征有关的信息的步骤。例如,可以在设计阶段期间(例如,在设计时)确定提供者的特征,然后可以在运行时参考关于先前确定的特征的信息,从而最小化运行时资源需求。
根据本发明的另一示例性实施例,提供了一种用于请求者和提供者之间的错误处理的计算机程序产品,该计算机程序产品包括计算机可读存储介质,计算机可读存储介质具有与其一起实现的程序指令,当在数据处理系统的至少一个处理器上执行时,该程序指令可由处理单元执行以使该处理单元执行根据一个或多个示例性实施例的方法。
根据又一示例性实施例,提供了一种数据处理系统,包括至少一个处理器和根据一个或多个实施例的计算机程序产品,其中至少一个处理器被配置为执行计算机程序产品的计算机程序代码。数据处理系统可以被配置成充当消息产生者和消息消费者之间的消息代理。此外,数据处理系统可以被配置为实现面向服务的架构的一部分。
因此,实施例可以在面向服务的架构(Service-Oriented Architecture,SOA)中使用,用于通过诸如因特网的网络提供服务。为此,SOA通常包括消息代理,其是实现所需消息(例如请求)转换或数据提取的软件模块。消息代理可以访问所谓的消息模式,该消息模式定义了消息内的每个数据字段可以包含的内容的结构和类型。
根据另一示例性实施例,提供了一种用于请求者和提供者之间的错误处理组件。该组件包括输入接口,其被配置为从请求者接收对提供者的服务的请求。该组件还可以包括被配置成确定请求的要求的分析组件。此外,该组件包括算法组件,该算法组件被配置为基于所确定的请求的要求和服务提供者的特征来确定用于处理错误的处理算法。
示例性实施例可以提供一种技术不可知的声明性错误处理组件,其被配置为拦截给定集成上的请求,其中该集成可以由请求者要求和提供者特征的集合来定义。基于请求者的要求和提供者的特征,例如提供者的能力,组件可以选择并实现错误处理算法以管理可能发生的错误,例如提供遗漏行为并允许对非标准错误响应进行重新分类。
因此,该组件可以被布置为任意交互的拦截器,从而减轻了对唯一/定制编码的需要,否则可能需要唯一/定制编码来管理可能发生的错误的多个排列。组件的实施例可以使用技术不可知的特征,并且实现不专用于任何语言、协议或传输的逻辑算法。然后,这样的逻辑算法可以跨多种语言运行时实现,使得一旦已经同意给定交互的特征,则跨多种语言提供连接器可以变成简单地复制配置的问题。
此外,在本申请的上下文中,数据处理系统可以是适于执行本发明的方法的一个或多个实施例的单个设备或分布式设备的集合。例如,系统可以是个人计算机(PC)、服务器、或经由诸如局域网、因特网等网络连接的PC和/或服务器的集合,以便协作地执行本发明的方法的至少一个实施例。
本发明的实施例涉及请求者和提供者之间的错误处理。通过评估请求的一个或多个要求以及提供者的一个或多个特征,可以确定用于处理错误的算法。因此,示例性实施例可以使得能够以技术不可知的方式配置和实现公共/通用错误处理逻辑/算法/场景/语义,从而减少集成实现代码并提供跨平台的可移植性。
例如,本发明的实施例可以提供拦截对给定集成的请求的声明性错误处理概念,其中集成由一组请求者要求和提供者特征来定义。基于这些要求和特征,可以识别并随后采用用于管理错误的算法。通过按照接口的特征来分类接口,并且给定一组客户端(例如请求者)要求,示例性实施例可以识别错误处理算法并且将该算法注入到过程流中。例如,注入错误处理算法还可以被配置为提供提供者的任何缺失特征。
因此,示例性实施例可以分析集成要求和/或特征,以确定最适当的错误处理过程。因此,所提出的实施例可以提供动态错误处理优化。
尽管下游调用可能看起来遵循标准,但是调用可能不严格地实现该标准的“风格”。例如,调用可能不正确地使用HTTP响应代码,或者可能不是真正的RESTful,或者可能不正确地使用SOAP故障。这些小的细微差别可能导致需要过量的响应处理代码,诸如用于管理实际上不是错误的错误,和/或提供实际上是错误响应的表面上成功的响应的代码。本发明的实施例可配置响应覆盖,使得误用已知样式的目标可被重新整形为更一致的响应,这可极大地改进错误处理算法的可重用性,因为错误处理算法不需要满足各个接口的细微之处。
示例性实施例可以是可扩展的,使得可以添加新的特性和算法以满足集成要求的演进。例如,分布式处理领域中的最新发展已经从基于高可靠受控传输和高事务协议的大多数集成转移到非事务性的并且在不可靠介质上执行的web服务和restful接口。这样的发展引入了新的特征和算法,尽管声明性错误处理组件的核心意图将保持不变。
用于系统之间的交互的方法或组件的示例性实施例可以解决关于交互的要求和/或特征的多个高级问题。尽管下面详细描述了示例,但是应当理解,可以使用本文所提出的(一个或多个)概念来实现其他实施例。
还可以提出对传统错误处理概念的修改和附加步骤,其可以增强所提出的概念的价值和效用。
说明性实施例可以用于许多不同类型的处理环境中。为了提供用于描述示例性实施例的元件和功能的上下文,以下提供图1和2作为其中可以实现示例性实施例的各方面的示例环境。图1和2仅仅是示例,并且不旨在断言或暗示关于其中可以实现本发明的各方面或实施例的环境的任何限制。在不脱离本发明的精神和范围的情况下,可以对所描述的环境进行许多修改。
图1描述了根据本发明实施例的示例分布式系统的图形表示,在该示例分布式系统中可以实现说明性实施例的各方面。分布式系统100可以包括其中可以实现说明性实施例的各方面的计算机网络。分布式系统100包含至少一个网络102,其是用于在分布式数据处理系统100内连接在一起的各种设备和计算机之间提供通信链路的介质。网络102可以包括诸如有线、无线通信链路或光纤电缆的连接。
在所描述的例子中,第一服务器104和第二服务器106与存储单元108一起连接到网络102。另外,客户端110、112和114也连接到网络102。客户端110、112和114可以是例如个人计算机、网络计算机等。在所描述的例子中,第一服务器104向客户端110、112和114提供数据,例如引导文件、操作系统映像和应用。在所描述的例子中,客户端110、112和114是第一服务器104的客户端。分布式处理系统100可以包括未示出的额外的服务器、客户端和其他设备。
在所描述的示例中,分布式系统100是因特网,其中网络102表示使用传输控制协议/因特网协议(TCP/IP)协议集来彼此通信的网络和网关的世界范围的集合。因特网的核心是主节点或主机之间的高速数据通信线路的主干,其由路由数据和消息的数千个商业、政府、教育和其它计算机系统组成。当然,分布式系统100也可以被实现为包括多个不同类型的网络,例如内联网、局域网(LAN)、广域网(WAN)等。如上所述,图1旨在作为示例,而不是作为对本发明的不同实施例的体系结构限制,因此,图1中所示的特定元素不应被认为是对其中可实现本发明的说明性实施例的环境的限制。
图2描述了根据本发明实施例的示例系统200的框图,其中可以实现说明性实施例的各方面。系统200是诸如图1中的客户端110的计算机的示例,实现本发明的说明性实施例的过程的计算机可用代码或指令可以位于其中。
在所描述的例子中,系统200可以采用集线器体系结构,其包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210连接到NB/MCH 202。图形处理器210可以通过加速图形端口(AGP)连接到NB/MCH 202。
在所描述的例子中,局域网(LAN)适配器212连接到SB/ICH 204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口和其它通信端口232、以及PCI/PCIe设备234通过第一总线238和第二总线240连接到SB/ICH 204。PCI/PCIe设备可以包括例如以太网适配器、附加卡和用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM 224可以是例如闪存基本输入/输出系统(BIOS)。
HDD 226和CD-ROM驱动器230通过第二总线240连接到SB/ICH 204。HDD 226和CD-ROM驱动器230可以使用例如集成驱动电子设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH 204。
操作系统在处理单元206上运行。操作系统协调并提供对图2中的系统200内的各种组件的控制。作为客户端,操作系统可以是商品化操作系统。面向对象的编程系统,例如JavaTM编程系统,可以与操作系统一起运行,并提供从在系统200上执行的JavaTM程序或应用程序到操作系统的调用。
作为服务器,系统200可以是例如运行高级交互执行(Advanced InteractiveExecutive,)操作系统或/>操作系统的/>eServerTMSystem/>计算机系统。系统200可以是在处理单元206中包括多个处理器的对称多处理器(SMP)系统。或者,可以采用单处理器系统。
用于操作系统、编程系统、以及应用或程序的指令位于诸如HDD 226的存储设备上,并且可以被加载到主存储器208中以便由处理单元206执行。类似地,根据实施例的一个或多个消息处理程序可以被配置为由存储设备和/或主存储器208存储。
本发明的说明性实施例的过程可以由处理单元206使用计算机可用程序代码来执行,所述计算机可用程序代码可以位于诸如主存储器208、ROM 224之类的存储器中,或者位于一个或多个外围设备226和230中。
诸如图2所示的第一总线238或第二总线240的总线系统可以包括一个或多个总线。当然,总线系统可以使用任意类型的通信结构或体系结构来实现,所述通信结构或体系结构提供在附接到该结构或体系结构的不同组件或设备之间的数据传输。诸如图2的调制解调器222或网络适配器212之类的通信单元可以包括用于发送和接收数据的一个或多个设备。存储器可以是例如主存储器208、ROM 224或诸如在图2中的NB/MCH 202中找到的高速缓存。
图1和2中的硬件可以根据实现而变化。除了图1和2中描述的硬件之外或者作为其替代,可以使用其它内部硬件或外围设备,例如闪存、等效的非易失性存储器、或光盘驱动器等。此外,在不背离本发明的精神和范围的情况下,说明性实施例的处理可以应用于除前述系统之外的多处理器数据处理系统。
此外,系统200可以采取多种不同数据处理系统中的任意一种的形式,包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或其他通信设备、个人数字助理(PDA)等。在一些说明性示例中,系统200可以是便携式计算设备,其配置有闪存以提供用于存储例如操作系统文件和/或用户生成的数据的非易失性存储器。因此,系统200本质上可以是任意已知的或以后开发的数据处理系统,而没有架构限制。
现在转到图3,现在将描述根据实施例的错误处理组件300的示例性实现。图3描述了根据本发明实施例的错误处理组件300的示例性实现的简化框图。错误处理组件300可以用于请求者310(例如请求服务的网络节点)和提供者320(例如适于响应于接收到的请求提供一个或多个服务的网络节点)之间的错误处理。
错误处理组件300可以包括输入接口330,其被配置为从请求者310接收对提供者320的服务的请求305。
输入接口330可以被配置成将所接收的请求305传递到错误处理组件300的分析组件340。
分析组件340可以被布置为确定请求305的要求。在示例性实施例中,分析组件340可以被配置为访问作为错误处理组件300的一部分被提供的数据库345,其中数据库345可以被配置为存储与请求、请求者和/或提供者的要求和/或特征有关的信息。这样的信息可以例如包括关于请求属性、请求者要求、请求者特征、提供者特征、节点能力、接口能力等的信息。结合请求305使用来自数据库345的这种信息,分析组件可以被配置为确定请求的一个或多个要求。所确定的(一个或多个)要求可以例如涉及:重复的可接受性;请求者要求的确认;响应时间;吞吐量;和/或事务参与。
分析组件340还可被安排成识别提供者的特征。例如,分析组件340可以被配置为访问数据库345,并且结合请求305使用来自数据库345的信息来确定提供者320的一个或多个特征。这样,数据库345可以存储关于在设计或创建阶段已经确定的提供者320的特征的信息,并且该信息然后可以在运行时被分析组件340简单地引用。所确定的(一个或多个)特征可以例如涉及:提供者的接口;提供者的通信协议;检查测试的可用性;响应时间;吞吐量;提供者的交互方法;提供者的幂等能力;提供者的同步或异步性质;一个或多个错误类型;事务支持;以及提供者的行为特征。
分析组件340可以被配置为将关于所确定的请求的(一个或多个)要求和所确定的提供者的(一个或多个)特征的信息传递到错误处理组件300的算法组件350。基于关于所确定的请求的要求和所确定的提供者的特征的信息,算法组件350可以被配置为确定用于处理错误的处理算法。为此,算法组件350可以被配置为访问作为错误处理组件300的一部分提供的第二数据库355的信息。第二数据库355可以例如存储对确定处理算法有用的信息,例如一组可用的算法和/或算法选择规则。
在示例性实施例中,算法组件350可以基于所确定的请求的要求和所确定的提供者的特征从多个算法中选择处理算法。例如,算法组件350可以基于所确定的请求的(一个或多个)要求和/或所确定的提供方的(一个或多个)特征是否与预定通信协议有关来选择处理算法。例如,算法组件350可以采用针对公共协议(例如SOAP/HTTP)或实际上公共系统的算法选择规则,然后重用算法,或者使用算法作为类似端点的起始点。
可替换地或附加地,算法组件350可以根据最佳适配评估来选择处理算法。
算法组件350可以将所选择的处理算法传递到错误处理组件300的执行组件360,其中执行组件360可以被配置为根据处理算法在提供者320处调用请求。执行组件360可以进行处理算法的运行时执行,以便于处理请求调用和/或错误管理,这可以实时地(例如在运行时)进行。
通过示出图3的错误处理组件300的实现,处理算法可被配置成确保将请求305递送到提供者320,并且为此,处理算法可实现以下至少一项:重试过程;延迟过程;比较;以及合并过程,以便确保将请求递送到提供者。
根据以上对根据示例性实施例的错误处理组件300的描述,可以提供可位于请求者310和提供者320之间的声明性错误处理组件300。
组件300的实施例可以在请求者运行时内、在诸如代理或连接器之类的中间件内、或在提供者内提供。实施例可以使用请求者要求和提供者特征结合一组选择规则来选择适当的错误处理算法,这可以在设计时完成(例如,出于性能原因),或者可以例如在运行时完成并高速缓存该选择。
用于确定错误处理算法的考虑因素可以被分成多个不同的类别,例如(i)提供者接口特征;(ii)请求者要求;以及(iii)组件能力。
(I)提供者接口特征
提供者接口特征可以包括关于提供者接口的特征。示例可以包括:传输介质是否提供交互的确定性(例如,不确定请求是否是可能的);如果健康检查测试可用于查看提供者是否正在接受请求;什么响应时间是可实现的;什么吞吐量是可实现的;为了效率是否需要跨单独的交互来保持会话/连接;以及为该接口提供的客户端是否导致阻塞、回叫或轮询式交互。
注意,这些特征中的许多特征,包括上述特征中的一些特征,对于提供者接口上的不同操作可能不同。通常是操作特定的特征的示例可以包括:交互是仅执行数据的“读取”还是导致“数据改变”-“改变”可被进一步分成创建、更新、删除等;接口是否是幂等的(处理重复请求);所述提供者是否立即执行动作,或者是否在已经用确认响应该请求之后异步地发生完成;如果动作花费比预期更长的时间,例如超时和回滚,或者以接收确认响应并异步地继续,或者以存疑状态响应,则提供者将如何以及何时行动。
如果已经实现了到该系统的另一接口,则当然可以已经知道上述内容中的许多内容。如果提供者使用公知的协议和传输标准,例如网络服务、或REST、或Java数据库连接(JDBC),则可以容易地导出一些特征。
(II)请求者要求
请求者要求可以包括与关于与提供者的交互的请求者需要/预期有关的要求。示例可以包括:重复是否是可接受的;请求者是否立即要求(即,在其可以继续之前)确认动作已经在后端系统中发生,或者延期确认是否足够,或者实际上是否不需要确认;需要什么响应时间;以及需要什么吞吐量。
(III)组件能力
组件能力可以包括可用于声明性错误处理器(Declarative Error Handler,DEH)组件的能力。示例可以包括:响应高速缓存,例如,以管理对请求的响应时间期望的差异;存储转发(例如事件存储);以及例如已经处理的事务的唯一密钥存储器。
示例策略词汇表
基于以上所述,制定策略算法的逻辑的词汇表可以如下:
-请求者要求,其可以被传入请求取代:重复重要(Duplicates Matter);阻塞;SLA;以及事务参与。
-请求者特征:可能重复。
-提供者特征:操作动词;操作类型;当前状态可读?;幂等/可重试;确定的完成时间;协议同步/异步;错误类型;操作状态;事务支持。
-算法:确定的传递
-子算法:重试;比较;合并。
-组件能力:服务级别协议(Service-Level Agreements,SLA)测量。
在一个示范性实施例中,现在将考虑涉及基于HTTP的SOAP请求的例子。对于这样的示例,特定提供者可能具有“不可靠介质”上的“创建”操作的接口特征,即“幂等”,并且请求者要求可能是“没有重复”。本发明的实施例可以识别请求者需求和接口特征,并且识别(例如选择)诸如“在不可靠介质上创建”算法的处理算法。然后,可以根据使用请求者要求“无重复”和“非幂等”的接口特征的算法,在提供者上调用请求。
图4中的流程图描述了这种算法的一个例子。图4描述了根据本发明实施例的处理算法的流程图。对于这种算法,假设采用同步传输协议(例如HTTP)并且采用不可靠的通信介质(例如因特网)。
该算法开始于步骤410,并且当实现创建操作时前进到步骤415。如果创建操作成功,则该方法前进到步骤420,其中报告成功。然而,如果由于步骤415的创建操作而发生永久错误,则该方法前进到步骤425,其中报告失败。如果由于步骤415的创建操作而发生了暂时错误,则该方法进行到步骤430,其中确定重复是否重要。
如果重复确实是重要的,则该方法前进到步骤435,其中重试创建操作。相反,如果重复不重要,则该方法前进到步骤440,其中确定该接口是否是幂等的。如果接口是幂等的,则该方法前进到步骤435。
如果由于步骤435的创建操作的重试而发生了暂时错误,则该方法前进到步骤440,其中报告暂时错误。如果在步骤435中的创建操作的重试成功,则该方法进行到步骤445,其中报告成功。然而,如果由于在步骤435中的创建操作的重试而发生永久错误,则该方法前进到步骤450,其中报告错误。
返回考虑步骤440,其中确定该接口是否是幂等的,如果该接口不是幂等的,则该方法前进到步骤460。在步骤460中,确定读取操作是否可用。如果确定读操作不可用,则该方法前进到步骤465,在该步骤中提供存疑指示。相反,如果在步骤460中确定读操作可用,则该方法前进到步骤470,其中确定是否存在用于创建操作的有保证的完成时间。
如果在步骤470中确定对于创建操作存在有保证的完成时间,则该方法前进到步骤475,其中进行延迟的读取操作。如果在步骤475中的延迟读取指示存在,则该方法前进到步骤480,其中报告成功。相反,如果在步骤475中的延迟读取指示不存在,则该方法返回到该方法的开始410。
然而,如果在步骤470确定没有用于创建操作的有保证的完成时间,则该方法前进到步骤485,在该步骤中进行读取操作。如果步骤485中的重试读取指示存在,则该方法进行到步骤490,其中报告成功。相反,如果在步骤485中重试读取指示不存在,则该方法进行到步骤495,其中提供存疑指示。
在知道由于幂等提供者而不会创建重复的情况下,图4中描述的示例算法导致暂时错误的自动重试。
目标可能不具有“永久”和“暂时”错误之间的差异的正确表示。可插式“响应解释器”能够将协议中的相关信息拆散为可由算法使用的不可知响应。例如,如果表面上成功的响应SOAP消息实际上被用于表示一种形式的暂时错误,则这可以被捕获并被转换成算法的正确暂时错误结果。
因此,总之,接口的错误处理逻辑完全由域特定策略语言实现,并且利用标准策略算法。而且,应当理解,图4的流程图所描述的算法可以被转换成可执行语言,并且由处理引擎运行,可执行引擎(例如用于业务流程执行语言BPEL引擎)以相同方式工作。
转到图5,其描绘了根据本发明实施例的计算机实现的方法500的流程图。该方法开始于步骤510,其中接收对提供方的服务的请求(例如,从发起请求方)。接下来,在步骤520中,确定请求的要求,并且在步骤530中,确定提供者的特征。这里,步骤520和530可以单独地并且以任意合适的顺序完成。例如,步骤530可以在步骤520之前进行,或者步骤520和530可以并行进行。
接下来,在步骤540中,基于所确定的请求的要求和所确定的服务提供商的特征来识别用于处理错误的处理算法。例如,可以通过从一组可用算法中选择算法来实现这种识别。
最后,在步骤550中,根据处理算法在提供者处调用请求。
应当理解,诸如上面参考图1-5所呈现的实施例可以提供由一组请求者要求和提供者特征定义的请求者和提供者之间的集成。基于请求者要求和提供者特征,实施例可以将错误处理算法注入到处理流程中,以便管理可能发生的错误。注入的算法可以例如提供缺失的或需要的行为和/或使得能够对非标准错误响应进行重新分类。这样,可以检测和处理可能未被识别为错误的肯定响应。
在一些实施例中,可以提供一种系统,该系统包括适于执行先前参照图1至图5描述的任意方法的处理装置。
图6描述了根据本发明的实施例的被配置成生成贡献分数的系统。作为示例,如图6所示,实施例可包括计算机系统70,其可形成联网系统的一部分。计算机系统/服务器70的组件可以包括但不限于一个或多个处理装置,例如包括处理器或处理单元71、系统存储器74和将包括系统存储器74的各种系统组件耦合到处理单元71的总线90。
总线90表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器70通常包括各种计算机系统可读介质。这样的计算机系统可读介质可以是可由计算机系统/服务器70访问的任意可用介质,并且计算机系统可读介质包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器74可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)75和/或高速缓冲存储器76。计算机系统/服务器70还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统74可被提供用于从不可移动、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线90。如下面将进一步描绘和描述的,存储器74可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本发明的实施例的功能。
作为示例而非限制,具有一组(例如至少一个)程序模块79的程序/实用程序78,以及操作系统、一个或多个应用程序、其它程序模块和程序数据,可以存储在存储器74中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其组合中的每一个可包括联网环境的实现。程序模块79通常执行本文描述的本发明实施例的功能和/或方法。
计算机系统/服务器70还可以与一个或多个外部设备80通信,诸如键盘、定点设备、显示器85等;一个或多个设备,其使得用户能够与计算机系统/服务器70交互;和/或任何使计算机系统/服务器70能够与一个或多个其它计算设备通信的设备(例如网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口72发生。然而,计算机系统/服务器70可以经由网络适配器73与一个或多个网络通信,所述网络诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器73通过总线90与计算机系统/服务器70的其它组件通信,尽管未示出,但可结合计算机系统/服务器70使用其它硬件和/或软件组件,示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据存档存储系统等。
在本申请的上下文中,其中本发明的实施例构成方法,应当理解,这样的方法是用于由计算机执行的过程,即,是计算机可实现的方法。因此,该方法的各个步骤反映了计算机程序的各个部分,例如一个或多个算法的各个部分。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、存储级内存(SCM)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器依赖指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言(例如Smalltalk、C++等)以及传统的过程式编程语言(例如“C”编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意类型的网络(包括局域网LAN或广域网WAN)连接到用户的计算机,或者可以连接到外部计算机(例如,例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在一个实施例中,本发明的系统可以是或包括硬件设备,诸如计算机、便携式设备等。在一个实施例中,硬件设备是或包括专用设备(例如,计算机、机器、便携式设备),该专用设备包括专门的、非通用的硬件和电路(即,专门的离散的非通用模拟、数字和基于逻辑的电路),用于(独立地或组合地)专门仅用于执行本发明的方法。专用的离散的非通用模拟、数字和基于逻辑的电路可以包括专用的专门设计的组件(例如,专用集成电路,诸如例如专用集成电路ASIC,其被设计仅用于实现本发明的方法)。
在另一实施例中,所提出的发明解决了必然根植于计算机技术中的技术问题,因为所得到的图可以改进搜索引擎技术,这通过在允许用户避免导航到额外网站或执行对信息的额外搜索的位置中提供相关信息来节省计算机资源。
本发明的计算机程序产品可以包括一个或多个计算机可读硬件存储设备,其中存储有计算机可读程序代码,所述程序代码包含可由计算系统(或计算机系统)的一个或多个处理器执行以实现本发明的方法的指令。
本发明的计算机系统可以包括一个或多个处理器、一个或多个存储器以及一个或多个计算机可读硬件存储设备,所述一个或多个硬件存储设备包含可由一个或多个处理器经由一个或多个存储器执行以实现本发明的方法的程序代码。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (22)
1.一种用于请求者和提供者之间的错误处理的方法,包括:
由计算系统的处理器从所述请求者接收对所述提供者的服务的请求;
由所述处理器确定所述请求的要求,所述要求包括所述请求者的关于与所述提供者的交互的要求和期望相关的要求;以及
由所述处理器基于所述请求的所述要求和所述提供者的特征来识别用于处理错误的处理算法,其中所述处理算法是技术不可知的。
2.根据权利要求1所述的方法,还包括:
由所述处理器根据所述处理算法在所述提供者处调用所述请求。
3.根据权利要求1所述的方法,其中,所述请求的所述要求与以下各项中的至少一项相关:
重复的可接受性;
所述请求者要求的确认;
响应时间;
吞吐量;以及
事务参与。
4.根据权利要求1所述的方法,其中,所述服务提供者的所述特征与以下中的至少一个有关:
所述提供者的接口;
所述提供者的通信协议;
检查测试的可用性;
响应时间;
吞吐量;
所述提供者的交互方法;
所述提供者的幂等能力;
所述提供者的同步或异步性质;
一个或多个错误类型;
事务支持;以及
所述提供者的行为特征。
5.根据权利要求1所述的方法,其中识别包括:
由所述处理器基于所述请求的所述要求和所述提供者的所述特征从多个算法中选择所述处理算法。
6.根据权利要求5所述的方法,其中选择所述处理算法包括基于所述请求的所述要求或所述提供者的所述特征是否与预定通信协议有关来选择所述处理算法。
7.根据权利要求5所述的方法,其中识别处理算法的步骤包括根据最佳适配评估选择所述处理算法。
8.根据权利要求1所述的方法,其中所述处理算法被配置为确保所述请求到所述提供者的递送,并且其中所述处理算法被配置为实现以下中的至少一个:重试过程;延迟过程;比较;以及合并过程,以便确保将所述请求递送到所述提供者。
9.根据权利要求1所述的方法,还包括以下步骤:
由所述处理器确定所述提供者的特征,并且其中确定所述提供者的所述特征包括从数据储存库获得与所述提供者的一个或多个特性有关的信息。
10.一种用于请求者和提供者之间的错误处理的计算机可读存储介质,所述计算机可读存储介质具有程序指令,所述程序指令可由处理单元执行以使所述处理单元执行一种方法,所述方法包括:
由计算系统的处理器从所述请求者接收对所述提供者的服务的请求;
由所述处理器确定所述请求的要求,所述要求包括所述请求者的关于与所述提供者的交互的要求和期望相关的要求;以及
由所述处理器基于所述请求的所述要求和所述提供者的特征来识别用于处理错误的处理算法,其中所述处理算法是技术不可知的。
11.一种数据处理系统,所述数据处理系统包括至少一个处理器和根据权利要求10所述的计算机可读存储介质,其中所述至少一个处理器被配置为执行所述计算机可读存储介质具有的程序指令。
12.根据权利要求11所述的数据处理系统,其中所述数据处理系统被配置为充当消息产生者和消息消费者之间的消息代理。
13.根据权利要求11所述的数据处理系统,其中所述数据处理系统被配置为实现面向服务的架构的一部分。
14.一种用于请求者和提供者之间的错误处理的错误处理组件,所述错误处理组件包括:
输入接口,所述输入接口被配置为从请求者接收对提供者的服务的请求;
分析组件,所述分析组件被配置成确定所述请求的要求,所述要求包括所述请求者的关于与所述提供者的交互的要求和期望相关的要求;以及
算法组件,所述算法组件被配置为基于所述请求的要求和所述提供者的特征来确定用于处理错误的处理算法,其中所述处理算法是技术不可知的。
15.根据权利要求14所述的错误处理组件,还包括:
执行组件,所述执行组件被配置为根据所述处理算法在所述提供者处调用所述请求。
16.根据权利要求14所述的错误处理组件,其中所述请求的所述要求涉及以下中的至少一个:
重复的可接受性;
所述请求者要求的确认;
响应时间;
吞吐量;以及
事务参与。
17.根据权利要求14所述的错误处理组件,其中所述提供者的所述特征涉及以下中的至少一个:
所述提供者的接口;
所述提供者的通信协议;
检查测试的可用性;
响应时间;
吞吐量;
所述提供者的交互方法;
所述提供者的幂等能力;
所述提供者的同步或异步性质;
一个或多个错误类型;
事务支持;以及
所述提供者的行为特征。
18.根据权利要求14所述的错误处理组件,其中所述算法组件被配置为基于所述请求的要求和所述提供者的特征从多个算法中选择所述处理算法。
19.根据权利要求18所述的错误处理组件,其中所述算法组件配置成基于所述请求的所述要求或所述提供者的所述特征是否与预定通信协议有关来选择所述处理算法。
20.根据权利要求18所述的错误处理组件,其中所述算法组件配置成根据最佳适配评估来选择所述处理算法。
21.根据权利要求14所述的错误处理组件,其中所述分析组件被配置为确定所述提供者的特征,并且其中所述分析组件被配置为从数据存储库获得与所述提供者的一个或多个特征有关的信息。
22.根据权利要求14所述的错误处理组件,其中所述处理算法被配置为确保所述请求到所述提供者的递送,并且其中所述处理算法被配置为实现以下中的至少一个:重试过程;延迟过程;比较;以及合并过程,以便确保所述请求到所述提供者的递送。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/830,102 | 2017-12-04 | ||
US15/830,102 US10831590B2 (en) | 2017-12-04 | 2017-12-04 | Error handling |
PCT/IB2018/059441 WO2019111109A1 (en) | 2017-12-04 | 2018-11-29 | Error handling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111373377A CN111373377A (zh) | 2020-07-03 |
CN111373377B true CN111373377B (zh) | 2023-12-29 |
Family
ID=66659147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880074836.2A Active CN111373377B (zh) | 2017-12-04 | 2018-11-29 | 用于请求者和提供者之间的错误处理的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10831590B2 (zh) |
JP (1) | JP7189952B2 (zh) |
CN (1) | CN111373377B (zh) |
DE (1) | DE112018006175T5 (zh) |
GB (1) | GB2582509B (zh) |
WO (1) | WO2019111109A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936488B1 (en) * | 2018-08-31 | 2021-03-02 | Splunk Inc. | Incident response in an information technology environment using cached data from external services |
US11880835B2 (en) * | 2020-04-24 | 2024-01-23 | Salesforce, Inc. | Prevention of duplicate transactions across multiple transaction entities in database systems |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291508A (zh) * | 2010-06-02 | 2011-12-21 | 株式会社东芝 | 图像处理装置及管理装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US101217A (en) * | 1870-03-29 | George p | ||
US7086066B2 (en) * | 2000-03-31 | 2006-08-01 | Schlumbergersema Telekom Gmbh & Co. Kg | System and method for exception handling |
US7243267B2 (en) * | 2002-03-01 | 2007-07-10 | Avaya Technology Llc | Automatic failure detection and recovery of applications |
US7076762B2 (en) | 2002-03-22 | 2006-07-11 | Sun Microsystems, Inc. | Design and redesign of enterprise applications |
US7007200B2 (en) * | 2002-07-11 | 2006-02-28 | International Business Machines Corporation | Error analysis fed from a knowledge base |
US7412626B2 (en) * | 2004-05-21 | 2008-08-12 | Sap Ag | Method and system for intelligent and adaptive exception handling |
EP1872225B1 (en) * | 2005-04-18 | 2013-07-31 | Research In Motion Limited | Method for handling a detected error in a script-based application |
US20120158813A1 (en) | 2010-12-16 | 2012-06-21 | Udaya Kumar | Service abstraction layer for accessing a plurality of services |
CN102081970B (zh) | 2010-12-31 | 2012-12-19 | 成都市华为赛门铁克科技有限公司 | 纠错处理的方法、装置及固态硬盘设备 |
US9201723B2 (en) | 2011-06-27 | 2015-12-01 | International Business Machines Corporation | Fault handling in a distributed IT environment |
US9064289B2 (en) | 2012-03-20 | 2015-06-23 | Massachusetts Mutual Life Insurance Company | Service mediation model |
CN103530199B (zh) * | 2012-07-02 | 2015-12-02 | 腾讯科技(深圳)有限公司 | 一种修复软件运行错误的方法、装置及系统 |
US10756967B2 (en) * | 2017-07-20 | 2020-08-25 | Vmware Inc. | Methods and apparatus to configure switches of a virtual rack |
-
2017
- 2017-12-04 US US15/830,102 patent/US10831590B2/en active Active
-
2018
- 2018-11-29 JP JP2020528250A patent/JP7189952B2/ja active Active
- 2018-11-29 CN CN201880074836.2A patent/CN111373377B/zh active Active
- 2018-11-29 DE DE112018006175.2T patent/DE112018006175T5/de active Pending
- 2018-11-29 GB GB2008748.2A patent/GB2582509B/en active Active
- 2018-11-29 WO PCT/IB2018/059441 patent/WO2019111109A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291508A (zh) * | 2010-06-02 | 2011-12-21 | 株式会社东芝 | 图像处理装置及管理装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2582509A (en) | 2020-09-23 |
JP7189952B2 (ja) | 2022-12-14 |
DE112018006175T5 (de) | 2020-09-03 |
JP2021505989A (ja) | 2021-02-18 |
CN111373377A (zh) | 2020-07-03 |
US20190171512A1 (en) | 2019-06-06 |
WO2019111109A1 (en) | 2019-06-13 |
GB2582509B (en) | 2022-10-12 |
US10831590B2 (en) | 2020-11-10 |
GB202008748D0 (en) | 2020-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163671B2 (en) | Automatically executing stateless transactions with data dependency in test cases | |
US8843646B2 (en) | Multi-desktop interaction using nested remote desktop sessions | |
US7996822B2 (en) | User/process runtime system trace | |
JP2021523436A (ja) | 入力および出力スキーママッピング | |
US11689626B2 (en) | Transport channel via web socket for ODATA | |
US11755744B2 (en) | Application programming interface specification inference | |
CN111373377B (zh) | 用于请求者和提供者之间的错误处理的方法和系统 | |
US9473565B2 (en) | Data transmission for transaction processing in a networked environment | |
CN108496157B (zh) | 使用扩展接口提供运行时跟踪的系统和方法 | |
US11675584B1 (en) | Visualizing dependent relationships in computer program analysis trace elements | |
US11330053B1 (en) | Making eventual consistency cache updates deterministic | |
US9948694B2 (en) | Addressing application program interface format modifications to ensure client compatibility | |
CN112765246A (zh) | 任务处理方法、装置、电子设备和存储介质 | |
AU2018390863B2 (en) | Computer system and method for extracting dynamic content from websites | |
US11586530B2 (en) | Methods and systems for correctly assembling component sequences | |
CN114706774A (zh) | 接口测试方法、装置、设备以及存储介质 | |
CN113807056A (zh) | 一种文档名称序号纠错方法、装置和设备 | |
CN113360417B (zh) | 测试方法、会话修改器、电子设备以及介质 | |
US12118350B1 (en) | Hierarchical clustering for coding practice discovery | |
US10496455B1 (en) | Enabling synchronous editable signals in process modeling | |
CN115757145A (zh) | 客户端接口的开发方法、装置、设备以及存储介质 | |
CN116012158A (zh) | 业务处理方法、装置、设备及存储介质 | |
CN115878396A (zh) | 用于企业服务总线的接口测试方法、装置、设备及介质 | |
CN118337783A (zh) | 分布式系统的功能验证方法、装置、设备、存储介质和程序产品 | |
CN113110913A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |