在Eureka的后台管理中显示服务的IP
先来看看没有配置前的样子
这里没有显示IP,对于我们来说很是不方便,因为我们不知道是哪台机器,接下来就是显示IP和端口的设置了
eureka:
instance:
instance-id: ${spring.cloud.client.ip-address}:${server.port} #向注册中心中注册ip
完成后的样子:
Eureka的服务剔除问题
在服务注册到Eureka后,默认情况下,每隔30秒会发送一个心跳到Eureka,证明服务还活着,假如90秒还没收到心跳,Eureka会认为其已经宕机,然后Eureka中会有一个定时任务,每隔一段时间去清理一下已经被认为宕机的服务。
这样的设定是很合理的,但是在开发当中,我们需要测试,就希望时间越短越好,那么我们就需要设置一下这些时间
1.设置心跳间隔,以及续约时间
在服务提供者的yml中加上参数:
eureka:
instance:
lease-renewal-interval-in-seconds: 5 #心跳间隔
lease-expiration-duration-in-seconds: 10 #续约到期时间
设置好后可以自行测试,这里就不作展示了
2.Eureka剔除服务的时间间隔
在Eureka注册中心的yml中:
eureka:
server:
eviction-interval-timer-in-ms: 4000 #剔除服务的定时任务间隔,单位毫秒
Eureka的自我保护机制
其实Eureka不会单纯得因为90秒没有收到心跳就立马剔除这个服务,Eureka其实会有一个统计,统计所有服务中,有多少没有收到,假如一共100个服务,有85%,即85个都没有收到心跳,Eureka就会开启自我保护模式。
开启自我保护模式后,就不会去剔除服务了(在后台管理页面会出现一行红色的字体)
在开发得过程中,我们一般是不需要这种保护机制的,所以我们就可以关掉:
eureka:
server:
enable-self-preservation: false #关闭自我保护机制
自行测试