微服务系统错误码设计
目标
那么错误码能为我们带来什么?
首先,通过错误码我们能识别出系统到底出了什么问题?
其次,通过错误码我们应当能识别出哪个系统出了问题?
再次,通过错误码需要知道对应的定位问题和解决问题的方法。
最后,通过错误码我们可以决策出该给客户显示出了什么问题?(前端)
使用方
- PaaS集成商,负责运维我们的服务;
- SaaS应用层服务;
- 部署人员、客服人员;
错误码分类
类型编号 |
错误类型 |
解释 |
---|---|---|
1 | 系统错误 | 主要指和操作系统交互的错误,如socket绑定失败,创建新文件失败,申请内存空间失败 |
2 | 业务错误 | 主要是业务系统内部错误,如超出licence限制使用资源,超出运行提取特征的最大图片个数 |
3 | 参数解析错误 | 如get请求query字段为空,缺少必选字段,字段取值错误等 |
4 | 依赖基础服务错误 | 如写zk读写出错等/mongo连接的错误 |
当前错误码存在的问题
- 不全或概况性较高,可以根据上述的类型进一步识别
- 不能定位到问题服务
- 描述信息文字不易理解(偏专业)
- 每个服务都自定义错误码规范
错误码
方式一:
|
方式二:
|
错误码传递设计
- 对于下游返回的致命错误,直接传递该错误码和error msg;
- 对于下游返回的非致命错误,请求继续执行。服务可以有三种处理方式:1、忽略之前的错误,返回code=0并且err_msg为空;2、将下游的错误码和错误信息与本服务的错误码与错误信息进行一次映射后返回;3、将下游的错误码和错误信息接着向上传递;
- error msg中需要保留服务名称;
- PaaS OpenApi需要对交付给客户的错误码整体负责,需要屏蔽下游系统的变化,特别是对应下游返回的实现细节方面的错误码进行抽象后暴露给用户;
- 下游系统需要向上游系统提供(并及时更新) 错误码描述,应对措施和对应的接口名称(可能是多个);上游系统(非顶端的PaaS OpenApi)需要整合下游系统提供的错误码,和自身的错误码一起提供给自己的上游系统使用;
错误码统一设计
一共由8位数字进行表示:
- 前两位表示不同服务名称,统一分配数字
- 后续两位表示模块名称,由服务负责人统一分配数字(paas openapi、xid内部均涉及多服务/模块)
- 后续一位表示错误类型
- 后续三位表示具体错误原因
sample: 4011005按照上面的的规则,可划分为04,01,1,005。04标识xfr,01标识xfr-proxy(假定),1标识系统级错误,005是业务错误。
微服务系统错误码设计相关推荐
- 阿里双十一微服务改造—架构设计
随着我互联网需求的压力逐渐增长,同时基础设施的不断完善,系统架构的微服务改造被正式提上日程.从微服务改造的目标架构蓝图设计开始讨论,架构组进行了整整两天的激烈讨论,明确了很多的业务边界.在此过程中我学 ...
- 百亿流量微服务网关的设计与实现
百亿流量微服务网关的设计与实现 本文从百亿流量交易系统微服务网关(API Gateway)的现状和面临的问题出发,阐述微服务架构与 API 网关的关系,理顺流量网关与业务网关的脉络,分享 API 网关 ...
- 阿里P8架构师谈:从单体架构、到SOA、再到微服务的架构设计详解
本文涉及的内容以及知识点如下: 1.单体架构 2.单体架构的拆分 3.SOA与微服务的区别 4.微服务的优缺点 5.微服务的消息 6.服务集成 7.数据的去中心化 单体架构 Web应用程序发展的早期, ...
- 现代微服务拆分与设计
现代微服务拆分与设计 一.AKF扩展立方体 Y轴 X轴 Z轴 二.前后端分离 早期未分离(JSP+Servlet) 半分离 完全分离 三.无状态服务 四.RestFul服务通信 在设计一个微服务的时候 ...
- 微服务平台的设计要点_我在微服务方面的经验中有5点要点
微服务平台的设计要点 I am a big fan of microservices. And at the same time, I am not always so fond of them. S ...
- 从单体架构、到SOA、再到微服务的架构设计详解
本文涉及的内容以及知识点如下: 单体架构 单体架构的拆分 SOA与微服务的区别 微服务的优缺点 微服务的消息 服务集成 数据的去中心化 单体架构 Web应用程序发展的早期,大部分web工程是将所有的功 ...
- java 微服务源码_Redkale 1.9.4 Java 分布式微服务框架
Redkale 1.9.4 发布.Redkale (中文名: 红菜苔,一种湖北特产蔬菜)是基于Java 8全新的微服务框架, 包含HTTP.WebSocket.TCP/UDP.数据序列化.数据缓存.依 ...
- 微服务系统架构设计系列 - RateLimiter - 1. 限流器简介与一般算法
Key TakeAways 限流器是一种防御性的编程实现方式,防止一个大型的分布式系统在不可预知的大流量到来的时候导致系统大规模故障. 限流器可以设置在服务端,主要为了限制资源的使用.放在客户端主要考 ...
- 微服务架构如何设计API代理网关和OAuth2授权认证框架
1,授权认证与微服务架构 1.1,由不同团队合作引发的授权认证问题 去年的时候,公司开发一款新产品,但人手不够,将B/S系统的Web开发外包,外包团队使用Vue.js框架,调用我们的WebAPI,但是 ...
最新文章
- 在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂「拳无虚发」
- mybatis注解配置出现returned more than one row, where no more than one was expected
- 第五篇: mysqlduomp 实时增量备份、innobackupex(完全备份与 恢复、增量备份与恢复)
- 电磁场与电磁波第一章公式总结
- 光流法 Optical Flow
- Masm for Windows集成开发环境编写汇编程序
- Mac不装软件校验MD5和SHA1值
- linux找出重复数字,C语言笔试经典-查找多位数重复数字以及次数
- matplotlib 数据可视化
- linux内核烧制,学会分析Linux内核需要多久?8分钟
- Android接入unityads广告,Unity Ads胡敏:开发者如何通过广告获取成功
- Linux IO控制命令生成
- Swashbuckle Swagger组件扩展
- 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
- s7200cpu224xp手册_西门子S7-200CPU224XP
- 彩虹配色的RGB函数
- MSCI公布最新因子创新;MSCI多资产类别因子模型
- uniapp的原生tabbar图片加载不出来
- Android Studio开发之获取Apk相关版本信息
- 2、Solr创建核心
热门文章
- Android 四大天王-- 三个
- 冰与火之歌居然是在 DOS 系统上写出来的
- 8.Spring Boot中使用thymeleaf
- Python集合和字符串及练习
- 元分析 | 精神分裂症患者认知功能的脑结构相关
- 用天然气做燃料极空气做氧化极的燃料电池
- 《帝友货代系统》项目研发总结
- 【转载】androidstudo如何跨越这个厚厚的墙,亲测有效 Could not resolve com.android.tools.build:gradle:
- 常见的几个凸函数与凹函数
- 羧基水溶性量子点(PEG)标记鼻咽癌标志物EB病毒核EBNA1抗原|PEG-NH2修饰CdSe/ZnS 量子点(520nm)