一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分布式系统中错误码传递方法与流程

2021-11-10 02:52:00 来源:中国专利 TAG:


1.本发明涉及一种错误码传递方法。


背景技术:

2.错误码是一种接口调用失败情况下输出或者返回的根源错误信息,用于协助开发者发现和定位问题。随着互联网服务的发展,其组成架构也日益复杂,发现和定位问题的难度也日益增加。http错误码是一种常见的错误码设计,其采用数字错误码形式,通过不同的数字错误码,表示不同的错误类型;例如数字错误码100

199,表示临时响应并需要请求者继续执行操作的状态代码;数字错误码200

299表示成功处理了请求的状态代码;数字错误码300

399表示要完成请求,需要进一步操作;数字错误码400

499表示请求可能出错,妨碍了服务器的处理的状态代码;数字错误码500

599表示服务器在尝试处理请求时发生内部错误的状态代码。其他系统中的错误码设计机制,大多也是采用数字代码形式,如linux系统中errno。不同的数字错误码代表的错误含义由各个模块的开发者负责制定。
3.这些错误码在传递过程中,某一个节点(该节点可以是某一个功能模块,也可以是某一个应用服务模块)直接将产生的错误码返回上级调用节点。这种错误码的传递方式主要存在以下三方面的问题:
4.第一,在分布式系统中,一次业务请求通常会经过多个节点处理,而http错误码只适用于节点与节点之间传递根源错误信息,不适合业务请求的错误码传递;因为一旦一个业务请求经过多个节点处理后,返回给请求方的错误码仅为与请求方连接的节点返回的错误码,无法获取其他节点产生错误码,因此请求方是无法准确得知到底是哪一个节点产生错误,无法对错误根源进行快速分析定位
5.第二、http错误码只是对错误原因进行定义,没有约定一种在各个节点之间的错误的传递机制;
6.第三、面向本地调用接口的数字错误码传递时,一般功能模块或应用服务模块,没有考虑整个系统的中的一致性问题,不同功能模块或应用服务模块存在不同规则的错误码机制,本地调用也没有考虑错误码传递问题,这也会造成系统错误定位困难的问题。


技术实现要素:

7.本发明所要解决的技术问题是针对上述现有技术提供一种能快速定位错误产生的具体应用模块和错误原因的分布式系统中错误码传递方法。
8.本发明解决上述技术问题所采用的技术方案为:一种分布式系统中错误码传递方法,适用于分布式系统中同一个业务请求调用的多个服务模块之间的错误码传递,当同一个业务请求调用的多个服务模块中某一个服务模块产生错误后,将产生错误的服务模块称为错误根源服务模块,将调用错误根源服务模块的服务模块称为第一级调用模块,将调用第一级调用模块的服务模块称为第二级调用模块,将调用第二级调用模块的服务模块称为第三级调用模块,依次类推,将调用第n

1级调用模块的服务模块称为第n级调用模块,n为
大于等于2的自然数;其特征在于:对分布式系统中的服务模块进行编码唯一对应的领域编码,即分布式系统中的每个服务模块唯一对应一个领域编码;
9.当分布式系统中错误根源服务模块产生错误并生成错误代码以后,错误根源服务模块将自身产生的错误代码与错误根源服务模块的领域编号进行合并,形成一个新的错误码,将该新的错误码称为根源错误码,并将该根源错误码返回调用该错误根源服务模块的第一级调用模块,同时错误根源服务模块将根源错误信息也一并返回给第一级调用模块;其中根源错误信息为错误产生的原因;
10.第一级调用模块收到错误根源服务模块发来的根源错误码和根源错误信息后,对根源错误信息进行容错处理,如果第一级调用模块对根源错误信息的容错处理成功,则不会向第二级调用模块返回错误码和根源错误信息;如果第一级调用模块对根源错误信息的容错处理失败,第一级调用模块将收到的根源错误码与自身的领域编号进行合并,形成第一级错误码,同时第一级调用模块将第一级错误码与根源错误信息一并返回给第二级调用模块;
11.第二级调用模块收到第一级调用模块发来的第一级错误码和根源错误信息后,对根源错误信息进行容错处理,如果第二级调用模块对根源错误信息的容错处理成功,则不会向第三级调用模块返回错误码和根源错误信息;如果第二级调用模块对根源错误信息的容错处理失败,第二级调用模块将收到的第一级错误码与自身的领域编号进行合并,形成第二级错误码,同时第二级调用模块将第二级错误码与根源错误信息一并返回给第三级调用模块;
12.依次类推;
13.第n

