Konfigurieren von Einstellungen für die Eureka Server für Spring-Komponente in Azure-Container-Apps (Vorschau)

Eureka Server für Spring ist ein Mechanismus für die zentrale Dienstermittlung für Microservices. Verwenden Sie die folgenden Anleitungen, um zu erfahren, wie Sie Ihre Eureka Server für Spring-Komponente konfigurieren und verwalten.

Anzeigen

Sie können die Details einer einzelnen Komponente mithilfe des Befehls show anzeigen.

Bevor Sie den folgenden Befehl ausführen, ersetzen Sie Platzhalter, die mit <> umgeben sind, mit Ihren Werten.

az containerapp env java-component eureka-server-for-spring show \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --name <JAVA_COMPONENT_NAME>

Liste

Sie können alle registrierten Java-Komponenten mithilfe des Befehls list auflisten.

Bevor Sie den folgenden Befehl ausführen, ersetzen Sie Platzhalter, die mit <> umgeben sind, mit Ihren Werten.

az containerapp env java-component list \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Aufheben der Bindung

Verwenden Sie die Option --unbind, um eine Bindung aus einer Container-App zu entfernen.

Bevor Sie den folgenden Befehl ausführen, ersetzen Sie Platzhalter, die mit <> umgeben sind, mit Ihren Werten.

az containerapp update \
  --name <APP_NAME> \
  --unbind <JAVA_COMPONENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Liste der zulässigen Konfigurationen für Eureka Server für Spring

In der folgenden Liste werden unterstützte Konfigurationen aufgeführt. Weitere Details finden Sie unter Spring Cloud Eureka Server.

Hinweis

Bitte erstellen Sie für neue Featureanforderungen Supporttickets.

Konfigurationsoptionen

Der az containerapp update-Befehl verwendet den --configuration-Parameter, um zu steuern, wie der Eureka Server für Spring konfiguriert ist. Sie können mehrere Parameter gleichzeitig verwenden, solange sie durch ein Leerzeichen getrennt sind. Weitere Details finden Sie in der Spring Cloud Eureka Server-Dokumentation.

Die folgenden Konfigurationseinstellungen sind in der Konfigurationseigenschaft eureka.server verfügbar.

Name Beschreibung Standardwert
eureka.server.enable-self-preservation Wenn diese Option aktiviert ist, verfolgt der Server die Anzahl der Erneuerungen, die er vom Server erhalten soll. Jedes Mal, wenn die Anzahl der Erneuerungen unter den von eureka.server.renewal-percent-threshold festgelegten Schwellenwert fällt. Im ursprünglichen Eureka-Server ist der Standardwert auf true festgelegt, aber in der Eureka Server-Java-Komponente ist der Standardwert auf false festgelegt. Weitere Informationen finden Sie unter Einschränkungen bei Java-Komponenten von Eureka Server für Spring. false
eureka.server.renewal-percent-threshold Der Mindestprozentsatz an Erneuerungen, der von den Clients in dem durch eureka.server.renewal-threshold-update-interval-ms festgelegten Zeitraum erwartet wird. Wenn die Erneuerungen unter den Schwellenwert fallen, werden die Abläufe deaktiviert, wenn die Option eureka.server.enable-self-preservation aktiviert ist. 0.85
eureka.server.renewal-threshold-update-interval-ms Das Intervall, in dem der in eureka.server.renewal-percent-threshold angegebene Schwellenwert aktualisiert werden muss. 0
eureka.server.expected-client-renewal-interval-seconds Das Intervall, in dem Clients ihre Heartbeats senden sollen. Der Standardwert beträgt 30 Sekunden. Wenn die Clients Heartbeats mit unterschiedlicher Frequenz senden, z. B. alle 15 Sekunden, sollte dieser Parameter entsprechend angepasst werden, da sonst die Selbsterhaltung nicht wie erwartet funktioniert. 30
eureka.server.response-cache-auto-expiration-in-seconds Ruft die Zeit ab, für die die Nutzdaten der Registrierung im Cache gehalten werden sollten, wenn sie nicht durch Änderungsereignisse ungültig gemacht werden. 180
eureka.server.response-cache-update-interval-ms Ruft das Zeitintervall ab, in dem der Nutzdaten-Cache des Clients aktualisiert werden sollte. 0
eureka.server.use-read-only-response-cache Der com.netflix.eureka.registry.ResponseCache verwendet derzeit eine zweistufige Zwischenspeicherungsstrategie für Antworten. Ein readWrite-Cache mit einer Ablaufrichtlinie und ein readonly-Cache, der ohne Ablauf zwischenspeichert. true
eureka.server.disable-delta Überprüft, ob dem Client die Delta-Informationen bereitgestellt werden oder nicht. false
eureka.server.retention-time-in-m-s-in-delta-queue Ruft die Zeit ab, für die die Deltainformationen zwischengespeichert werden sollten, damit die Clients den Wert abrufen können, ohne ihn zu verpassen. 0
eureka.server.delta-retention-timer-interval-in-ms Ermittelt das Zeitintervall, in dem die Aufgabe „Aufräumen“ aufwachen und auf abgelaufene Deltainformationen überprüfen soll. 0
eureka.server.eviction-interval-timer-in-ms Ermittelt das Zeitintervall, in dem die Aufgabe, deren Instanzen ablaufen, aufwachen und ausgeführt werden soll. 60000
eureka.server.sync-when-timestamp-differs Prüft, ob Instanzen synchronisiert werden sollen, wenn sich die Zeitstempel unterscheiden. true
eureka.server.rate-limiter-enabled Zeigt an, ob der Ratenbegrenzer aktiviert oder deaktiviert werden soll. false
eureka.server.rate-limiter-burst-size Eigenschaft Ratenbegrenzer, Token Bucket-Algorithmus. 10
eureka.server.rate-limiter-registry-fetch-average-rate Eigenschaft Ratenbegrenzer, Token Bucket-Algorithmus. Gibt die durchschnittliche erzwungene Anforderungsrate an. 500
eureka.server.rate-limiter-privileged-clients Eine Liste der zertifizierten Clients. Dies ist zusätzlich zu standardmäßigen Eureka Java-Clients. N/V
eureka.server.rate-limiter-throttle-standard-clients Zeigt an, ob für Standardclients eine Ratenbegrenzung gilt. Wenn dieser Wert auf FALSE festgelegt ist, werden nur nicht standardmäßige Clients mit einer begrenzten Rate bewertet. false
eureka.server.rate-limiter-full-fetch-average-rate Eigenschaft Ratenbegrenzer, Token Bucket-Algorithmus. Gibt die durchschnittliche erzwungene Anforderungsrate an. 100

