spring boot + Eureka如何平滑上下线服务

spring boot + Eureka如何平滑上下线服务

目录

“ 系统正常运行,如果要新发版程序,如何保证程序平滑上线,不影响前端的请求?使用Eureka作为注册中心时,会有哪些地方会导致新服务上下线延迟?如何优化并解决服务的正常上下线?”

技术版本信息:

spring-boot-starter-parent-2.2.4-RELEASE
spring-boot-starter-web-2.2.4-RELEASE
spring-boot-starter-undertow-2.2.4-RELEASE
spring-cloud-starter-netflix-eureka-server-2.2.1.RELEASE
spring-cloud-starter-netflix-eureka-client-2.2.1.RELEASE
spring-boot-starter-openfeign-2.2.1-RELEASE
spring-cloud.version-Hoxton.SR1

服务平滑上下线-单机版

场景描述:
对于传统的单机JAVA WEB程序部署新的服务,就是停止当前的服务,然后部署新的服务,这样的操作会导致一个问题,就是在旧服务下线前,新服务上线前的这段时间,服务是不可用的,而且在服务下线前,如果当前还有请求没有执行完毕,也有可能会被异常中止。

可能有些同学会想到,部署多个服务在一个SLB下,暴露SLB供前端调用,这样后端就可以部署好了新的服务之后,然后在停掉旧的服务。这个解决办法,的确可以保证服务的上下线之间的时差为0,但是这个办法还不能解决当前旧服务还有部分请求没有执行完毕,就被中止的问题。
对于上述问题,还有些聪明的同学会思考到,是不是可以监控容器中是否还有请求的方式,保证容器中所有请求都执行完毕之后,在执行服务停止呢?
答案,当然是可以的。那具体如何操作呢?接下来就以undewtow容器作为例子给大家演示一下监听方法。

解决方案:

1、引入undertow容器pom文件,这里需要去掉web自带的tomcat容器

<!-- 移除掉默认支持的 Tomcat -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.2.4.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    
    <!-- 添加 undertow --
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值