上次面试被问到,假设有一个微服务,订单服务有集群 A 和 B,因为版本发布导致 A 和 B 不一致了,但是不会大带宽服务器报错,这时改怎么处理?
把问题丢给测试人员
请求带上版本号,版本号分流
你应该反问,为什么会有这样的发布流程和结果。 这种结果应该不是为了 AB 测试
1. 开发时保证不同版本的同一个接口向前兼容
2. 请求通过版本号分流
开发时就应该兼容旧版
第一先解决这个不同版本的问题,优先回退高版本的。第二调查为啥会出现不同版本的出现,测试人员和开发人员有没有针对此情况充分测试,三是微服务要有主备服务,服务更新应逐渐更新,并且先请求分流测试是否出现问题,没有问题再更新剩余部分
改用 k8s istio 处理
把旧版本的停了
开放题目,可以撤很远
灰度发布
服务发现附加版本号
发布流程自动化
怎么办的话,干掉旧版本被
一般来说有这种需求场景,肯定是要通知到运维进行备案。让运维心中有数。
毕竟总不能因为 AB 版本导致全服停机吧。
一般在消息设计里面肯定要设计版本号, 否则这种问题必然发生。
如果真的发生这种情况,肯定要进行切流量,dubbo 控制台本身就有切流量的的操作。
如果是 http 服务,这个好办,ng 或者 k8s 的 ingress 或者 service 都可以搞。 不过话说回来,现在没上 k8s 的的确比较蛋疼,毕竟我们 devops +k8s 这一套已经从 18 年用到现在。即便是出问题,也能方便切流量。
所以
1.团队基建有问题
2.架构考虑扩展性有问题
3.测试&发布流程有问题
4.领导有问题。
不会报错你怎么知道的不一致?不一致就不一致吧,反正也不会导致业务出错,下次更新版本不就一致了嘛。
老哥分析的很全面,不够面试可不敢说领导有问题,哈哈哈
我觉得面试的时候就应该正面指出对方的问题,技术能力强才能在市场上利于不败之地。很多问题确实解决的方案有多种,就应该选择最适合目前公司业务的。