服务调用异常时的处理方法和装置与流程

文档序号:11254031阅读:3688来源:国知局
服务调用异常时的处理方法和装置与流程

本申请涉及互联网技术领域,尤其涉及一种服务调用异常时的处理方法和装置。



背景技术:

面向服务的体系架构(service-orientedarchitecture,soa)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。在大型soa系统中,通常一个业务处理的链路需要2个以上系统,十多次甚至几十次系统调用才能完成一次业务。目前soa系统之间的调用,一般是每个系统返回自己系统定义的特定的错误码,每个系统只感知所直接调用的下游应用的异常。

一旦出现服务调用异常,需要逐层进行排查,当链路较长时需要的排查时间较长,定位问题的速度较慢。



技术实现要素:

本申请旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本申请的一个目的在于提出一种服务调用异常时的处理方法,该方法可以在发生服务调用异常时迅速定位问题所在的系统。

本申请的另一个目的在于提出一种服务调用异常时的处理装置。

为达到上述目的,本申请第一方面实施例提出的服务调用异常时的处理方法,包括:在出现服务调用异常时,生成本层系统的错误码;将本层系统的错误码添加到返回结果中,其中,当下层系统出现服务调用异常时,所述返回结果中包含下层系统的错误码;如果需要向上层系统反馈结果,将所述返回结果发送给上层系统。

本申请第一方面实施例提出的服务调用异常时的处理方法,通过在返回结果中包含出现服务调用异常的不同层的系统的错误码,可以实现错误码逐层上传,从而在需要定位问题时,可以根据返回结果直接定位到出现问题的系统,从而提高定位问题的速度。

为达到上述目的,本申请第二方面实施例提出的服务调用异常时的处理装置,包括:生成???,用于在出现服务调用异常时,生成本层系统的错误码;添加???,用于将本层系统的错误码添加到返回结果中,其中,当下层系统出现服务调用异常时,所述返回结果中包含下层系统的错误码;反馈???,用于在需要向上层系统反馈结果时,将所述返回结果发送给上层系统。

本申请第二方面实施例提出的服务调用异常时的处理装置,通过在返回结果中包含出现服务调用异常的不同层的系统的错误码,可以实现错误码逐层上传,从而在需要定位问题时,可以根据返回结果直接定位到出现问题的系统,从而提高定位问题的速度。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是本申请一实施例提出的服务调用异常时的处理方法的流程示意图;

图2是本申请实施例中系统交互示意图;

图3是本申请另一实施例提出的服务调用异常时的处理方法的流程示意图;

图4是本申请另一方面实施例提出的服务调用异常时的处理装置的结构示意图;

图5是本申请另一方面实施例提出的服务调用异常时的处理装置的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的??榛蚓哂邢嗤蚶嗨乒δ艿哪??。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。

图1是本申请一实施例提出的服务调用异常时的处理方法的流程示意图,该方法包括:

s11:在出现服务调用异常时,生成本层系统的错误码。

如图2所示,假设一个业务处理的链路包括:系统a、系统b、系统c、系统d、系统e和系统f,相互之间的调用关系包括:合作伙伴调用系统a (1)、系统a调用系统b(2),系统b返回响应给系统a(3)、系统a再调用系统c(4)等。系统a、系统b等例如为支付宝系统,合作伙伴是需要调用支付宝的第三方,例如,购物网站(如淘宝)等。

当一个系统出现服务调用异常时,例如,系统e出现服务调用异常时,系统e生成本层的错误码。

不同层的系统生成的错误码具有相同的固定格式,具体的固定格式不限定。例如,每层生成的错误码的格式如表1所示。

表1

其中:

1至8位固定标识:可以按大的业务划分来确定,如国际支付的前缀名为ipay,国内支付为alipay,具体的长度可根据定义的前缀名来自由分配。

第9位返回码级别:可以参考log4j的日志级别,定义为如下几种:

info、warn、error、fatal给每个级别编号即可;

第10位返回码类型,可以根据系统处理可能的结果,定义为如下几种:

success、biz_error、sys_error、third_error给每个类别编号即可;

第11至13位系统编号:为所有系统分配一个系统编号,以唯一标识这个系统,根据这个标识可以通过一个错误码直接定位到具体的应用系统。

第14至17位错误编码:业务系统内部自行定义其错误码;

可以理解的是,以上只是示例,每个范围均可以自由定义。不同层具有相同的固定格式,推行到soa的每一个系统中。

s12:将本层系统的错误码添加到返回结果中,其中,当下层出现服务 调用异常时,所述返回结果中包含下层系统的错误码。

其中,返回结果中可以包括:业务是否处理成功,以及,在处理失败时还包括错误上下文,不同层的错误码记录在错误上下文中。

在将不同层的错误码记录在错误上下文中时,可以采用错误码堆栈方式进行记录。

