Spring Cloud Eureka 之服務資訊
阿新 • • 發佈:2020-12-15
技術標籤:SpringCloudEurekaspringeurekaspring bootspring cloudappname
SpringBoot提供了Eureka服務自動註冊機制,只需要引入 spring-cloud-starter-netflix-eureka-client 依賴並進行簡單的配置即可。
本文旨在揭示spring配置和服務註冊資訊的關聯性。
服務註冊資訊的關鍵項:
- appname:服務名稱,消費者通過此名稱從註冊中心獲取服務訪問地址
- hostname:服務所在主機名
- ipAddress:服務所在ip地址
- instanceId:服務唯一id
在spring中相關的配置為:“spring.application.name”、“eureka.instance.appname”、“eureka.instance.hostname” 。
服務註冊資訊生成策略
hostname
預設為主機名
;若配置了eureka.instance.hostname
屬性,則為該屬性值。
優先順序:eureka.instance.hostname
>主機名
appname
預設是unknown
;若配置了spring.application.name
屬性,則為該屬性值; 若配置了eureka.instance.appname
屬性,則為該屬性值。
優先順序:eureka.instance.appname
>spring.application.name
>unknown
instanceId
預設為主機名:server.port
spring.application.name
屬性,則為主機名:spring.application.name:server.port
如下示例配置,並展示eureka視覺化頁面上的對應資訊。
server:
port: 8080
spring:
application:
name: api-gateway
eureka:
instance:
hostname: my-hostname
appname: my-appname
client:
service-url:
defaultZone: http://localhost: 8761/eureka/
Eureka的資訊:
http://localhost:8761
http://localhost:8761/eureka/apps
appname對應頁面上Application;
instanceId對應頁面上的Status
另:
Spring Cloud Gateway 的路由機制:會優先使用服務的hostname去訪問服務。可通過配置 eureka.instance.preferIpAddress=true
讓其使用ipAddress去訪問服務。
eureka服務資訊配置Bean:
org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration#eurekaInstanceConfigBean