共用方式為


在 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

一般設定

  • 記錄相關組態

在應用程式之間呼叫

此範例示範如何撰寫 Java 程式代碼,以在已向 Spring 元件的 Eureka Server 註冊的應用程式之間進行呼叫。 當容器應用程式與 Eureka 系結時,它們會透過 Eureka 伺服器彼此通訊。

此範例會建立兩個應用程式、呼叫端和被呼叫者。 這兩個應用程式會使用適用於 Spring 的 Eureka 伺服器元件彼此通訊。 被呼叫端應用程式會公開呼叫端應用程式所呼叫的端點。

  1. 建立被呼叫端應用程式。 在 Spring Boot 應用程式中啟用 Eureka 用戶端,方法是將 @EnableDiscoveryClient 批註新增至您的主要類別。

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CalleeApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CalleeApplication.class, args);
    	}
    }
    
  2. 在被呼叫端應用程式呼叫的被呼叫端應用程式中建立端點。

    @RestController
    public class CalleeController {
    
        @GetMapping("/call")
        public String calledByCaller() {
            return "Hello from Application callee!";
        }
    }
    
  3. 在應用程式組態檔中設定被呼叫者應用程式的名稱。 例如, application.yml

    spring.application.name=callee
    
  4. 建立呼叫端應用程式。

    @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();
    	}
    }
    
  5. 在呼叫端應用程式中建立控制器,以使用 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 儀錶板。

下一步