10000台集群,发布服务时怎么确保所有用户访问新功能?

2020-01-09  本文已影响0人  Depro

思考:

一个java-web服务,如果集群部署1万台,发布一个新的充值优惠功能,机器一台一台的发布新功能,这样就很大概率有访问发布了新代码的用户使用新逻辑,另外一部分访问久逻辑。甚至同一个用户,第一次充值走新逻辑,第二次充值就访问到老逻辑了。怎么解决呢?

思路:

第一种:在低峰的时候,负载策略,用户访问全部到指定范围的50%的机器A,然后在另外一半的机器B上批量发布新功能,全部发布成功后,让用户的访问全部到新功能上的一半机器B上,然后在A上发布新功能,最后用户访问全部的A+B

第二种:像有些网站的提示一样,在某个时间段,系统升级,不能访问,然后在这暂停服务时间去发布。这个在互联网的应用,几乎是不太可能的。

第三种:在实际的发布集群中,使用的比较多的是做个新老版本的标识。新逻辑上线的时候,在配置中心或者配置文件中加个flag=true,表示新的代码,然后代码中判断这个如果为空或者false,就走老逻辑;如果是true,就走新逻辑。等这一次上线完成后,所有的机器上都上了配置flag=true,也就都走新逻辑了。下次把这个flag去掉就可以了。这个虽然不能完全杜绝在发布期间,一个用户在多次访问同一套逻辑返回2个不同的结果,这也是能接受的,毕竟发布都是选择在低峰期间,访问人数少。要不就是设置一个动态配置switch开关,正常上线,switch=false,都走老逻辑,等活动开始了,把switch=true,就全走新逻辑了。这个比较好。这个需要公司有支持动态配置的配置中心或者手动去改线上服务器配置的权限,不过现在开源配置中心多,没啥问题

上一篇下一篇

猜你喜欢

热点阅读