背景:每次重启都要告知测试或者客户在维护,线上QPS稍微有点高,维护的代价比较大,且维护次数频繁。经过被喷了多次之后总结下定决心解决这个eureka服务重启的坑
eureka有个特点就是轮询去查询服务端的健康状态。默认是90s一次。可以通过一定的配置更改缩短时间,然而更改这个配置需要谨慎。
因此想到了两个方案,一个是直接调用eureka server API切换 一个是直接使用全家桶的spring-boot-actuator。
我这边使用的是简单粗暴的方式调用eureka server API。采用蓝绿发布的模式实现自由切换微服务的注册。从而对线上的影响达到0的风险,也无需停机
当服务只有一个的时候,脚本启动多一个备用的服务,eureka先等备用服务启动完成并且注册成功。
当成功注册后,则将旧有的服务移出eureka下架。
注:需要更改eureka server的主动扫描时间,eureka client不推荐更改,经过多次的实验,如果同步时间一致,会偶尔出现404 服务实例找不到。实则已经注册成功,网关一直无法捕捉到实例。