Häufig verwendete Konfigurationen

  • auf Protokollierung bezogene Konfigurationen
    • logging.level.*
    • logging.group.*
    • Alle anderen Konfigurationen unter dem Namespace logging.* sollten verboten sein, z. B. das Schreiben von Protokolldateien mithilfe der Verwendung von logging.file sollte verboten sein.

Aufruf zwischen Anwendungen

In diesem Beispiel erfahren Sie, wie Sie Java-Code für den Aufruf zwischen Anwendungen schreiben, die bei der Eureka Server für Spring-Komponente registriert sind. Wenn Container-Apps mit Eureka verbunden sind, kommunizieren sie untereinander über den Eureka-Server.

Das Beispiel erstellt zwei Anwendungen, eine aufrufende und eine aufgerufene. Beide Anwendungen kommunizieren untereinander mithilfe der Eureka Server für Spring-Komponente. Die aufgerufene Anwendung stellt einen Endpunkt zur Verfügung, der von der aufrufenden Anwendung aufgerufen wird.

  1. Erstellen Sie die aufgerufene Anwendung. Aktivieren Sie den Eureka-Client in Ihrer Spring Boot-Anwendung, indem Sie der Klasse „main“ die Anmerkung @EnableDiscoveryClient hinzufügen.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CalleeApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CalleeApplication.class, args);
    	}
    }
    
  2. Erstellen Sie einen Endpunkt in der aufgerufenen Anwendung, der von der aufrufenden Anwendung aufgerufen wird.

    @RestController
    public class CalleeController {
    
        @GetMapping("/call")
        public String calledByCaller() {
            return "Hello from Application callee!";
        }
    }
    
  3. Legen Sie den Namen der aufgerufenen Anwendung in der Anwendungskonfigurationsdatei fest. Zum Beispiel: application.yml.

    spring.application.name=callee
    
  4. Erstellen Sie die aufrufende Anwendung.

    Fügen Sie die Anmerkung @EnableDiscoveryClient hinzu, um die Clientfunktionen von Eureka zu aktivieren. Erstellen Sie außerdem eine WebClient.Builder-Bean mit der Anmerkung @LoadBalanced, um Lastenausgleichsaufrufe an andere Dienste auszuführen.

    @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. Erstellen Sie in der aufrufenden Anwendung einen Controller, der WebClient.Builder verwendet, um die aufgerufene Anwendung mithilfe des Anwendungsnamens „callee“ aufzurufen.

    @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);
        }
    }
    

Jetzt verfügen Sie über eine aufrufende und eine aufgerufene Anwendung, die über Java-Komponenten von Eureka Server für Spring miteinander kommunizieren. Stellen Sie sicher, dass beide Anwendungen ausgeführt und an den Eureka-Server gebunden werden, bevor Sie den Endpunkt /call-callee in der aufrufenden Anwendung testen.

Begrenzungen

  • Die Java-Komponente Eureka Server enthält eine Standardkonfiguration, eureka.server.enable-self-preservation, die auf false festgelegt ist. Diese Standardkonfiguration hilft zu vermeiden, dass Instanzen nach der Aktivierung der Selbsterhaltung nicht gelöscht werden. Wenn Instanzen zu früh gelöscht werden, könnten einige Anforderungen an nicht existierende Instanzen weitergeleitet werden. Wenn Sie diese Einstellung auf true ändern möchten, können Sie sie überschreiben, indem Sie Ihre eigenen Konfigurationen in der Java-Komponente festlegen.

  • Der Eureka-Server verfügt nur über ein einziges Replikat und unterstützt keine Skalierung, so dass die Peer-Eureka-Server-Funktion nicht verfügbar ist.

  • Das Eureka-Dashboard ist nicht verfügbar.

Nächste Schritte