1. 程式人生 > 其它 >Spring Cloud Eureka 之服務資訊

Spring Cloud Eureka 之服務資訊

技術標籤: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