• 请不要在回答技术问题时复制粘贴 AI 生成的内容
cking
V2EX  ›  程序员

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

  •  
  •   cking · Feb 19, 2021 · 2713 views
    This topic created in 2093 days ago, the information mentioned may be changed or developed.
    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 显示不同的错误信息.
    12 replies  •  2021-02-19 17:24:13 +08:00
    laimailai
    laimailai
    Feb 19, 2021
    1
    同样问题 ;
    考虑用数据库 或 统一包管理了。
    看下有没有更好的方案
    zjbztianya
    zjbztianya
    Feb 19, 2021
    2
    在每个服务传播错误的时候,做一次翻译,这样保证每个服务 + 错误枚举,应该是唯一的
    jjwjiang
    jjwjiang
    Feb 19, 2021
    3
    我们做法是在每个服务里规定了前缀,比如服务 A 是 1001 打头,服务 B 是 1002 打头。

    如果用统一包管理那就失去了微服务的优势了…
    chendy
    chendy
    Feb 19, 2021
    4
    1. 做个错误码管理系统,发号出去用
    2. 错误码用字符串,按规则拼(比如 系统名_模块名_错误编号)
    3. 其实错误处理这种东西吧…犯不上做这么重…
    dqzcwxb
    dqzcwxb
    Feb 19, 2021
    5
    配置中心
    cking
    cking
    OP
    Feb 19, 2021
    6
    @laimailai 准备用字典表维护
    cking
    cking
    OP
    Feb 19, 2021
    7
    @chendy 我们主管就是说 很多重复了 所以 有想法把统一管理一下
    clf
    clf
    Feb 19, 2021
    8
    划分号段吧,每个服务一个号段。包括数据 ID,也按服务进行划分号段。
    kingsmalltwo
    kingsmalltwo
    Feb 19, 2021
    9
    统一入库字典码表+缓存
    zm8m93Q1e5otOC69
    zm8m93Q1e5otOC69
    Feb 19, 2021
    10
    @cking 老哥数据库字典表怎么取出来用呢? List<Object>吗?那这样会有硬编码吧。。
    palmers
    palmers
    Feb 19, 2021
    11
    其实 code 带上服务模块前缀就行了 不重 也可以一目了然 因为这个只是为了快速识别错误信息
    gamexg
    gamexg
    Feb 19, 2021
    12
    我这边是按照号段划分的,不过已存在的服务处理起来可能麻烦些。
    也许改成字符串错误代码更方便。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1046 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 23:15 · PVG 07:15 · LAX 15:15 · JFK 18:15
    ♥ Do have faith in what you're doing.