springcloud中怎么蓝绿发布嘞

百度上搜的有好多理论。就不说了
springcloud没啥管理界面。
搜到一个springcloudadmin的,结果是个第三方的。觉得不太稳。

我们的环境是,阿里云的docker,springcloud经典全家桶。
服务更新的时候是,同时启动版本1和版本2,两个服务,然后关掉老的版本1.
这样会造成5~10秒的服务中断

单一服务的时候,是用的阿里负载均衡的蓝绿发布。但使用注册服务eureka的话这样就不行了。

再说下早期的弯路,也是搜百度,springcloud如何优雅关闭,然后找到了,每个服务可以执行 shutdown方法,但这其实并没有什么卵用。阿里关闭服务的时候已经算是优雅关闭了。用这个效果一样。

最终解决的方向是,eureka里的 /status?value=OUT_OF_SERVICE
格式是 PUT方法(必须PUT别的不行)
http://eureka/apps/服务名(大小写都行)/[服务id]/status?value=OUT_OF_SERVICE
这样在eureka中服务会显示OUT_OF_SERVICE,新的请求就不会走这个服务了,如果想回滚只要这个服务没有删重新设置成UP就行了。
注意:如果里面运行着队列的话会继续执行的,并不会终止。

如何制作一个UI界面方便管理呢。
最早看贴子有说用postman的
然后想过做个html解析,处理下eureka页面。

现在的方案是,改写eureka的url
eureka.instance.status-page-url=http://处理页面/hoststatus?servicename=${spring.application.name}&clientid=${clientid}
这个配置是在每个服务里的。这样注册后,会在eureka中看到这个链接,不再是/info
这个页面里可以写个开关服务的按钮就行了。比较容易实现。

jmater,2毫秒间隔请求接口实测,0异常。

发表评论