微服务系统错误码设计
目標(biāo)
那么錯(cuò)誤碼能為我們帶來(lái)什么?
首先,通過錯(cuò)誤碼我們能識(shí)別出系統(tǒng)到底出了什么問題??
其次,通過錯(cuò)誤碼我們應(yīng)當(dāng)能識(shí)別出哪個(gè)系統(tǒng)出了問題?
再次,通過錯(cuò)誤碼需要知道對(duì)應(yīng)的定位問題和解決問題的方法。
最后,通過錯(cuò)誤碼我們可以決策出該給客戶顯示出了什么問題?(前端)
使用方
- PaaS集成商,負(fù)責(zé)運(yùn)維我們的服務(wù);
- SaaS應(yīng)用層服務(wù);
- 部署人員、客服人員;
錯(cuò)誤碼分類
| 1 | 系統(tǒng)錯(cuò)誤 | 主要指和操作系統(tǒng)交互的錯(cuò)誤,如socket綁定失敗,創(chuàng)建新文件失敗,申請(qǐng)內(nèi)存空間失敗 |
| 2 | 業(yè)務(wù)錯(cuò)誤 | 主要是業(yè)務(wù)系統(tǒng)內(nèi)部錯(cuò)誤,如超出licence限制使用資源,超出運(yùn)行提取特征的最大圖片個(gè)數(shù) |
| 3 | 參數(shù)解析錯(cuò)誤 | 如get請(qǐng)求query字段為空,缺少必選字段,字段取值錯(cuò)誤等 |
| 4 | 依賴基礎(chǔ)服務(wù)錯(cuò)誤 | 如寫zk讀寫出錯(cuò)等/mongo連接的錯(cuò)誤 |
當(dāng)前錯(cuò)誤碼存在的問題
錯(cuò)誤碼
方式一:
| { ??code : xxx, // http協(xié)議相關(guān)錯(cuò)誤碼,200表示正常 ??msg : , ??data : { ????code : xxx, // 安防業(yè)務(wù)系統(tǒng)錯(cuò)誤碼,0表示正常 ????msg : ,????? ????// 業(yè)務(wù)數(shù)據(jù) object result ??} } |
方式二:
| { ??code : xxx, // http協(xié)議相關(guān)錯(cuò)誤碼和安防業(yè)務(wù)系統(tǒng)錯(cuò)誤碼,0和200都表示正常 ??msg : xxx, // 英文 ??data : {? } } |
?
錯(cuò)誤碼傳遞設(shè)計(jì)
- 對(duì)于下游返回的致命錯(cuò)誤,直接傳遞該錯(cuò)誤碼和error msg;
- 對(duì)于下游返回的非致命錯(cuò)誤,請(qǐng)求繼續(xù)執(zhí)行。服務(wù)可以有三種處理方式:1、忽略之前的錯(cuò)誤,返回code=0并且err_msg為空;2、將下游的錯(cuò)誤碼和錯(cuò)誤信息與本服務(wù)的錯(cuò)誤碼與錯(cuò)誤信息進(jìn)行一次映射后返回;3、將下游的錯(cuò)誤碼和錯(cuò)誤信息接著向上傳遞;
- error msg中需要保留服務(wù)名稱;
- PaaS OpenApi需要對(duì)交付給客戶的錯(cuò)誤碼整體負(fù)責(zé),需要屏蔽下游系統(tǒng)的變化,特別是對(duì)應(yīng)下游返回的實(shí)現(xiàn)細(xì)節(jié)方面的錯(cuò)誤碼進(jìn)行抽象后暴露給用戶;
- 下游系統(tǒng)需要向上游系統(tǒng)提供(并及時(shí)更新) 錯(cuò)誤碼描述,應(yīng)對(duì)措施和對(duì)應(yīng)的接口名稱(可能是多個(gè));上游系統(tǒng)(非頂端的PaaS OpenApi)需要整合下游系統(tǒng)提供的錯(cuò)誤碼,和自身的錯(cuò)誤碼一起提供給自己的上游系統(tǒng)使用;
錯(cuò)誤碼統(tǒng)一設(shè)計(jì)
一共由8位數(shù)字進(jìn)行表示:
- 前兩位表示不同服務(wù)名稱,統(tǒng)一分配數(shù)字
- 后續(xù)兩位表示模塊名稱,由服務(wù)負(fù)責(zé)人統(tǒng)一分配數(shù)字(paas openapi、xid內(nèi)部均涉及多服務(wù)/模塊)
- 后續(xù)一位表示錯(cuò)誤類型
- 后續(xù)三位表示具體錯(cuò)誤原因
sample: 4011005按照上面的的規(guī)則,可劃分為04,01,1,005。04標(biāo)識(shí)xfr,01標(biāo)識(shí)xfr-proxy(假定),1標(biāo)識(shí)系統(tǒng)級(jí)錯(cuò)誤,005是業(yè)務(wù)錯(cuò)誤。
總結(jié)
以上是生活随笔為你收集整理的微服务系统错误码设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生产者消费者ReentrantLock实
- 下一篇: java信息管理系统总结_java实现科