Spring Cloud Netflix 功能
服務發現:Eureka 客戶端
服務發現是微服務架構的關鍵原則之一。嘗試手動配置每個客戶端或採用某種約定可能很困難且脆弱。Eureka 是 Netflix 的服務發現伺服器和客戶端。伺服器可以配置和部署為高可用,每個伺服器將其註冊服務的狀態複製給其他伺服器。
如何包含 Eureka 客戶端
要在您的專案中包含 Eureka 客戶端,請使用 group ID 為 org.springframework.cloud
、artifact ID 為 spring-cloud-starter-netflix-eureka-client
的啟動器。有關如何使用當前 Spring Cloud Release Train 設定您的構建系統,請參閱Spring Cloud 專案頁面。
向 Eureka 註冊
當客戶端向 Eureka 註冊時,它會提供自身的元資料,例如主機、埠、健康指示器 URL、主頁以及其他詳細資訊。Eureka 接收來自屬於服務的每個例項的心跳訊息。如果在可配置的時間表內心跳失敗,則該例項通常會從註冊中心移除。
以下示例展示了一個最小的 Eureka 客戶端應用
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello world";
}
public static void main(String[] args) {
SpringApplication.run(CustomerServiceTestApplication.class, args);
}
}
請注意,前面的示例展示了一個普通的Spring Boot 應用。透過在 classpath 中包含 spring-cloud-starter-netflix-eureka-client
,您的應用會自動向 Eureka Server 註冊。需要進行配置以定位 Eureka 伺服器,如下例所示
eureka: client: serviceUrl: defaultZone: https://:8761/eureka/
在前面的示例中,defaultZone
是一個神奇的字串後備值,它為任何未表達偏好的客戶端提供服務 URL(換句話說,它是一個有用的預設值)。
defaultZone 屬性區分大小寫並需要使用駝峰命名法,因為 serviceUrl 屬性是一個 Map<String, String> 。因此,defaultZone 屬性不遵循 Spring Boot 蛇形命名法(即 default-zone )的常規約定。 |
預設的應用名稱(即服務 ID)、虛擬主機和非安全埠(取自 Environment
)分別是 ${spring.application.name}
、${spring.application.name}
和 ${server.port}
。
在 classpath 中包含 spring-cloud-starter-netflix-eureka-client
會使應用既成為一個 Eureka“例項”(即它註冊自己),又成為一個“客戶端”(它可以查詢註冊中心來定位其他服務)。例項行為由 eureka.instance.*
配置鍵驅動,但如果您確保應用有 spring.application.name
的值(這是 Eureka 服務 ID 或 VIP 的預設值),則預設設定即可。
有關可配置選項的更多詳細資訊,請參閱 EurekaInstanceConfigBean 和 EurekaClientConfigBean。
要停用 Eureka Discovery Client,可以將 eureka.client.enabled
設定為 false
。當 spring.cloud.discovery.enabled
設定為 false
時,Eureka Discovery Client 也將被停用。
目前不支援將 Spring Cloud Netflix Eureka 伺服器版本指定為路徑引數。這意味著您無法在上下文路徑 (eurekaServerURLContext ) 中設定版本。相反,您可以將版本包含在伺服器 URL 中(例如,您可以設定 defaultZone: localhost:8761/eureka/v2 )。 |
向 Eureka Server 進行認證
如果 eureka.client.serviceUrl.defaultZone
的某個 URL 中嵌入了憑據(curl 風格,如下所示:user:password@localhost:8761/eureka
),則會自動為您的 Eureka 客戶端新增 HTTP Basic 認證。對於更復雜的需求,您可以建立型別為 DiscoveryClientOptionalArgs
的 @Bean
,並將 ClientFilter
例項注入其中,所有這些都將應用於從客戶端到伺服器的呼叫。
當 Eureka server 需要客戶端證書進行認證時,可以透過屬性配置客戶端證書和信任庫,如下例所示
eureka:
client:
tls:
enabled: true
key-store: <path-of-key-store>
key-store-type: PKCS12
key-store-password: <key-store-password>
key-password: <key-password>
trust-store: <path-of-trust-store>
trust-store-type: PKCS12
trust-store-password: <trust-store-password>
eureka.client.tls.enabled
需要設定為 true 以啟用 Eureka 客戶端 TLS。當省略 eureka.client.tls.trust-store
時,將使用 JVM 預設信任庫。eureka.client.tls.key-store-type
和 eureka.client.tls.trust-store-type
的預設值是 PKCS12。當省略密碼屬性時,假定密碼為空。
由於 Eureka 的限制,無法支援每個伺服器的 Basic Auth 憑據,因此僅使用找到的第一組憑據。 |
如果您想自定義 Eureka HTTP 客戶端使用的 RestTemplate,您可以考慮建立 EurekaClientHttpRequestFactorySupplier
型別的 bean,並提供自己的邏輯來生成 ClientHttpRequestFactory
例項。
Eureka HTTP 客戶端使用的 RestTemplate 和 RestClient 的所有預設超時相關屬性都設定為 3 分鐘(與 Apache HC5 預設的 RequestConfig
和 SocketConfig
保持一致)。因此,要指定超時值,您必須直接透過 eureka.client.rest-template-timeout
或 eureka.client.restclient.timeout
中的屬性來指定。所有超時屬性都以毫秒為單位。
eureka:
client:
restclient:
timeout:
connect-timeout: 5000
connect-request-timeout: 8000
socket-timeout: 10000
rest-template-timeout:
connect-timeout: 5000
connect-request-timeout: 8000
socket-timeout: 10000
您還可以透過建立型別為 EurekaClientHttpRequestFactorySupplier.RequestConfigCustomizer
的 bean 來定製底層 Apache HttpClient 5 的 RequestConfig
@Configuration
public class RestClientConfiguration {
@Bean
EurekaClientHttpRequestFactorySupplier.RequestConfigCustomizer requestConfigCustomizer() {
return builder -> builder.setProtocolUpgradeEnabled(false);
}
}
狀態頁和健康指示器
Eureka 例項的狀態頁和健康指示器分別預設為 /info
和 /health
,這是 Spring Boot Actuator 應用中有用端點的預設位置。即使是 Actuator 應用,如果您使用非預設的上下文路徑或 servlet 路徑(例如 server.servletPath=/custom
),您也需要更改這些設定。以下示例顯示了這兩個設定的預設值
eureka: instance: statusPageUrlPath: ${server.servletPath}/info healthCheckUrlPath: ${server.servletPath}/health
這些連結出現在客戶端使用的元資料中,並在某些場景中用於決定是否向您的應用傳送請求,因此它們準確非常有用。
在 Dalston 版本中,更改管理上下文路徑時還需要設定狀態和健康檢查 URL。從 Edgware 版本開始取消了此要求。 |
註冊安全應用
如果您的應用希望透過 HTTPS 聯絡,您可以在 EurekaInstanceConfigBean
中設定兩個標誌:
-
eureka.instance.[nonSecurePortEnabled]=[false]
-
eureka.instance.[securePortEnabled]=[true]
這樣做會使 Eureka 釋出例項資訊,表明明確偏好安全通訊。對於這樣配置的服務,Spring Cloud DiscoveryClient
總是返回以 https
開頭的 URI。類似地,當服務這樣配置時,Eureka(原生)例項資訊具有一個安全的健康檢查 URL。
由於 Eureka 的內部工作方式,除非您也明確覆蓋,否則它仍然會為狀態頁和主頁釋出非安全 URL。您可以使用佔位符配置 eureka 例項 URL,如下例所示
eureka: instance: statusPageUrl: https://${eureka.hostname}/info healthCheckUrl: https://${eureka.hostname}/health homePageUrl: https://${eureka.hostname}/
(請注意,${eureka.hostname}
是一個原生佔位符,僅在較新版本的 Eureka 中可用。您也可以使用 Spring 佔位符實現同樣的功能,例如使用 ${eureka.instance.hostName}
。)
如果您的應用執行在代理後面,並且 SSL 終止發生在代理處(例如,如果您在 Cloud Foundry 或其他平臺即服務中執行),那麼您需要確保代理的“轉發”頭資訊被應用攔截和處理。如果 Spring Boot 應用中嵌入的 Tomcat 容器對 'X-Forwarded-\*` 頭資訊有明確配置,則這會自動發生。您的應用渲染的指向自身的連結錯誤(主機、埠或協議錯誤)是此配置有問題的跡象。 |
Eureka 的健康檢查
預設情況下,Eureka 使用客戶端心跳來判斷客戶端是否處於 UP 狀態。除非另有指定,否則 Discovery Client 不會根據 Spring Boot Actuator 傳播應用的當前健康檢查狀態。因此,成功註冊後,Eureka 總是宣佈應用處於 'UP' 狀態。透過啟用 Eureka 健康檢查可以改變此行為,這將導致應用狀態傳播到 Eureka。因此,其他應用不會向處於 'UP' 以外狀態的應用傳送流量。以下示例顯示如何為客戶端啟用健康檢查
eureka: client: healthcheck: enabled: true
eureka.client.healthcheck.enabled=true 僅應在 application.yml 中設定。在 bootstrap.yml 中設定此值會導致不良副作用,例如以 UNKNOWN 狀態在 Eureka 中註冊。 |
如果您需要更精細地控制健康檢查,請考慮實現您自己的 com.netflix.appinfo.HealthCheckHandler
。
Eureka 例項和客戶端的元資料
花點時間瞭解 Eureka 元資料的工作原理是值得的,這樣您才能在您的平臺中以有意義的方式使用它。有一些標準元資料,例如主機名、IP 地址、埠號、狀態頁和健康檢查。這些資訊釋出在服務註冊中心,並被客戶端用於以直接的方式聯絡服務。可以透過 eureka.instance.metadataMap
新增額外的元資料到例項註冊中,並且這些元資料在遠端客戶端中是可訪問的。通常,額外的元資料不會改變客戶端的行為,除非客戶端知曉該元資料的含義。本文件後面描述了幾個特殊情況,其中 Spring Cloud 已經為元資料對映賦予了含義。
在 Cloud Foundry 上使用 Eureka
Cloud Foundry 有一個全域性路由器,因此同一應用的所有例項都具有相同的主機名(具有類似架構的其他 PaaS 解決方案也有相同的安排)。這不一定妨礙使用 Eureka。但是,如果您使用路由器(推薦,甚至可能是強制的,取決於您的平臺設定方式),您需要顯式設定主機名和埠號(安全或非安全),以便它們使用路由器。您可能還希望使用例項元資料來區分客戶端上的例項(例如,在自定義負載均衡器中)。預設情況下,eureka.instance.instanceId
的值是 vcap.application.instance_id
,如下例所示
eureka: instance: hostname: ${vcap.application.uris[0]} nonSecurePort: 80
取決於您的 Cloud Foundry 例項中安全規則的設定方式,您可能能夠註冊並使用主機 VM 的 IP 地址進行直接的服務間呼叫。此功能尚未在 Pivotal Web Services (PWS) 上提供。
在 AWS 上使用 Eureka
如果應用計劃部署到 AWS 雲環境,則必須將 Eureka 例項配置為感知 AWS。您可以透過自定義 EurekaInstanceConfigBean 來實現,如下所示
@Bean
@Profile("!default")
public EurekaInstanceConfigBean eurekaInstanceConfig(InetUtils inetUtils) {
EurekaInstanceConfigBean bean = new EurekaInstanceConfigBean(inetUtils);
AmazonInfo info = AmazonInfo.Builder.newBuilder().autoBuild("eureka");
bean.setDataCenterInfo(info);
return bean;
}
更改 Eureka 例項 ID
一個原生的 Netflix Eureka 例項註冊時使用與其主機名相等的 ID(即,每個主機只有一個服務)。Spring Cloud Eureka 提供了一個合理的預設值,定義如下
${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}}
例如:myhost:myappname:8080
。
透過使用 Spring Cloud,您可以透過在 eureka.instance.instanceId
中提供一個唯一識別符號來覆蓋此值,如下例所示
eureka: instance: instanceId: ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
結合前面的示例中顯示的元資料,以及在 localhost 上部署的多個服務例項,可以將隨機值插入其中以使例項唯一。在 Cloud Foundry 中,vcap.application.instance_id
會在 Spring Boot 應用中自動填充,因此不需要隨機值。
使用 EurekaClient
一旦您擁有一個作為發現客戶端的應用,您就可以使用它從 Eureka Server 發現服務例項。一種方法是使用原生的 com.netflix.discovery.EurekaClient
(與 Spring Cloud 的 DiscoveryClient
不同),如下例所示
@Autowired private EurekaClient discoveryClient; public String serviceUrl() { InstanceInfo instance = discoveryClient.getNextServerFromEureka("STORES", false); return instance.getHomePageUrl(); }
請勿在 |
底層 HTTP 客戶端
EurekaClient
內部使用 RestClient
、RestTemplate
、WebClient
或 JerseyClient
。為了使用 EurekaClient
,您的 classpath 中需要包含其中一個受支援的 HTTP 客戶端。
要使用 RestTemplate
或 RestClient
,請將 spring-boot-starter-web
新增到您的依賴項中。要使用 WebClient
,請將 spring-boot-starter-webflux
新增到您的依賴項中。如果 spring-boot-starter-web
和 spring-boot-starter-webflux
都包含在依賴項中並且 eureka.client.webclient.enabled
標誌設定為 true
,則將使用 WebClient
。如果不是這種情況並且 eureka.client.restclient.enabled
設定為 true
,則將使用 RestClient
。否則,將使用 RestTemplate
。
對於這些客戶端實現的任何一種,如果存在可用的 builder bean,則將使用它來建立底層客戶端。 |
我們計劃在下一個主要版本中將預設客戶端更改為 RestClient 。 |
如果您希望改用 Jersey,您需要將 Jersey 依賴項新增到您的 classpath 中。以下示例顯示了您需要新增的依賴項
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client4</artifactId>
</dependency>
</dependencies>
如果您的 classpath 中包含 JerseyClient
但不想在 EuerekaClient
中使用它,請確保將 eureka.client.jersey.enabled
設定為 false
。
原生 Netflix EurekaClient 的替代方案
您不必使用原始的 Netflix EurekaClient
。此外,通常更方便使用某種包裝器來使用它。Spring Cloud 透過邏輯的 Eureka 服務識別符號(VIP)而不是物理 URL 來支援 Feign(一個 REST 客戶端 builder)和 Spring Cloud LoadBalancer。
您還可以使用 org.springframework.cloud.client.discovery.DiscoveryClient
,它為發現客戶端提供了一個簡單的 API(非 Netflix 特有的),如下例所示
@Autowired private DiscoveryClient discoveryClient; public String serviceUrl() { List<ServiceInstance> list = discoveryClient.getInstances("STORES"); if (list != null && list.size() > 0 ) { return list.get(0).getUri(); } return null; }
為何服務註冊如此慢?
作為例項還需要定期向註冊中心傳送心跳(透過客戶端的 serviceUrl
),預設間隔為 30 秒。直到例項、伺服器和客戶端在其本地快取中都具有相同的元資料後,服務才能被客戶端發現(因此可能需要 3 次心跳)。您可以透過設定 eureka.instance.leaseRenewalIntervalInSeconds
來改變週期。將其設定為小於 30 的值可以加快客戶端連線到其他服務的速度。在生產環境中,由於伺服器內部計算對續約週期的假設,最好還是堅持使用預設值。
區域(Zones)
如果您已將 Eureka 客戶端部署到多個區域(zones),您可能希望這些客戶端優先使用同一區域內的服務,然後再嘗試其他區域的服務。要進行此設定,您需要正確配置您的 Eureka 客戶端。
首先,您需要確保已將 Eureka 伺服器部署到每個區域,並且它們相互之間是對等節點。有關更多資訊,請參閱關於區域和地域(zones and regions)的部分。
接下來,您需要告訴 Eureka 您的服務位於哪個區域。您可以使用 metadataMap
屬性來實現。例如,如果 service 1
同時部署在 zone 1
和 zone 2
中,您需要在 service 1
中設定以下 Eureka 屬性:
Zone 1 中的 Service 1
eureka.instance.metadataMap.zone = zone1
eureka.client.preferSameZoneEureka = true
Zone 2 中的 Service 1
eureka.instance.metadataMap.zone = zone2
eureka.client.preferSameZoneEureka = true
重新整理 Eureka 客戶端
預設情況下,EurekaClient
bean 是可重新整理的,這意味著可以更改和重新整理 Eureka 客戶端屬性。當發生重新整理時,客戶端將從 Eureka server 取消註冊,並且可能存在給定服務的所有例項短暫不可用的情況。避免這種情況發生的一種方法是停用重新整理 Eureka 客戶端的能力。為此,請設定 eureka.client.refresh.enable=false
。
將 Eureka 與 Spring Cloud LoadBalancer 配合使用
我們支援 Spring Cloud LoadBalancer 的 ZonePreferenceServiceInstanceListSupplier
。Eureka 例項元資料(eureka.instance.metadataMap.zone
)中的 zone
值用於設定 spring-cloud-loadbalancer-zone
屬性的值,該屬性用於按區域過濾服務例項。
如果缺少該值,並且 spring.cloud.loadbalancer.eureka.approximateZoneFromHostname
標誌設定為 true
,則可以使用伺服器主機名中的域名作為區域的代理。
如果沒有其他區域資料來源,則會根據客戶端配置(而不是例項配置)進行猜測。我們獲取 eureka.client.availabilityZones
,這是一個從地域名稱到區域列表的對映,並取出例項自身地域(即 eureka.client.region
,預設為 "us-east-1",以相容原生 Netflix)的第一個區域。
服務發現:Eureka 伺服器
本節介紹如何設定 Eureka 伺服器。
如何包含 Eureka Server
要在您的專案中包含 Eureka Server,請使用 group ID 為 org.springframework.cloud
、artifact ID 為 spring-cloud-starter-netflix-eureka-server
的啟動器。有關如何使用當前 Spring Cloud Release Train 設定您的構建系統,請參閱Spring Cloud 專案頁面。
如果您的專案已經使用 Thymeleaf 作為其模板引擎,則 Eureka 伺服器的 Freemarker 模板可能無法正確載入。在這種情況下,需要手動配置模板載入器 |
spring: freemarker: template-loader-path: classpath:/templates/ prefer-file-system-access: false
如何執行 Eureka 伺服器
以下示例展示了一個最小的 Eureka 伺服器
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(CustomerServiceTestApplication.class, args);
}
}
該伺服器有一個帶 UI 的主頁,並在 /eureka/*
下提供了用於普通 Eureka 功能的 HTTP API 端點。
以下連結提供了一些 Eureka 背景閱讀材料:flux capacitor 和 Google 群組討論。
由於 Gradle 的依賴解析規則以及缺少 parent bom 功能,依賴於 build.gradle
|
defaultOpenForTrafficCount
及其對 EurekaServer 預熱時間的影響
Netflix Eureka 的 waitTimeInMsWhenSyncEmpty
設定在 Spring Cloud Eureka server 啟動初期並未被考慮。為了啟用預熱時間,請設定 eureka.server.defaultOpenForTrafficCount=0
。
高可用性、區域和地域
Eureka 伺服器沒有後端儲存,但註冊中心中的服務例項都必須傳送心跳以保持其註冊最新(因此這可以在記憶體中完成)。客戶端也有一個 Eureka 註冊的記憶體快取(因此它們不必為每次服務請求都去註冊中心)。
預設情況下,每個 Eureka 伺服器也是一個 Eureka 客戶端,並且需要(至少一個)服務 URL 來定位對等節點。如果您不提供它,服務將執行並工作,但會在您的日誌中產生大量關於無法向對等節點註冊的噪音。
獨立模式
兩個快取(客戶端和伺服器)與心跳的結合使得獨立的 Eureka 伺服器具有相當的容錯能力,只要有某種監控或彈性執行時(例如 Cloud Foundry)使其保持執行。在獨立模式下,您可能傾向於關閉客戶端行為,這樣它就不會不斷嘗試並失敗地連線到其對等節點。以下示例展示瞭如何關閉客戶端行為
server: port: 8761 eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
注意,serviceUrl
指向與本地例項相同的主機。
對等感知
透過執行多個例項並讓它們相互註冊,Eureka 可以變得更加彈性和高可用。事實上,這是預設行為,因此要使其工作,您只需向對等節點新增一個有效的 serviceUrl
,如下例所示
--- spring: profiles: peer1 eureka: instance: hostname: peer1 client: serviceUrl: defaultZone: https://peer2/eureka/ --- spring: profiles: peer2 eureka: instance: hostname: peer2 client: serviceUrl: defaultZone: https://peer1/eureka/
在前面的示例中,我們有一個 YAML 檔案,可以透過在不同的 Spring Profile 下執行,將同一個伺服器執行在兩個主機(peer1
和 peer2
)上。您可以使用此配置透過修改 /etc/hosts
來解析主機名,從而在單個主機上測試對等感知(這在生產環境中價值不大)。事實上,如果您執行在一臺知道自己主機名的機器上(預設情況下,它透過 java.net.InetAddress
查詢),則不需要 eureka.instance.hostname
。
您可以在系統中新增多個對等節點,只要它們之間至少透過一條邊相互連線,它們就會相互同步註冊資訊。如果對等節點物理上是分開的(在資料中心內部或多個數據中心之間),原則上,系統可以承受“腦裂”(split-brain)型別的故障。您可以在系統中新增多個對等節點,只要它們之間直接相互連線,它們就會相互同步註冊資訊。
eureka: client: serviceUrl: defaultZone: https://peer1/eureka/,http://peer2/eureka/,http://peer3/eureka/ --- spring: profiles: peer1 eureka: instance: hostname: peer1 --- spring: profiles: peer2 eureka: instance: hostname: peer2 --- spring: profiles: peer3 eureka: instance: hostname: peer3
何時優先使用 IP 地址
在某些情況下,Eureka 最好宣傳服務的 IP 地址而不是主機名。將 eureka.instance.preferIpAddress
設定為 true
,當應用程式向 eureka 註冊時,它會使用其 IP 地址而不是其主機名。
如果 Java 無法確定主機名,則會將 IP 地址傳送到 Eureka。設定主機名的唯一顯式方式是設定 |
保護 Eureka 伺服器
您只需透過 spring-boot-starter-security
將 Spring Security 新增到伺服器的 classpath 中,即可保護您的 Eureka 伺服器。預設情況下,當 classpath 中存在 Spring Security 時,它會要求每個傳送到應用程式的請求都附帶有效的 CSRF token。Eureka 客戶端通常不具備有效的跨站請求偽造 (CSRF) token,因此您需要對 /eureka/**
端點停用此要求。例如:
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authz) -> authz
.anyRequest().authenticated())
.httpBasic(withDefaults());
http.csrf().ignoringRequestMatchers("/eureka/**");
return http.build();
}
有關 CSRF 的更多資訊,請參閱 Spring Security 文件。
您可以在 Spring Cloud Samples 倉庫中找到一個 Eureka 伺服器演示。
JDK 11 支援
Eureka 伺服器所依賴的 JAXB 模組在 JDK 11 中已被移除。如果您打算在執行 Eureka 伺服器時使用 JDK 11,則必須在您的 POM 或 Gradle 檔案中包含這些依賴項。
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
</dependency>
指標
EurekaInstanceMonitor
監聽與 Eureka 例項註冊相關的事件,並在 Micrometer 的 MeterRegistry
中為 Eureka 例項資訊建立/更新 Gauge
。預設情況下,此行為是停用的。如果要啟用它,需要將 eureka.server.metrics.enabled
設定為 true
。
預設情況下,Gauge
的名稱為 eureka.server.instances
,幷包含以下標籤:
-
application
:應用程式名稱 -
status
:例項狀態(UP
,DOWN
,STARTING
,OUT_OF_SERVICE
,UNKNOWN
,參見:com.netflix.appinfo.InstanceInfo.InstanceStatus
)
您可以透過注入自己的 EurekaInstanceTagsProvider
實現來新增額外的標籤。
配置屬性
要檢視所有 Spring Cloud Netflix 相關配置屬性的列表,請檢視附錄頁面。