Eureka使用记录

知识点1,自我保护模式

保护模式主要在一组客户端和 Eureka Server 之间存在网络分区场景时使用。一旦进入保护模式,Eureka Server 将会尝试保护其服务的注册表中的信息,不再删除服务注册表中的数据。当网络故障恢复后,该 Eureka Server 节点会自动退出保护模式。

eureka.server.enableSelfPreservation=false

知识点2,Eureka应用实例ID名称格式

客户端在注册时,服务的 Instance ID 的默认值的格式如下(主机名:服务名称:服务端口):

${spring.cloud.client.hostname}:${spring.application.name}:${spring.application. instance_id:${server.port}}

若需要自定义格式:服务名称:服务所在 IP:服务端口

eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}

在这里插入图片描述

此时上述链接却还是主机名,增加配置,展示为ip

eureka.instance.preferIpAddress=true

在这里插入图片描述

自定义跳转链接

eureka.instance.status-page-url-path=/hello

在这里插入图片描述

知识点3,Eureka开发时快速移除失效服务

在实际开发过程中,我们可能会不停地重启服务,由于 Eureka 有自己的保护机制,故节点下线后,服务信息还会一直存在于 Eureka 中。我们可以通过增加一些配置让移除的速度更快一点,当然只在开发环境下使用,生产环境下不推荐使用。

首先在我们的 eureka-server 中增加两个配置,分别是关闭自我保护和清理间隔:

eureka.server.enable-self-preservation=false
# 默认 60000 毫秒
eureka.server.eviction-interval-timer-in-ms=5000

然后在具体的客户端服务中配置下面的内容:

eureka.client.healthcheck.enabled=true
# 默认 30 秒
eureka.instance.lease-renewal-interval-in-seconds=5
# 默认 90 秒
eureka.instance.lease-expiration-duration-in-seconds=5

eureka.client.healthcheck.enabled 用于开启健康检查,需要在 pom.xml 中引入 actuator 的依赖,代码如下所示。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

其中:

  • eureka.instance.lease-renewal-interval-in-seconds 表示 Eureka Client 发送心跳给 server 端的频率。
  • eureka.instance.lease-expiration-duration-in-seconds 表示 Eureka Server 至上一次收到 client 的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则移除该 Instance。

更多的 Instance 配置信息可参考源码中的配置类:org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean

更多的 Server 配置信息可参考源码中的配置类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean

知识点4,EurekaClient 使用

以下两种方式

  • com.netflix.discovery.EurekaClient
	@GetMapping("/test")
	public Object serviceUrl() {
		return eurekaClient.getInstancesByVipAddress("eureka-provider-app", false);
	}
  • Spring Cloud 重新封,org.springframework.cloud.client.discovery.DiscoveryClient
	@GetMapping("/test2")
	public Object serviceUrl2() {
	    return discoveryClient.getInstances("eureka-provider-app");
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值