Eureka介绍
- Eureka是SpringCloud Netflix的组件之一
- Eureka包含两个组件:Eureka Server与Eureka Client
- Eureka Server有一个UI界面可以看到注册服务的信息
- Eureka Client会定时的向Eureka Server发送心跳告诉Server端我还在(默认30秒)
- Eureka Server端在90秒内没有接收到某个服务的心跳会把它从注册中心中移除
使用步骤
- 引入依赖
<properties>
<java.version>1.8</java.version>
<!--SpringCloud版本声明-->
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
</properties>
<!--按需引入! Eureka Server端的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--按需引入! Eureka Client端的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--引入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>
- 添加配置
#服务端配置
server:
port: 7001
eureka:
instance:
hostname: eurekaxxx #Eureka Server的实例名称
prefer-ip-address: true
client:
#false表示不注册自己
register-with-eureka: false
#指示此客户端是否应从eureka获取信息
fetch-registry: false
service-url:
#设置服务URL
defaultZone: http://localhost:7001/eureka/
#客户端配置
server:
port: 8001
spring:
application:
name: springcloud-payment-service
eureka:
instance:
#这两个是为了在UI界面显示时名字以及地址比较方便不配也可以
prefer-ip-address: true
instance-id: xxx
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka/
- 启动类添加注解
服务端:@EnableEurekaServer
客户端:@EnableEurekaClient(只适用于Eureka)或@EnableDiscoveryClient(可以适用于其他注册中心)
Eureka集群搭建
因为是一台机器部署两节点的集群为了效果明显所以先配置一下域名映射
- 配置本地域名解析
#修改这个文件添加以下内容 C:\Windows\System32\drivers\etc\hosts
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
127.0.0.1 eureka7003.com
- 修改配置
#这个配置项的值改为集群中其他节点的地址如果有多个则用逗号分隔,例子如下:
defaultZone: http://eureka7002.com:7002/eureka/
Client端连接集群
#值为集群中所有节点的地址
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
自我保护机制
什么是自我保护机制
一旦出现网络分区(短时间内server端失去大量的client心跳)会让server端进入自我保护机制,一旦进入自我保护机制那么server端并不会剔除那些没有给心跳的服务,默认是开启自我保护机制的
如何禁止自我保护机制
eureka:
server:
#是否开启自我保护机制
enable-self-preservation: false
#2秒没发心跳就剔除
eviction-interval-timer-in-ms: 2000