V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chenzw2
V2EX  ›  Java

微服务中某个服务对外接口变化,那么调用这个接口的所有服务都需要更新,有没有什么好的方案?

  •  
  •   chenzw2 · 20 小时 39 分钟前 · 1207 次点击
    看到讨论微服务优劣的帖子,我有个疑问,如果微服务中的某个基础服务对外接口发生变化,假设有 10 个服务调用了此接口,那么所有接口都需要重新改动?甚至于有时不知道哪些服务会调用到这个变动的接口,这是个大问题,请问大家都用什么方案来解决以上问题?
    12 条回复    2025-02-24 16:41:39 +08:00
    littlewing
        1
    littlewing  
       20 小时 38 分钟前
    变化当然是要考虑兼容性啊
    ipwx
        2
    ipwx  
       20 小时 36 分钟前
    把旧的接口留着,调一下新的接口相关代码呗。微软 20 年老 API 都留着呢
    cvbnt
        3
    cvbnt  
       20 小时 30 分钟前 via Android
    那要看什么级别的改动,如果是接口名称,参数修改那没辙,但是可以单独将请求对外接口封装到单独的一个服务里供其他服务使用,这样外部接口发生变化,仅需要改动这一个服务就行了
    quan7u
        4
    quan7u  
       20 小时 24 分钟前
    1 、版本号 or 参数控制接口版本,比如保留 v1 、新开 v2 ,通知上游接口切换
    2 、完善监控,统计接口流量、分渠道的调用量
    lnbiuc
        5
    lnbiuc  
       20 小时 24 分钟前
    旧的接口不变,新的改成 v2 版本,其他的服务如果有需要就改,没需要就维持现状
    xuanbg
        6
    xuanbg  
       13 小时 27 分钟前
    首先,出现 10 个服务调用情况基本就是设计的问题。代码写错地方真的比写错了代码还糟糕。
    然后,问题已经出现了,那该怎么办呢?简单,给一个 V2 版本就行了。需要新的改用 V2 版本,不需要的继续用 V1 ,就不需要动他了。
    conn4575
        7
    conn4575  
       12 小时 9 分钟前 via Android
    如果你有更上层的 api 网关的话,可以在上面做参数重写,这就是 api 网关的意义。否则就只能用 v1 v2 做好兼容了
    wogogoing
        8
    wogogoing  
       11 小时 22 分钟前 via iPhone
    /api/v1

    /api/v2

    让需要的服务显式变更。
    lasuar
        9
    lasuar  
       10 小时 21 分钟前
    1. 内部逻辑变化不影响其他服务,仅接口出入参变化需要关联更新
    2. 接口出入参变化属于较大结构调整,可能是因为之前设计不完善或业务/功能原因需要调整,频率较低
    3. 微服务中的服务调用一般是基于生成式代码的 RPC 调用,不存在说 [不知道影响了哪些服务]
    4. 楼主的问题在微服务中属于基础,最好是先尝试本地使用熟悉语言实践一下微服务架构,这样方能避免一知半解的状态。
    looveh
        10
    looveh  
       9 小时 12 分钟前
    @cvbnt 你这治标不治本,那我要是改动了这一个服务咋办,不还是这样的情况么。基础服务改动最好的办法就是升级,做好兼容,实在兼容不了就强制升级呗
    cyrivlclth
        11
    cyrivlclth  
       5 小时 4 分钟前
    这个场景和微服务没强关联,你就做下提供给移动端的 api 就知道了,有些接口你要是变更了,那没升级的那些移动端的用户是不是直接不给用了?那可不是十多个,那是成千上万个用户。
    这种涉及到对外接口的,都要做版本控制的。
    pxxu
        12
    pxxu  
       3 小时 41 分钟前
    如果微服务提供的接口是为了保障和其他微服务之间的接口变化感知的话,pact 之类做服务之间的契约测试,CI 定期监控应该满足你的需求
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3215 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 12:23 · PVG 20:23 · LAX 04:23 · JFK 07:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.