閱讀294 返回首頁    go 微信


錯誤代碼__產品使用問題_雲服務總線 CSB-阿裏雲

消費端通過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”

最後更新:2016-11-23 16:04:12

  上一篇:go 調用服務__使用說明_用戶手冊_雲服務總線 CSB-阿裏雲
  下一篇:go MQ 簡介__產品簡介_消息隊列 MQ-阿裏雲