全部产品

错误码

更新时间:2017-08-07 20:18:20   分享:   

消费端通过CSB调用服务时,整个链路上可以分成三个阶段:

  1. 服务消费端应用以消费端协议访问CSB
  2. CSB处理转发服务调用请求
  3. CSB以提供端协议访问服务提供端应用

这三个部分都可能出错,服务消费端收到错误信息时要能区别是在哪个阶段发生了什么错误,需要考虑如何通过消费端协议定义的错误信息结构来体现。消费端协议定义的错误信息结构多种多样,也可能有各种限制,但是通常都至少会提供错误码和错误描述,而且错误码应该都有保留或者未占用的、代表“其它错误”的编码(下称:逃逸代码 Escape Code)。基于这个前提,可以定义如下约定:

阶段1发生的错误不用做任何处理。

阶段2及之后发生的错误,约定使用消费端协议的某个Escape Code,具体CSB错误码和描述以固定格式体现在消费端错误描述内,如[CSB Error Code] CSB Error Message

阶段3发生的错误,同上处理,但是CSB Error Code也提供Escape Code表示这是一个阶段3错误,且CSB Error Message的格式定义为[提供端协议错误码] 提供端协议错误信息。这里要注意的是,CSB需要了解提供端协议的错误码中哪些表示正常访问,以免将成功的访问当做错误处理。

基于上述约定,我们对错误码的定义如下。

CSB 错误码列表

其中800为 CSB Escape Code

错误码错误说明
200访问处理成功
500CSB内部错误
501所访问的服务API未经授权
502访问签名未通过验证,也包括所提供的访问凭证不存在的情况
504所访问的服务API不存在
505访问凭证缺失
506访问签名缺失
507访问参数缺失
508访问要求通过安全通道进行
509访问时间戳缺失
510访问过期,请检查网络通路是否稳定
800[提供端协议错误码] 提供端协议错误信息
801服务提供端不可达。如果提供端协议会报告该类型错误,将会通过上面的800 Escape Code体现

消费端协议 Escape Code 列表

消费端协议Escape Code
HTTP类500
HSF99

举例说明

消费端应用以HSF协议通过CSB访问一个后端HSF服务,三个阶段的错误举例如下:

错误阶段错误示例
第一阶段错误CSB的HSF协议处理器发现消费端发出的HSF请求格式不正确,以HSF错误40 “bad request”直接回复消费端。
第二阶段错误CSB在处理消费端发出的HSF请求时,发现所访问的API并不存在,以HSF错误 99 “[504]所访问的服务API(taobao.unknown)在实例(instance0733)上不存在” 回复消费端。其中99为消费端协议HSF的Escape Code
第三阶段错误CSB处理消费端发出的HSF请求,在访问后端服务提供者时,HSF服务框架报错60 “service not found”,CSB以HSF错误 99 “[800][60] service not found” 回复消费端。其中99为消费端协议的Escape Code,800为CSB的Escape Code
第三阶段错误CSB处理消费端发出的HSF请求,在访问后端服务提供者时,HSF服务提供应用出错,因为HSF框架不支持返回具体应用逻辑错误信息,仅仅报错为80 “server error”,CSB以HSF错误 99 “[800][80] server error” 回复消费端。这里具体的应用错误只能在应用服务提供端看到,如果后端是其它比较开放的协议框架(用X代替),具体的应用错误信息可能可以报给CSB,这样CSB才能返回更具体的错误信息 99 “[800][X-Code] X-Message”
本文导读目录
本文导读目录
以上内容是否对您有帮助?