eureka配置与使用
eureka:服务注册和发现,为消费者提供服务。
一、依赖
<!--eureka注册中心依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--eureka客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>二、eureka 注册中心配置
springboot 启动类增加 eureka 注解 @EnableEurekaServer,配置文件增加:
eureka:
instance:
hostname: localhost
client:
#声明自己是个服务端
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/集群配置文件:
spring:
application:
name: eureka-server
eureka:
client:
serviceUrl:
defaultZone: http://eurekaServer1:10101/eureka/,http://eurekaServer2:10102/eureka/
# 此应用为注册中心,false:不向注册中心注册自己,否则启动会报错
register-with-eureka: false
# 注册中心职责是维护服务实例,false:不检索服务。
fetch-registry: false
---
server:
port: 10101
spring:
profiles: eurekaServer1
eureka:
instance:
hostname: eurekaServer1
---
server:
port: 10102
spring:
profiles: eurekaServer2
eureka:
instance:
hostname: eurekaServer2三、eureka 客户端配置
需要在配置文件增加 eureka 服务的注册,将服务注册到注册中心里供消费。
#指定注册中心地址
eureka:
client:
serviceUrl:
#注册中心地址
defaultZone: http://localhost:10100/eureka/
#服务的名称
spring:
application:
name: product-service四、服务注册中心注解 @EnableDiscoveryClient 和 @EnableEurekaClient
从 Spring Cloud Edgware 开始,@EnableDiscoveryClient 或 @EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置即可将微服务注册到服务发现组件上。
- 共同点:都是能够让注册中心能够发现、扫描到该服务。
- 不同点:
@EnableEurekaClient只适用于 Eureka 作为注册中心;@EnableDiscoveryClient可以是其他注册中心。
五、常见问题
5.1 自我保护
Eureka 管理后台出现红色字体警告:
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
说明:服务端进入自我保护模式,通常是短时间内丢失过多客户端心跳时触发,认为是网络问题而不是服务下线。
关闭检查方法:eureka 服务端配置文件加入:
eureka:
server:
enable-self-preservation: false注意:生产环境自我保护模式禁止关闭(默认开启 true),关闭后心跳失败的实例会被立即剔除,在网络抖动时会造成服务大面积不可用。
