首先是入門時的配置:
server:
port: 8000
eureka:
instance:
hostname: localhost # 主機名
client:
service-url:
defaultZone: http://localhost:8761/eureka # eureka服務端地址,將來客戶端使用該地址和eureka進行通信
spring:
application:
name: eureka-provider # 設置當前應用的名稱。將來會在eureka中Application顯示。將來需要使用該名稱來獲取路徑
這里時provider的配置 ,之前在Consumei的Controller里 輸出了兩個東西
結果是
當我們在配置里加了一行
prefer-ip-address: true
server:
port: 8000
eureka:
instance:
hostname: localhost # 主機名
prefer-ip-address: true #將當前實例的ip注冊到Eureka Server里 默認是falser 也即是主機名
client:
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: eureka-provider
然后可以看到輸出就變了
當我們在配置里加了一行 也就是說我們向Eureka里注冊的就不是上面那個地址 就變成下面這個地址了
ip-address: 127.0.0.1
然后輸出就變成

再加一行配置
instance-id: ${eureka.instance.ip-address}:${spring.application.name}:${server.port} #3部分:ip:應用名稱: 端口 設置實例的ip web控制台顯示的id
配置了之后
二:Eureka Server 相關屬性
在Instance屬性里 有兩個屬性
自我保護機制:每隔30發送,然后得到回應,90秒內還沒得到回應,就剔除,如果開啟了自我保護機制,則不會剔除
清理間隔:每隔60秒掃描一次,有問題就會剔除掉
簡單說就是 我期望一分鍾有10次心跳包發送,實際上一分鍾才4此;當上面的值比下面的大,就會開啟自我保護機制。
實際續約值=開啟的服務數量*2(30秒一次,一分鍾兩次,多少秒一次是可以通過我們設置的發送心跳間隔來改變的);
期望續約值=(n(也就是他認為當前有幾個服務)+1 )*2*0.85 去掉小數 就得到了
因為自我保護機制默認是開啟的,但是開發中我們希望把停掉的業務給剔除掉,所有給他設置為false,當Eureka Server這兩個server屬性開啟后,Eureka Client 的服務就要 設置心跳發送間隔和清理間隔的時長
當關掉了自我保護機制后 就變成如下
下面進行演示
在Eureka Server 加上對應配置
server:
port: 8761
# eureka 配置
# eureka 一共有4部分 配置
# 1. dashboard:eureka的web控制台配置
# 2. server:eureka的服務端配置
# 3. client:eureka的客戶端配置
# 4. instance:eureka的實例配置
eureka:
instance:
hostname: localhost # 主機名
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka # eureka服務端地址,將來客戶端使用該地址和eureka進行通信
register-with-eureka: false # 是否將自己的路徑 注冊到eureka上。eureka server 不需要的,eureka provider client 需要
fetch-registry: false # 是否需要從eureka中抓取路徑。eureka server 不需要的,eureka consumer client 需要
server:
enable-self-preservation: false #關閉自我保護機制
eviction-interval-timer-in-ms: 3000 #檢查服務的時間間隔
在Eureka Client 加上對應配置
server:
port: 8000
eureka:
instance:
hostname: localhost # 主機名
prefer-ip-address: true #將當前實例的ip注冊到Eu熱卡Server里
ip-address: 127.0.0.1 #設置當前實例的ip
instance-id: ${eureka.instance.ip-address}:${spring.application.name}:${server.port} #3部分:ip:應用名稱: 端口 設置實例的ip web控制台顯示的id
lease-expiration-duration-in-seconds: 3 #每隔3秒一次發送心跳包
lease-renewal-interval-in-seconds: 9 #如果9秒沒發 就剔除服務
client:
service-url:
defaultZone: http://localhost:8761/eureka # eureka服務端地址,將來客戶端使用該地址和eureka進行通信
spring:
application:
name: eureka-provider # 設置當前應用的名稱。將來會在eureka中Application顯示。將來需要使用該名稱來獲取路徑
啟動演示效果
當我們把server client服務停掉后 9秒后就會剔除服務