当前位置: 代码迷 >> 综合 >> 【入门教程】Eureka快速起步
  详细解决方案

【入门教程】Eureka快速起步

热度:96   发布时间:2023-12-14 20:13:42.0

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
//启动类