1、简介
https://github.com/Netflix/eureka/wiki
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务注册和发现功能。 Eureka包含两个组件:Eureka Server和Eureka Client。
2、server 相关配置
2.1 pom.xml 文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.morrow</groupId><artifactId>springcloud-eureka-6101</artifactId><version>0.0.1-SNAPSHOT</version><name>springcloud-eureka-6101</name><description>springcloud-eureka-6101 project for Spring Boot</description><properties><java.version>11</java.version><spring-cloud.version>Hoxton.SR6</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--引入 eureka server--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies><!--全局管理springcloud版本,并不会引入具体依赖--><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
2.2 yaml文件配置
server:port: 6101eureka:client:service-url:defaultZone: http://localhost:6101/eureka #指定服务注册中心的地址fetch-registry: false #关闭作为客户端时从eureka server获取服务信息register-with-eureka: false #不再将自己同时作为客户端进行注册spring:application:name: eureka-server
2.3 开启@EnableEurekaServer注解
@SpringBootApplication@EnableEurekaServerpublic class SpringcloudEureka6101Application {public static void main(String[] args) {SpringApplication.run(SpringcloudEureka6101Application.class, args);}}
2.4 访问地址
3、client 相关配置
3.1 pom.xml 文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.5.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.morrow</groupId><artifactId>springcloud-eureka-client-6102</artifactId><version>0.0.1-SNAPSHOT</version><name>springcloud-eureka-client-6102</name><description>springcloud-eureka-client-6102 project for Spring Boot</description><properties><java.version>11</java.version><spring-cloud.version>Hoxton.SR6</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--引入 eureka server--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency></dependencies><!--全局管理springcloud版本,并不会引入具体依赖--><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
3.2 yaml文件配置
server:port: 6102eureka:client:service-url:defaultZone: http://localhost:6101/eureka #指定服务注册中心的地址spring:application:name: eureka-client
3.3 开启@EnableEurekaServer注解
@SpringBootApplication@EnableEurekaClientpublic class SpringcloudEurekaClient6102Application {public static void main(String[] args) {SpringApplication.run(SpringcloudEurekaClient6102Application.class, args);}}

自我保护机制
- 官网地址: https://github.com/Netflix/eureka/wiki/Server-Self-Preservation-Mode
- 默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。Eureka Server在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期。这种设计的哲学原理就是”宁可信其有不可信其无!”。自我保护模式正是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。
官方并不建议在生产情况下关闭
4、Eureka 停止更新
- https://github.com/Netflix/eureka/wiki
- 在1.x版本项目还是活跃的,但是在2.x版本中停止维护,出现问题后果自负!!!

5、示例代码
springcloud-eureka-server-6101 springcloud-eureka-client-6102
