在 Azure Container Apps 中設定適用於 Spring 元件的 Eureka 伺服器設定 (預覽)
適用於 Spring 的 Eureka Server 是微服務集中式服務探索的機制。 使用下列指引來瞭解如何設定和管理適用於 Spring 元件的 Eureka 伺服器。
顯示
您可以使用 命令,依名稱 show
檢視個別元件的詳細數據。
執行下列命令之前,請以您的值取代以 <>
括住的預留位置。
az containerapp env java-component eureka-server-for-spring show \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <JAVA_COMPONENT_NAME>
清單
您可以使用 命令列出所有已註冊的 list
Java 元件。
執行下列命令之前,請以您的值取代以 <>
括住的預留位置。
az containerapp env java-component list \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP>
解除系結
若要從容器應用程式中移除繫結,請使用 --unbind
選項。
執行下列命令之前,請以您的值取代以 <>
括住的預留位置。
az containerapp update \
--name <APP_NAME> \
--unbind <JAVA_COMPONENT_NAME> \
--resource-group <RESOURCE_GROUP>
適用於 Spring 的 Eureka 伺服器允許的組態清單
下列清單詳細說明支援的組態。 您可以在 Spring Cloud Eureka Server 中找到 更多詳細數據。
注意
請提交新功能要求的支援票證。
設定選項
az containerapp update
此命令會--configuration
使用 參數來控制 Spring 的 Eureka 伺服器設定方式。 只要多個參數是以空格分隔,就可以一次使用多個參數。 您可以在 Spring Cloud Eureka Server 檔中找到更多詳細數據。
組態屬性提供下列組 eureka.server
態設定。
名稱 | 描述: | 預設值 |
---|---|---|
eureka.server.enable-self-preservation |
啟用時,伺服器會追蹤應該從伺服器收到的更新數目。 任何時間,續約數目會低於 eureka.server.renewal-percent-threshold 所定義的臨界值百分比。 預設值在原始 Eureka 伺服器中設定為 true ,但在 Eureka Server Java 元件中,預設值會設定為 false 。 請參閱 適用於 Spring Java 元件的 Eureka Server 限制 |
false |
eureka.server.renewal-percent-threshold |
在 eureka.server.renewal-threshold-update-interval-ms 所指定的期間內,客戶端預期的更新最小百分比。 如果更新低於閾值,則如果已啟用 eureka.server.enable-self-preservation,則會停用到期日。 | 0.85 |
eureka.server.renewal-threshold-update-interval-ms |
需要更新 eureka.server.renewal-percent-threshold 中所指定閾值的間隔。 | 0 |
eureka.server.expected-client-renewal-interval-seconds |
用戶端預期傳送活動訊號的間隔。 預設為 30 秒。 如果用戶端以不同的頻率傳送活動訊號,例如每 15 秒,則應該據以調整此參數,否則自我保留將無法如預期般運作。 | 30 |
eureka.server.response-cache-auto-expiration-in-seconds |
取得當登錄承載未因變更事件失效時,應該保留在快取中的時間。 | 180 |
eureka.server.response-cache-update-interval-ms |
取得客戶端的承載快取應該更新的時間間隔。 | 0 |
eureka.server.use-read-only-response-cache |
com.netflix.eureka.registry.ResponseCache 目前使用兩個層級快取策略來回應。 具有到期原則的 readWrite 快取,以及不過期的只讀快取。 | true |
eureka.server.disable-delta |
檢查是否可將差異資訊提供給用戶端。 | false |
eureka.server.retention-time-in-m-s-in-delta-queue |
取得應該快取差異信息的時間,讓用戶端擷取值而不遺失該值。 | 0 |
eureka.server.delta-retention-timer-interval-in-ms |
取得清除工作應該喚醒並檢查過期差異信息的時間間隔。 | 0 |
eureka.server.eviction-interval-timer-in-ms |
取得到期實例的工作應該喚醒和執行的時間間隔。 | 60000 |
eureka.server.sync-when-timestamp-differs |
檢查時間戳不同時是否要同步處理實例。 | true |
eureka.server.rate-limiter-enabled |
指出是否應該啟用或停用速率限制子。 | false |
eureka.server.rate-limiter-burst-size |
速率限制器,令牌貯體演演算法屬性。 | 10 |
eureka.server.rate-limiter-registry-fetch-average-rate |
速率限制器,令牌貯體演演算法屬性。 指定平均強制要求率。 | 500 |
eureka.server.rate-limiter-privileged-clients |
經認證的用戶端清單。 這是除了標準 eureka Java 用戶端之外。 | N/A |
eureka.server.rate-limiter-throttle-standard-clients |
指出速率限制標準用戶端。 如果設定為 false,則只會限制非標準用戶端的速率。 | false |
eureka.server.rate-limiter-full-fetch-average-rate |
速率限制器,令牌貯體演演算法屬性。 指定平均強制要求率。 | 100 |
一般設定
- 記錄相關組態
- logging.level。*
- logging.group。*
- 記錄下的任何其他設定都應該禁止。* 命名空間,例如,應該禁止使用
logging.file
寫入記錄檔。
在應用程式之間呼叫
此範例示範如何撰寫 Java 程式代碼,以在已向 Spring 元件的 Eureka Server 註冊的應用程式之間進行呼叫。 當容器應用程式與 Eureka 系結時,它們會透過 Eureka 伺服器彼此通訊。
此範例會建立兩個應用程式、呼叫端和被呼叫者。 這兩個應用程式會使用適用於 Spring 的 Eureka 伺服器元件彼此通訊。 被呼叫端應用程式會公開呼叫端應用程式所呼叫的端點。
建立被呼叫端應用程式。 在 Spring Boot 應用程式中啟用 Eureka 用戶端,方法是將
@EnableDiscoveryClient
批註新增至您的主要類別。@SpringBootApplication @EnableDiscoveryClient public class CalleeApplication { public static void main(String[] args) { SpringApplication.run(CalleeApplication.class, args); } }
在被呼叫端應用程式呼叫的被呼叫端應用程式中建立端點。
@RestController public class CalleeController { @GetMapping("/call") public String calledByCaller() { return "Hello from Application callee!"; } }
在應用程式組態檔中設定被呼叫者應用程式的名稱。 例如, application.yml。
spring.application.name=callee
建立呼叫端應用程式。
@EnableDiscoveryClient
新增註釋以啟用 Eureka 用戶端功能。 此外,使用@LoadBalanced
註釋建立WebClient.Builder
Bean,以執行對其他服務的負載平衡呼叫。@SpringBootApplication @EnableDiscoveryClient public class CallerApplication { public static void main(String[] args) { SpringApplication.run(CallerApplication.class, args); } @Bean @LoadBalanced public WebClient.Builder loadBalancedWebClientBuilder() { return WebClient.builder(); } }
在呼叫端應用程式中建立控制器,以使用
WebClient.Builder
其應用程式名稱呼叫被呼叫端應用程式, 被呼叫者。@RestController public class CallerController { @Autowired private WebClient.Builder webClientBuilder; @GetMapping("/call-callee") public Mono<String> callCallee() { return webClientBuilder.build() .get() .uri("http://callee/call") .retrieve() .bodyToMono(String.class); } }
現在您有呼叫端和被呼叫端應用程式,可使用適用於 Spring Java 元件的 Eureka Server 彼此通訊。 在呼叫端應用程式中測試 /call-callee
端點之前,請確定這兩個應用程式都正在執行並系結到 Eureka 伺服器。
限制
Eureka Server Java 元件隨附預設組態
eureka.server.enable-self-preservation
,設定為false
。 此預設組態有助於避免在啟用自我保留后未刪除實例的時間。 如果實例太早刪除,某些要求可能會導向至不存在的實例。 如果您想要將此設定變更為true
,您可以在 Java 元件中設定自己的組態來覆寫它。Eureka 伺服器只有單一復本且不支持調整,使得對等的 Eureka 伺服器功能無法使用。
無法使用 Eureka 儀錶板。