分布式服务系统中,如何管理枚举类!

2021-02-19 14:53:26 +08:00
 cking
RT.我们系统分布式部署
示例服务器:
A-business-service: A 业务系统实现服务(业务实现方法)
A-base-service: A 基层系统实现服务(链接 Mysql)
B-business-service: B 业务系统实现服务(业务实现方法)
B-base-service: B 基层系统实现服务(链接 Mysql)


现在每个服务器都有各自服务中的代码枚举类.但是由于没有管理 很多 code 以及 msg 重复了 甚至在 A 中表达的是(1001, 错误信息 1) 在 B 中表达的就是(1001, 错误信息 2) 这样的话 就很容易引入错误的 code 显示不同的错误信息.
1614 次点击
所在节点    程序员
12 条回复
laimailai
2021-02-19 15:04:02 +08:00
同样问题 ;
考虑用数据库 或 统一包管理了。
看下有没有更好的方案
zjbztianya
2021-02-19 15:10:45 +08:00
在每个服务传播错误的时候,做一次翻译,这样保证每个服务 + 错误枚举,应该是唯一的
jjwjiang
2021-02-19 15:18:06 +08:00
我们做法是在每个服务里规定了前缀,比如服务 A 是 1001 打头,服务 B 是 1002 打头。

如果用统一包管理那就失去了微服务的优势了…
chendy
2021-02-19 15:18:25 +08:00
1. 做个错误码管理系统,发号出去用
2. 错误码用字符串,按规则拼(比如 系统名_模块名_错误编号)
3. 其实错误处理这种东西吧…犯不上做这么重…
dqzcwxb
2021-02-19 15:27:24 +08:00
配置中心
cking
2021-02-19 16:21:51 +08:00
@laimailai 准备用字典表维护
cking
2021-02-19 16:22:32 +08:00
@chendy 我们主管就是说 很多重复了 所以 有想法把统一管理一下
clf
2021-02-19 16:24:12 +08:00
划分号段吧,每个服务一个号段。包括数据 ID,也按服务进行划分号段。
kingsmalltwo
2021-02-19 17:04:57 +08:00
统一入库字典码表+缓存
uselessVisitor
2021-02-19 17:12:36 +08:00
@cking 老哥数据库字典表怎么取出来用呢? List<Object>吗?那这样会有硬编码吧。。
palmers
2021-02-19 17:16:57 +08:00
其实 code 带上服务模块前缀就行了 不重 也可以一目了然 因为这个只是为了快速识别错误信息
gamexg
2021-02-19 17:24:13 +08:00
我这边是按照号段划分的,不过已存在的服务处理起来可能麻烦些。
也许改成字符串错误代码更方便。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/754244

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX