惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
T
The Blog of Author Tim Ferriss
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
爱范儿
爱范儿
GbyAI
GbyAI
H
Help Net Security
I
InfoQ
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
人人都是产品经理
人人都是产品经理
J
Java Code Geeks
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
云风的 BLOG
云风的 BLOG
Project Zero
Project Zero
P
Privacy & Cybersecurity Law Blog
A
Arctic Wolf
Know Your Adversary
Know Your Adversary
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tor Project blog
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
WordPress大学
WordPress大学
V
Visual Studio Blog
博客园_首页
G
GRAHAM CLULEY
K
Kaspersky official blog
T
Tailwind CSS Blog
T
Threat Research - Cisco Blogs
博客园 - Franky
D
Docker
Security Latest
Security Latest
I
Intezer
有赞技术团队
有赞技术团队
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 【当耐特】
B
Blog RSS Feed
T
The Exploit Database - CXSecurity.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Coding

请教一下各位佬 GPT 一直 401 是什么情况? - V2EX 天翼云 glm5.1 codingplan 官方玩不起,强制终止用户的包月续订 - V2EX 字节的 CodingPlan 实锤虚假宣传 - V2EX 现在有什么优雅的使用 ai 工具编程的方法? - V2EX MiniMax-M2 截到 11.07 限时免费 - V2EX VibeCoding 导致损失 1100 刀 - V2EX 科班大学计算机专业主要课程有哪些呢 - V2EX 你们公司用上 ChatGPT 了吗?有哪些使用场景 - V2EX Cloud Studio 内核升级之专注体验 - V2EX 行云流水| CI 3.0 云原生构建全新上线 - V2EX ​Cloud Studio 云端开发保障企业源代码安全 - V2EX 更高效便捷的开发体验——Cloud Studio 编辑器命令行工具 - V2EX Cloud Studio 内核升级之持续优化 - V2EX Cloud Studio 有“新”分享 - V2EX 怎么设计面试题,能考查到实战能力? - V2EX 有奖征文丨 [玩转 Cloud Studio] 第二季来啦! - V2EX Cloud Studio 一个好用的在线编程工具 - V2EX 线上直播 | 未来金融研究所——以应用为中心,重塑金融研发效率 - V2EX 新一代 CI 即将到来! - V2EX 重磅发布! Orbit 云原生应用全生命周期管理工具上线啦! - V2EX 腾讯云, DevOps 领导者! - V2EX 各位是如何批量管理项目中的 shell 脚本的? - V2EX CODING DevSecOps 助力金融企业跑出数字加速度 - V2EX CODING 正式入驻腾讯会议应用市场! - V2EX CODING DevOps 助力中化信息打造新一代研效平台,驱动“线上中化”新未来 - V2EX 叮! Techo Day 腾讯技术开放日如约而至! - V2EX 程序员在公司该怎么保护自己的个人劳动成果? - V2EX Next.js 在 Serverless 中从踩坑到破茧重生 - V2EX [高效开发] 不止面对面, Cloud Studio 推出 MetaWork 云协作套件 - V2EX CODING 公开课火热报名中! - V2EX coding.net 502 - 2022 年 3 月 21 日 - V2EX 发现 coding.net 会对 1 年未登录用户删数据 - V2EX CODING 携手 Thoughtworks 助力老百姓大药房打造”自治、自决、自动”的敏捷文化 - V2EX 迷雾中的自动化测试体系建设 - V2EX Nocalhost:云原生开发新体验 - V2EX 使用 Nocalhost 开发 Kubernetes 中的 APISIX Ingress Controller - V2EX CODING x 百果园,水果零售龙头迈出 DevOps 体系建设第一步 - V2EX CODING 与悬镜安全达成战略合作,引领 DevOps 向 DevSecOps 创新模式升级 - V2EX Apache Log4j 2 报高危漏洞, CODING 联手腾讯安全护卫软件安全 - V2EX WePack —— 助力企业渐进式 DevOps 转型 - V2EX 大型前端项目 DevOps 沉思录 —— CI 篇 - V2EX CODING 代码资产安全系列之 —— 构建全链路安全能力,守护代码资产安全 - V2EX 一页纸需求的应对方法 —— 五步法 - V2EX Nocalhost 为 KubeSphere 提供更强大的云原生开发环境 - V2EX 喜报! Nocalhost 成功加入 CNCF 沙箱 - V2EX Nocalhost —— 让云原生开发回归原始而又简单 - V2EX CODING 项目协同 2.0 —— 让协作有条不紊 - V2EX 赋能“数字金融”, CODING 再下数城 - V2EX 打造数字化软件工厂 —— 一站式 DevOps 平台全景解读 - V2EX 做云原生时代标准化工具,实现高效云上研发工作流 - V2EX
rpc 服务中,“业务错误”的返回应该如何设计? - V2EX
justdoit123 · 2024-07-02 · via Coding
povsister

7

povsister      2024 年 7 月 3 日   ❤️ 1

@justdoit123
粗略意义上正确,不过各家有各家的做法,rpc 的错误机制设计是要和可观测+trace+SLO 大盘联合起来考虑的。

业务错误不代表监控不需要关心,简单来说:
如果你只需要拒绝服务+返回错误,并且需要有一个自定义的 errcode 去表示这是什么类型的错误,同时附带一个简短的 readable 的说明(可以理解为 errcode 作为程序使用的描述,可以依赖 errcode 进一步执行某些程序化步骤,readable 的描述作为程序员阅读使用,方便快速识别问题),除此之外不需要向调用方传递更多的错误内容,那么就适合用 rpc error 来表示。
如果你要向调用方提供更多的关于错误的具体信息,深入绑定业务场景,那么就不适合当做 err 来处理,应该作为一个正常的 rpc 响应,此时的观测方案设计应该交由调用方手动填写 metric/log ,作为业务指标监控来看。

更深一步来说,还可以细分为业务错误(入参不合法,执行条件不满足,业务逻辑错误等等),框架及中间件错误( token 无效,malformed request ,调用超时,BBR 自适应限流,熔断错误等等),以 int64 作为 errcode 的取值范围的话,常见的方案是 0 为正常响应,errcode>0 的部分作为业务错误( eg:10001=余额不足),errcode<0 的部分作为框架及通用错误( eg:-400=请求错误/参数错误,-504=调用超时,-429=BBR 限流)

rpc error 本身已经有一套错误码了,这个通常称为大码,含义可以简单认为和 http code 相同,通常作为 transport 层的可观测手段,适用对象 API 网关,SLB 等基础 L3-L7 设施
业务 errcode 通常是选择 rpc error 中的 unknown error (例如 GRPC 为 status 2 )作为可扩展对象,这个称为小码,其作用就是,在 rpc 的底层 transport 没有问题的时候,用于传递业务+业务框架的错误,主要目的用于微服务治理和更细粒度的 SLO 观测