Eureka
[源码:](https://github.com/benwang6/spring-cloud-repo)
1/2:Server端
Eureka的四条运行机制:
- 注册
客户端会反复注册,直到注册成功 - 拉取
客户端30秒拉取一次注册表:注册信息的映射map - 心跳
30秒发一次心跳,3次收不到则删除注册信息 - 自我保护模式
15分钟内,85%服务器都异常。Eureka会认为是网络的错,进入自我保护。
保护注册信息不删除
依赖——>配置——>注解(被包含)——>启动
1/4:依赖 netflix-eureka-server
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>
2/4:配置
spring:application:name: eureka-serverprofiles:active: eureka1 #利用boot自动覆盖,来启动不同的配置。
eureka:server:enable-self-preservation: false#关闭自我保护:15分钟,挂85%则认为网络异常,保护注册信息不被删除。【开发时false】instance:hostname: eureka1 # 实例名,集群时用lease-expiration-duration-in-seconds: 90 #失去心跳后多久为不可用client:# 单台eureka时,两个false。集群时要互相注册,为trueregister-with-eureka: false #不向自身注册——单服务器时fetch-registry: false #不向自身拉取——单服务器时
集群配置覆盖
# application-eureka1.yml 利用boot提供的自动覆盖。
# 添加启动参数 --spring.profiles.active=eureka1 --server.port=2001
# 命令行启动方式:java -jar xxx.jar --spring.profiles.active=eureka1 --server.port=2001eureka:instance:hostname: eureka1client:register-with-eureka: true #profile的配置会覆盖公用配置fetch-registry: true #profile的配置会覆盖公用配置service-url: defaultZone: http://eureka2:2002/eureka #eureka1启动时向eureka2注册
3/4:注解
@EnableEurekaServer
//启动类
4/4:启动
修改hosts文件,添加域名映射
C:\Windows\System32\drivers\etc\hosts
127.0.0.1 eureka1
127.0.0.1 eureka2
2/2:Client端
默认情况下,客户端向Eureka注册时,名字会自动选网卡或主机名。
我们需要配置正确的网卡。为了服务ID的注册信息显示正确的IP
:依赖 netflix-eureka-client
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
:配置
eureka:client:service-url:defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka #向多个注册服务注册registry-fetch-interval-seconds: 30 #拉取注册表间隔,默认30instance:prefer-ip-address: true #注册服务名,避免用主机名,用IP地址。并配置下面的bootstrap.yml起步配置instance-id: ${
spring.cloud.client.ip-address}:${
spring.application.name}:${
server.port} #注册服务名,避免用主机名,用IP地址。lease-renewal-interval-in-seconds: 30 #心跳间隔,默认30
# bootstrap.yml中需配置,为了配置正确的网卡
# bootstrap.yml通常作为起步的配置,他的优先级比application高
spring:cloud:inetutils:ignored-interfaces: # 忽略的网卡- VM.* # 忽略VM虚拟机的网卡preferred-networks: # 要是用的网卡的网段- 172\.233\.5\..+ # 指定哪种IP是我们想要的
:启动
@EnableDiscoveryClient
//启动类