Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Eureka Server for Spring je registr služeb, který umožňuje, aby se mikroslužby zaregistrovaly a zjistily další služby. Eureka Server for Spring je k dispozici jako komponenta Azure Container Apps. Aplikaci kontejneru můžete svázat se serverem Eureka Server for Spring pro automatickou registraci na serveru Eureka.
V tomto kurzu se naučíte:
- Vytvořte komponentu Eureka Server for Spring Java.
- Vytvořte vazbu aplikace kontejneru na komponentu Eureka Server for Spring Java.
Důležité
V tomto kurzu se používají služby, které můžou ovlivnit fakturu za Azure. Pokud se rozhodnete postupovat podle pokynů, nezapomeňte odstranit prostředky doporučené v tomto článku, abyste se vyhnuli neočekávané fakturaci.
Požadavky
Úvahy
Při spuštění Serveru Eureka pro Spring v Container Apps mějte na paměti následující podrobnosti:
| Položka | Vysvětlení |
|---|---|
| Scope | Komponenta Eureka Server for Spring běží ve stejném prostředí jako připojená aplikace kontejneru. |
| Škálování | Komponenta Eureka Server for Spring nemůže škálovat. Vlastnosti škálování minReplicas a maxReplicas jsou nastaveny na 1. Pokud chcete dosáhnout vysoké dostupnosti, přečtěte si téma Vytvoření vysoce dostupné služby Eureka v Container Apps. |
| Zdroje informací | Přidělení prostředků kontejneru pro Server Eureka pro Spring je pevně stanovené. Počet jader procesoru je 0,5 a velikost paměti je 1 Gi. |
| Ceny | Fakturace Serveru Eureka for Spring spadá do cen založených na spotřebě. Prostředky spotřebované spravovanými komponentami Java se účtují podle sazby aktivní/nečinné. K zastavení fakturace můžete odstranit komponenty, které se už nepoužívají. |
| Vazba | Kontejnerové aplikace se připojují k komponentě Eureka Server for Spring prostřednictvím vazby. Vazby injektují konfigurace do prostředí proměnných kontejnerové aplikace. Po vytvoření vazby může aplikace kontejneru číst konfigurační hodnoty z proměnných prostředí a připojit se k komponentě Eureka Server for Spring. |
Nastavení
Než začnete pracovat s komponentou Eureka Server for Spring, musíte nejprve vytvořit požadované prostředky.
Spuštěním následujících příkazů vytvořte skupinu prostředků v prostředí kontejnerové aplikace.
Vytvořte proměnné pro podporu konfigurace aplikace. Tyto hodnoty jsou k dispozici pro účely této lekce.
export LOCATION=eastus export RESOURCE_GROUP=my-services-resource-group export ENVIRONMENT=my-environment export EUREKA_COMPONENT_NAME=eureka export APP_NAME=my-eureka-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-client:latest"Proměnná Popis LOCATIONUmístění oblasti Azure, kam vytvoříte aplikaci kontejneru a komponentu Java. ENVIRONMENTNázev prostředí aplikace kontejneru pro ukázkové aplikace. RESOURCE_GROUPNázev skupiny prostředků Azure pro ukázkovou aplikaci EUREKA_COMPONENT_NAMENázev komponenty Java vytvořené pro vaši aplikaci kontejneru. V tomto případě vytvoříte komponentu Eureka Server for Spring Java. IMAGEImage kontejneru použitá v aplikaci kontejneru. Přihlaste se k Azure pomocí Azure CLI.
az loginVytvořte skupinu prostředků.
az group create --name $RESOURCE_GROUP --location $LOCATIONVytvořte prostředí kontejnerové aplikace.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Vytvoření komponenty Eureka Server for Spring Java
Teď, když máte existující prostředí, můžete vytvořit aplikaci kontejneru a svázat ji s instancí komponenty Java Serveru Eureka pro Spring.
Vytvořte komponentu Eureka Server for Spring Java.
az containerapp env java-component eureka-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAMEVolitelné: Aktualizujte konfiguraci komponenty Spring Java serveru Eureka.
az containerapp env java-component eureka-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
Připojte vaši aplikaci kontejneru k Eureka Serveru ve Spring Java komponentě.
Vytvořte aplikaci kontejneru a vytvořte vazbu na komponentu Eureka Server for Spring.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $EUREKA_COMPONENT_NAME \ --query properties.configuration.ingress.fqdnZkopírujte adresu URL aplikace do textového editoru, abyste ji mohli použít v nadcházejícím kroku.
Vraťte se do kontejnerové aplikace na portálu. Zkopírujte adresu URL aplikace do textového editoru, abyste ji mohli použít v nadcházejícím kroku.
Přejděte na trasu /allRegistrationStatus a zobrazte všechny aplikace zaregistrované v komponentě Eureka Server for Spring.
Vazba vloží do aplikace několik konfigurací jako proměnné prostředí, především vlastnost eureka.client.service-url.defaultZone . Tato vlastnost označuje interní koncový bod komponenty Java serveru Eureka.
Vazba také vloží následující vlastnosti:
"eureka.client.register-with-eureka": "true"
"eureka.client.fetch-registry": "true"
"eureka.instance.prefer-ip-address": "true"
Vlastnost eureka.client.register-with-eureka je nastavena na true k vynucení registrace u serveru Eureka. Tato registrace přepíše místní nastavení v application.properties, z konfiguračního serveru a tak dále. Pokud ho chcete nastavit na false, můžete ho přepsat nastavením proměnné prostředí v aplikaci kontejneru.
Tato eureka.instance.prefer-ip-address vlastnost je nastavená na true kvůli specifickému pravidlu systému překladu názvů domén v prostředí kontejnerové aplikace. Tuto hodnotu neupravujte tak, abyste nepřerušili vazbu.
Volitelné: Odvázání vaší aplikace kontejneru od serveru Eureka pro komponentu Spring Java
Pokud chcete odebrat vazbu z aplikace kontejneru, použijte tuto --unbind možnost.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Zobrazení aplikace prostřednictvím řídicího panelu
Důležité
Pokud chcete zobrazit řídicí panel, musíte mít přiřazenou alespoň Microsoft.App/managedEnvironments/write roli k vašemu účtu ve spravovaném prostředí. Můžete přiřadit explicitně roli Owner nebo Contributor k prostředku. Můžete také podle kroků vytvořit vlastní definici role a přiřadit ji k vašemu účtu.
Poznámka:
Řídicí panel není k dispozici v Azure China 21Vianet.
Vytvořte vlastní definici role.
az role definition create --role-definition '{ "Name": "<YOUR_ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'Ujistěte se, že zástupný symbol
<SUBSCRIPTION_ID>v hodnotěAssignableScopesnahradíte ID svého předplatného.Přiřaďte vlastní roli k účtu u prostředku spravovaného prostředí.
Získejte ID prostředku spravovaného prostředí:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)Přiřaďte roli k účtu.
Před spuštěním tohoto příkazu nahraďte zástupné symboly označené závorkami
<>za vaše ID uživatele nebo ID služebního objektu a název vaší role.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_IDPoznámka:
Hodnota
<USER_OR_SERVICE_PRINCIPAL_ID>by obvykle měla být identita, kterou používáte pro přístup k webu Azure Portal. Hodnota<ROLE_NAME>je název, který jste přiřadili v kroku 1.Získejte adresu URL řídicího panelu Eureka Server for Spring.
az containerapp env java-component eureka-server-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $EUREKA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsvTento příkaz vrátí adresu URL, kterou můžete použít pro přístup k řídicímu panelu Eureka Server for Spring. Na řídicím panelu můžete také zobrazit aplikaci kontejneru, jak je znázorněno na následujícím snímku obrazovky.
Volitelné: Integrace serveru Eureka pro komponenty Spring a Admin for Spring Java
Pokud chcete integrovat server Eureka pro Spring a správce pro komponenty Spring Java, přečtěte si téma Integrace spravovaného správce pro Spring s Eureka Serverem for Spring.
Vyčištění prostředků
Prostředky vytvořené v tomto kurzu mají vliv na fakturu za Azure. Pokud tyto služby nebudete používat dlouhodobě, spuštěním následujícího příkazu odeberte vše, co jste vytvořili v tomto kurzu.
az group delete --resource-group $RESOURCE_GROUP
Seznam povolených konfigurací pro server Eureka for Spring
Následující části popisují podporované konfigurace. Další informace najdete v tématu Spring Cloud Eureka Server.
Poznámka:
Odešlete podporu prostřednictvím ticketů pro požadavky na nové funkce.
Možnosti konfigurace
Příkaz az containerapp update pomocí parametru --configuration určuje, jak je nakonfigurovaný Server Eureka for Spring. Můžete použít více parametrů najednou, pokud jsou oddělené mezerou. Další informace najdete v tématu Spring Cloud Eureka Server.
Následující nastavení konfigurace jsou k dispozici na eureka.server vlastnosti konfigurace:
| Name | Popis | Výchozí hodnota |
|---|---|---|
eureka.server.enable-self-preservation |
Pokud je tato možnost povolená, server sleduje počet prodloužení, které by měl ze serveru obdržet. Kdykoli počet prodloužení klesne pod procento prahové hodnoty, jak je definováno eureka.server.renewal-percent-threshold. Výchozí hodnota je nastavena na true původní server Eureka, ale v komponentě Eureka Server Java je výchozí hodnota nastavena na false. Viz Omezení serveru Eureka pro Spring Java. |
false |
eureka.server.renewal-percent-threshold |
Minimální procento prodlužování, které se očekává od klientů v období určeném eureka.server.renewal-threshold-update-interval-ms. Pokud prodloužení klesnou pod prahovou hodnotu, jsou vypršení zakázána, pokud je eureka.server.enable-self-preservation povoleno. |
0.85 |
eureka.server.renewal-threshold-update-interval-ms |
Interval, pomocí kterého je potřeba aktualizovat prahovou hodnotu ( jak je uvedeno v eureka.server.renewal-percent-threshold ) |
0 |
eureka.server.expected-client-renewal-interval-seconds |
Časový interval, ve kterém se očekává, že klienti budou odesílat své heartbeaty. Výchozí nastavení je 30 sekund. Pokud klienti odesílají prezenční signály v různé frekvenci, například každých 15 sekund, měl by být tento parametr odpovídajícím způsobem nastaven, jinak sebezáchova nebude fungovat podle očekávání. | 30 |
eureka.server.response-cache-auto-expiration-in-seconds |
Získá čas, pro který by se datová část registru měla uchovávat v mezipaměti, pokud není zneplatněna událostmi změn. | 180 |
eureka.server.response-cache-update-interval-ms |
Získá interval, kterým se má aktualizovat mezipaměť zátěže klienta. | 0 |
eureka.server.use-read-only-response-cache |
com.netflix.eureka.registry.ResponseCache současné době používá strategii ukládání do mezipaměti na dvou úrovních pro odpovědi.
readWrite Mezipaměť se zásadami vypršení platnosti a readonly mezipaměť, která ukládá bez vypršení platnosti. |
true |
eureka.server.disable-delta |
Zkontroluje, zda rozdílové informace mohou být klientovi poskytnuty. | false |
eureka.server.retention-time-in-m-s-in-delta-queue |
Získejte dobu, po kterou by se měly informace o rozdílu uchovávat v mezipaměti, aby je klienti mohli načíst bez chybějících hodnot. | 0 |
eureka.server.delta-retention-timer-interval-in-ms |
Získejte časový interval, ve kterém se má úloha vyčištění probudit a zkontrolovat, jestli vypršela platnost rozdílových informací. | 0 |
eureka.server.eviction-interval-timer-in-ms |
Získejte časový interval, se kterým by se měly úlohy, kterým vyprší platnost instancí, probouzet a spouštět. | 60000 |
eureka.server.sync-when-timestamp-differs |
Zkontroluje, jestli se mají synchronizovat instance, když se časové razítko liší. | true |
eureka.server.rate-limiter-enabled |
Určuje, jestli má být omezovač rychlosti povolený nebo zakázaný. | false |
eureka.server.rate-limiter-burst-size |
Omezovač rychlosti, vlastnost algoritmu kbelíku tokenů | 10 |
eureka.server.rate-limiter-registry-fetch-average-rate |
Omezovač rychlosti, vlastnost algoritmu kbelíku tokenů Určuje průměrnou frekvenci vynucovaných požadavků. | 500 |
eureka.server.rate-limiter-privileged-clients |
Seznam certifikovaných klientů To je kromě standardních klientů Java Eureka. | N/A |
eureka.server.rate-limiter-throttle-standard-clients |
Uveďte, zda mají standardní klienti nějaký omezovač rychlosti. Pokud je nastavená hodnota false, jsou omezeny pouze nestandardní klienti. |
false |
eureka.server.rate-limiter-full-fetch-average-rate |
Omezovač rychlosti, vlastnost algoritmu kbelíku tokenů Určuje průměrnou míru vynucených požadavků. | 100 |
Běžné konfigurace
- Protokolování souvisejících konfigurací:
logging.level.*logging.group.*- Všechny ostatní konfigurace v
logging.*oboru názvů by měly být zakázané – například zápis souborů protokolu pomocílogging.fileby měl být zakázán.
Volání mezi aplikacemi
Tento příklad ukazuje, jak napsat kód Java pro volání mezi aplikacemi registrovanými komponentou Eureka Server for Spring. Když jsou kontejnerové aplikace svázané s Eurekou, komunikují mezi sebou prostřednictvím serveru Eureka.
Příklad vytvoří dvě aplikace: volajícího a přijímacího (callee). Obě aplikace vzájemně komunikují pomocí komponenty Eureka Server for Spring. Volaná aplikace zveřejňuje koncový bod, který je volán volající aplikací.
Vytvořte cílovou aplikaci. Povolte klienta Eureka v aplikaci Spring Boot přidáním poznámky
@EnableDiscoveryClientdo hlavní třídy.@SpringBootApplication @EnableDiscoveryClient public class CalleeApplication { public static void main(String[] args) { SpringApplication.run(CalleeApplication.class, args); } }V volané aplikaci vytvořte koncový bod, který volá volající aplikace.
@RestController public class CalleeController { @GetMapping("/call") public String calledByCaller() { return "Hello from Application callee!"; } }V konfiguračním souboru aplikace nastavte název volané aplikace, například v application.yml.
spring.application.name=calleeVytvořte aplikaci volajícího.
Přidáním poznámky
@EnableDiscoveryClientpovolíte funkci klienta Eureka. Vytvořte takéWebClient.Builderbean s anotací@LoadBalancedpro provádění volání s vyváženým zatížením do jiných služeb.@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(); } }V aplikaci volajícího vytvořte kontroler, který pomocí
WebClient.Builderzavolá volanou aplikaci podle jejího názvu, tedy "callee".@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); } }
Teď máte volající a volanou aplikaci, která mezi sebou komunikuje pomocí komponenty Eureka Server for Spring Java. Před testováním koncového /call-callee bodu v aplikaci volajícího se ujistěte, že jsou spuštěné obě aplikace, a vytvořte vazbu se serverem Eureka.
Omezení
- Komponenta Java serveru Eureka se dodává s výchozí konfigurací ,
eureka.server.enable-self-preservationnastavenou nafalse. Tato výchozí konfigurace pomáhá vyhnout se časům, kdy se instance neodstraní po povolení samoobslužného zachování. Pokud jsou instance odstraněny příliš brzy, můžou být některé požadavky směrovány na neexistující instance. Pokud chcete toto nastavení změnit natrue, můžete ho přepsat nastavením vlastních konfigurací v komponentě Java. - Řídicí panel Eureka není v Azure China 21Vianet dostupný.
Další kroky
Související obsah
Integrace spravovaného správce pro Spring se serverem Eureka for Spring