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

Java 集群服务不一致怎么处理

  •  
  •   marine2c · 2021-03-08 11:20:11 +08:00 · 2342 次点击
    这是一个创建于 1367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上次面试被问到,假设有一个微服务,订单服务有集群 A 和 B,因为版本发布导致 A 和 B 不一致了,但是不会报错,这时改怎么处理?

    14 条回复    2021-03-09 10:40:36 +08:00
    rootmaster
        1
    rootmaster  
       2021-03-08 11:23:57 +08:00
    把问题丢给测试人员
    zhongjun96
        2
    zhongjun96  
       2021-03-08 11:31:41 +08:00
    请求带上版本号,版本号分流
    anonydmer
        3
    anonydmer  
       2021-03-08 11:34:03 +08:00
    你应该反问,为什么会有这样的发布流程和结果。 这种结果应该不是为了 AB 测试
    wakzz
        4
    wakzz  
       2021-03-08 11:38:53 +08:00
    1. 开发时保证不同版本的同一个接口向前兼容
    wakzz
        5
    wakzz  
       2021-03-08 11:39:13 +08:00
    2. 请求通过版本号分流
    cheng6563
        6
    cheng6563  
       2021-03-08 11:42:14 +08:00
    开发时就应该兼容旧版
    airfling
        7
    airfling  
       2021-03-08 11:45:42 +08:00
    第一先解决这个不同版本的问题,优先回退高版本的。第二调查为啥会出现不同版本的出现,测试人员和开发人员有没有针对此情况充分测试,三是微服务要有主备服务,服务更新应逐渐更新,并且先请求分流测试是否出现问题,没有问题再更新剩余部分
    imjamespond2020
        8
    imjamespond2020  
       2021-03-08 12:11:09 +08:00 via Android
    改用 k8s istio 处理
    qwerthhusn
        9
    qwerthhusn  
       2021-03-08 14:21:32 +08:00
    把旧版本的停了
    xx6412223
        10
    xx6412223  
       2021-03-08 18:12:18 +08:00 via Android
    开放题目,可以撤很远
    灰度发布
    服务发现附加版本号
    发布流程自动化

    怎么办的话,干掉旧版本被
    NUT
        11
    NUT  
       2021-03-08 18:55:25 +08:00
    一般来说有这种需求场景,肯定是要通知到运维进行备案。让运维心中有数。
    毕竟总不能因为 AB 版本导致全服停机吧。
    一般在消息设计里面肯定要设计版本号, 否则这种问题必然发生。
    如果真的发生这种情况,肯定要进行切流量,dubbo 控制台本身就有切流量的的操作。
    如果是 http 服务,这个好办,ng 或者 k8s 的 ingress 或者 service 都可以搞。 不过话说回来,现在没上 k8s 的的确比较蛋疼,毕竟我们 devops +k8s 这一套已经从 18 年用到现在。即便是出问题,也能方便切流量。

    所以
    1.团队基建有问题
    2.架构考虑扩展性有问题
    3.测试&发布流程有问题
    4.领导有问题。
    xuanbg
        12
    xuanbg  
       2021-03-08 21:57:00 +08:00
    不会报错你怎么知道的不一致?不一致就不一致吧,反正也不会导致业务出错,下次更新版本不就一致了嘛。
    marine2c
        13
    marine2c  
    OP
       2021-03-09 09:19:55 +08:00
    @NUT 老哥分析的很全面,不够面试可不敢说领导有问题,哈哈哈
    jiangzhizhou
        14
    jiangzhizhou  
       2021-03-09 10:40:36 +08:00
    @marine2c 我觉得面试的时候就应该正面指出对方的问题,技术能力强才能在市场上利于不败之地。很多问题确实解决的方案有多种,就应该选择最适合目前公司业务的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:18 · PVG 10:18 · LAX 18:18 · JFK 21:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.