例如,系统d在生成系统d的错误码后,如果系统d已经接收到系统e反馈的错误上下文,且该错误上下文中已经记录系统e的错误码,则系统d可以在错误上下文中添加系统d的错误码,使得错误上下文中记录系统d的错误码和系统e的错误码。而相关技术中,每层系统的返回结果中仅包含本层的错误码,例如,系统e反馈给系统d的错误码是系统e的错误码,系统d反馈给系统c的错误码是系统d的错误码等。

另外,如果一个系统生成本层系统的错误码时,没有接收到其他系统反馈的错误上下文,则该系统可以新建错误上下文并将本层系统的错误码记录在新建的错误上下文中。例如,系统e在发生服务调用异常时,可以生成系统e的错误码,并新建错误上下文,将系统e的错误码记录在错误上下文中并反馈给系统d。

s13:如果需要向上层系统反馈结果,将所述返回结果发送给上层系统。

例如,参见图2,系统e将系统e的错误码包含在返回结果中发送给系统d,系统d将系统d的错误码和系统e的错误码包含在返回结果中发送给系统c等,从而可以实现一个系统向上层系统反馈的返回结果中不仅包括本层系统的错误码,还包括下层系统的错误码。

另一方面,参见图3,该方法还可以包括:

s14:如果需要定位问题,则将接收的返回结果中包含的错误码对应的最 底层系统确定为出现问题的系统。

例如,合作伙伴或系统a的责任人需要定位问题时,由于返回结果中错误码对应的最底层系统是系统e,则将系统e确定为出现问题的系统。

本实施例中,通过在返回结果中包含出现服务调用异常的不同层的系统的错误码,可以实现错误码逐层上传,从而在需要定位问题时,可以根据返回结果直接定位到出现问题的系统,从而提高定位问题的速度。

图4是本申请另一方面实施例提出的服务调用异常时的处理装置的结构示意图,该装置40包括:生成???1、添加???2和反馈???3。

生成???1,用于在出现服务调用异常时,生成本层系统的错误码;

不同层的系统生成的错误码具有相同的固定格式,具体的固定格式不限定。例如,每层的错误码中包含系统标识,系统标识例如系统编号。

具体的错误码的格式可以如表1所示。

添加???2,用于将本层系统的错误码添加到返回结果中,其中,当下层系统出现服务调用异常时,所述返回结果中包含下层系统的错误码。

一些实施例中,所述返回结果中包括错误上下文,所述添加??榫咛逵糜冢?/p>

以错误码堆栈方式,将本层系统的错误码添加到错误上下文中。

其中,返回结果中可以包括:业务是否处理成功,以及,在处理失败时还包括错误上下文,不同层的错误码记录在错误上下文中。

在将不同层的错误码记录在错误上下文中时,可以采用错误码堆栈方式进行记录。

其中,返回结果中可以包括:业务是否处理成功,以及,在处理失败时还包括错误上下文,不同层的错误码记录在错误上下文中。

在将不同层的错误码记录在错误上下文中时,可以采用错误码堆栈方 式进行记录。

一些实施例中,添加??榫咛逵糜冢?/p>

如果未接收到其他系统反馈的错误上下文,则新建错误上下文,并在新建的错误上下文中添加本层系统的错误码。

例如,如果一个系统生成本层系统的错误码时,没有接收到其他系统反馈的错误上下文,则该系统可以新建错误上下文并将本层系统的错误码记录在新建的错误上下文中。例如,系统e在发生服务调用异常时,可以生成系统e的错误码,并新建错误上下文,将系统e的错误码记录在错误上下文中并反馈给系统d。

反馈???3,用于在需要向上层系统反馈结果时,将所述返回结果发送给上层系统。

例如,参见图2,系统e将系统e的错误码包含在返回结果中发送给系统d,系统d将系统d的错误码和系统e的错误码包含在返回结果中发送给系统c等,从而可以实现一个系统向上层系统反馈的返回结果中不仅包括本层系统的错误码,还包括下层系统的错误码。

一些实施例中,参见图5,该装置40还包括:

定位???4,用于在需要定位问题时,将所述返回结果中包含的错误码对应的最底层系统确定为出现问题的系统。

例如,合作伙伴或系统a的责任人需要定位问题时,由于返回结果中错误码对应的最底层系统是系统e,则将系统e确定为出现问题的系统。

本实施例中,通过在返回结果中包含出现服务调用异常的不同层的系统的错误码,可以实现错误码逐层上传,从而在需要定位问题时,可以根据返回结果直接定位到出现问题的系统,从而提高定位问题的速度。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的???、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

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

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理??橹?,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个??橹?。上述集成的??榧瓤梢圆捎糜布男问绞迪?,也可以采用软件功能??榈? 形式实现。所述集成的??槿绻匀砑δ苣?榈男问绞迪植⒆魑懒⒌牟废刍蚴褂檬?,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1
imtoken助记词怎么填-imtoken钱包没有收益-imtoken矿工费太贵了-im钱包官网:token.im