1级调用模块收到第n

2级调用模块发来的第n

2级错误码和根源错误信息后,对根源错误信息进行容错处理,如果第n

1级调用模块对根源错误信息的容错处理成功,则不会向第n级调用模块返回错误码和根源错误信息;如果第n

1级调用模块对根源错误信息的容错处理失败,第n

1级调用模块将收到的第n

2级错误码与自身的领域编号进行合并,形成第n

1级错误码,同时第n

1级调用模块将第n

1级错误码与根源错误信息一并返回给第n级调用模块。
14.作为优选,第一级调用模块在生成的错误日志中记录如下信息:第一级错误码、根源错误码和根源错误信息;第二级调用模块在生成的错误日志中记录如下信息:第二级错误码、根源错误码和根源错误信息;
……
;第n级调用模块在生成的错误日志中记录如下信息:第n级错误码、根源错误码和根源错误信息。
15.作为优选,第一级调用模块、第二级调用模块、
……
和第n级调用模块在生成的错误日志中,根源错误码作为独立字段输出。
16.作为优选,领域编码包括字母和数字,其中字母表示领域编号,数字表示该领域下的功能模块编号。
17.作为优选,第一级调用模块、第二级调用模块、
……
和第n级调用模块均提供独立于调用接口之外的错误信息传递接口,第一级调用模块、第二级调用模块、
……
和第n级调用模块均通过错误信息传递接口获取和传递错误码和根源错误信息。
18.作为优选,第一级调用模块、第二级调用模块、
……
和第n级调用模块使用全局静态变量保存错误码和根源错误信息。
19.作为优选,第一级调用模块、第二级调用模块、
……
和第n级调用模块通过线程本地存储的方式保存错误码和根源错误信息。
20.作为优选,根源错误码为错误代码 错误根源服务模块的领域编号,错误根源服务模块的领域编号设置在错误代码的后方;第n级错误码为第n

1级误代码 第n

1级调用模块的领域编号,第n

1级调用模块的领域编号设置在第n

1级误代码的后方。
21.与现有技术相比,本发明的优点在于:将所有服务模块进行领域编码,错误根源服务模块会将自身的领域编码和错误代码一起作为根源错误码向第一级服务模块返回错误码,第一级服务模块至第n级服务模块这些中间调用的服务模块在传递错误码时,会将自身的领域编码与上一级返回的错误码一起向上级调用的服务模块传递;因此,业务请求发起者可以通过下级服务模块返回的错误码直接获得根源错误码,从根源错误码可以之间获得错误发生的服务模块领域编码,从而快速定位错误产生的具体应用模块和错误原因。
附图说明
22.图1为本发明实施例中分布式系统中错误码传递方法流程图。
具体实施方式
23.以下结合附图实施例对本发明作进一步详细描述。
24.在分布式系统中,服务模块往往是设置在不同的服务器中,当要完成某一个业务请求时,有可能需要调用很多服务模块,这些服务模块,有可能是本地的服务模块,也有可能是远程的服务模块,被调用某一个服务模块,也有可能再次调用其他的本地服务模块或远程服务模块,因此同一个业务请求,有可能会存在多级调用。
25.本实施例提供了一种分布式系统中错误码传递方法,适用于分布式系统中同一个业务请求调用的多个服务模块之间的错误码传递,当某一个业务请求调用的多个服务模块中某一个服务模块产生错误后,将产生错误的服务模块称为错误根源服务模块,将调用错误根源服务模块的服务模块称为第一级调用模块,将调用第一级调用模块的服务模块称为第二级调用模块,将调用第二级调用模块的服务模块称为第三级调用模块,依次类推,将调用第n

