Eureka 是 Netflix 开发的,一个基于 REST 服务的,服务注册与发现的组件
它主要包括两个组件:Eureka Server 和 Eureka Client
Eureka Client:一个Java客户端,用于简化与 Eureka Server 的交互(通常就是微服务中的客户端和服务端)
Eureka Server:提供服务注册和发现的能力(通常就是微服务中的注册中心)
首先配置Eureka 服务器,创建一个spring项目
然后配置相关信息 application.yml
server:
port: 7001 #端口号
eureka:
instance:
hostname: localhost #eureka服务端实例名称
client:
register-with-eureka: false # false表示不向注册中心注册自己
fetch-registry: false # false表示自己就是注册中心 职责就是去维护服务的实力,不去检索服务
serviceUrl: #设置与Eureka 服务端交互的地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
最后需要在启动类上加上注解 @EnableEurekaServer 声明
然后我们创建一个Erueka客户端工程
然后在application.yml 中配置信息 并且在启动类上加上注解@EnableEurekaClient 让spring知道这是Eureka客户端
server:
port: 8001
spring:
application:
name: gmall-eureka-client #配置应用名字
eureka:
instance:
hostname: localhost #配置主机地址
client:
service-url: #设置与Eureka 服务端交互的地址
defaultZone: http://localhost:7001/eureka/
访问http://localhost:7001/eureka/ 显示如下既成功
Eureka的自我保护机制 :
当我们进行SpringCloud微服务开发的时候,有可能会出现如下的一些红色提示信息。这个是Eureka的自我保护机制。
Eureka的自我保护机制用最通俗的语言说就是:好死不如赖活着。
一句话:某时刻某一个微服不可用了,eureka不会立刻清理,依旧会对改微服的信息进行保存。
默认情况下,如果eureka server在一定时间内没有接收到每个微服务实例的心跳,eureka server将会注销该实例。
当网络分区故障发生时,微服务与eureka server之间无法正常通信,以上行为可能变得非常危险了,因为微服务本身其实是健康的,此时本不应该注销这个微服务。eureka通过“自我保护模式来解决这个问题”。
在自我保护模式中,eureka server会保护服务注册表中的信息,不再注销任何服务实例。当它收到的心跳数重新恢复到阀值以上时,该eureka server节点就会自动退出自我保护模式。
在application.yml 文件中可以加上这句话以禁用自我保护机制
eureka:
server:
enable-self-preservation: false