最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Eureka Server剔除已关闭的Eureka Client节点的方法(Ribbon轮询)

Javaweb 太平洋学习网 浏览 评论

在使用Spring Cloud Netflix的时候,我们将两台Eureka Client节点服务注册到Eureka Server服务器端的时候,会在Eureka服务器管理界面出现这两台Client客户端节点,为什么要注册两台Client节点到Eureka Server中呢?当然是为了服务的高可用了,如图所示是端口分别为8888与9999的两个客户端节点注册好之后的效果:

image.png

我们虽然将两个客户端节点注册到了Eureka Server中,即使我们的8888或者9999这两台服务中,有一台被关闭或因为网络故障无法访问,但是由于Eureka Server的自我保护机制,被关闭的一台服务仍然会显示在这个列表当中,无法被及时剔除,由于用户端使用了Ribbon的负载均衡访问(轮询访问),就会造成我们的网页或接口一会儿可以访问,一会儿又不能访问了,如图所示:

image.png

那么我们如何解决Eureka Server不踢出已关停的节点的问题呢?

办法就是当我们的一台如Eureka Client 2服务因其它原因不能访问的时候,我们可以将Eureka Server中一台不能访问的节点及时清理掉,也就是我们(第一张图)列表中就不会显示两个节点了,这样Ribbon在做轮询访问的时候,就不会轮询到被清理掉的Eureka Client 2这个节点上了。

我们只需要分别在Eureka Server服务器端与Eureka Client两个客户端中的application.properties文件中加入如下配置即可,Ribbon用户端不需要添加任何配置,代码如下所示:

Eureka Server端配置:
eureka.server.enable-self-preservation=false      //(设为false,关闭自我保护主要)
eureka.server.eviction-interval-timer-in-ms=5000  //清理间隔(单位毫秒,默认是60*1000)

Eureka Client端配置:
eureka.client.healthcheck.enabled=true   //开启健康检查(需要spring-boot-starter-actuator依赖)
eureka.instance.lease-renewal-interval-in-seconds=10   //租期更新时间间隔(默认30秒)
eureka.instance.lease-expiration-duration-in-seconds=30   //租期到期时间(默认90秒)

如果您的配置是application.yml形式的配置,则对应添加相同的代码即可:

Eureka Server端配置:
eureka:
    server:
        enableSelfPreservation: false
        evictionIntervalTimerInMs: 5000

                
Eureka Client端配置:
eureka:
    instance:
        leaseRenewalIntervalInSeconds: 10
        leaseExpirationDurationInSeconds: 30

当我们的Eureka服务器端与客户端加入上述配置之后,我们的Eureka Server会每5秒钟清理一次服务列表,但是这样还不够,要在Eureka Client客户端再加入健康检查配置,这样才会真正的剔除已关闭的节点,如果客户端不添加配置,则起不到任何作用

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/2019/0126/888.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论