1级调用模块的服务模块称为第n级调用模块,n为大于等于2的自然数。本发明提供的分布式系统中错误码传递方法,首先需要对分布式系统中的服务模块进行编码唯一对应的领域编码,即分布式系统中的每个服务模块唯一对应一个领域编码;领域编码包括字母和数字,其中字母表示领域编号,数字表示该领域下的功能模块编号,例如s01、a02、b01、m01,每个不同的领域编码表示一个不同功能的服务模。
26.本实施例中的分布式系统中错误码传递方法,参加图1所示,当分布式系统中错误根源服务模块产生错误并生成错误代码以后,这里的错误代码可以采用常规http错误码或用户按照自己的方式定义的错误码,错误根源服务模块将自身产生的错误代码与错误根源服务模块的领域编号进行合并,即将错误根源服务模块的领域编号附加在错误根源服务模块自身产生的错误代码的后面,形成一个新的错误码,将该新的错误码称为根源错误码,并将该根源错误码返回调用该错误根源服务模块的第一级调用模块,同时错误根源服务模块将根源错误信息也一并返回给第一级调用模块;其中根源错误信息为错误产生的原因;
27.第一级调用模块收到错误根源服务模块发来的根源错误码和根源错误信息后,对
根源错误信息进行容错处理,如果第一级调用模块对根源错误信息的容错处理成功,则不会向第二级调用模块返回错误码和根源错误信息;如果第一级调用模块对根源错误信息的容错处理失败,第一级调用模块将收到的根源错误码与自身的领域编号进行合并,即将第一级调用模块的领域编号附加在根源错误码的后面,形成第一级错误码,同时第一级调用模块将第一级错误码与根源错误信息一并返回给第二级调用模块;
28.第二级调用模块收到第一级调用模块发来的第一级错误码和根源错误信息后,对根源错误信息进行容错处理,如果第二级调用模块对根源错误信息的容错处理成功,则不会向第三级调用模块返回错误码和根源错误信息;如果第二级调用模块对根源错误信息的容错处理失败,第二级调用模块将收到的第一级错误码与自身的领域编号进行合并,即将第二级调用模块的领域编号附加在第一级错误码的后面,形成第二级错误码,同时第二级调用模块将第二级错误码与根源错误信息一并返回给第三级调用模块;
29.依次类推;
30.第n

1级调用模块收到第n

2级调用模块发来的第n

2级错误码和根源错误信息后,对根源错误信息进行容错处理,如果第n

1级调用模块对根源错误信息的容错处理成功,则不会向第n级调用模块返回错误码和根源错误信息;如果第n

1级调用模块对根源错误信息的容错处理失败,第n

1级调用模块将收到的第n

2级错误码与自身的领域编号进行合并,即将第n

1级调用模块的领域编号附加在第n

2级错误码的后面,形成第n

1级错误码,同时第n

1级调用模块将第n

1级错误码与根源错误信息一并返回给第n级调用模块。
31.上述第一级调用模块、第二级调用模块、
……
第n级调用模块中的任意一个服务模块,均可以为业务请求方,最终业务请前方根据其调用的下级服务模块返回的错误码,就可以方便提前根源错误码,根据根源错误码中的领域编码,就可以很快定位到发生错误的服务模块。
32.第一级调用模块在生成的错误日志中记录如下信息:第一级错误码、根源错误码和根源错误信息;第二级调用模块在生成的错误日志中记录如下信息:第二级错误码、根源错误码和根源错误信息;
……
;第n级调用模块在生成的错误日志中记录如下信息:第n级错误码、根源错误码和根源错误信息。第一级调用模块、第二级调用模块、
……
和第n级调用模块在生成的错误日志中,根源错误码作为独立字段输出,以便业务请求者查看错误日志时能快速找到根源错误码。
33.为了方便错误码信息的传递,第一级调用模块、第二级调用模块、
……
和第n级调用模块均提供独立于调用接口之外的错误信息传递接口,第一级调用模块、第二级调用模块、
……
和第n级调用模块均通过错误信息传递接口获取和传递错误码和根源错误信息。
34.为了方便多线程同时访问错误信息,第一级调用模块、第二级调用模块、
……
和第n级调用模块可以使用全局静态变量保存错误码和根源错误信息,也可以通过线程本地存储的方式保存错误码和根源错误信息。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献