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.
Azure Container Apps může v cloudu spouštět libovolnou kontejnerizovanou aplikaci Java a zároveň poskytuje flexibilní možnosti pro nasazení aplikací.
Když pro kontejnerizované aplikace v Javě používáte Container Apps, získáte tyto možnosti:
Nákladově efektivní škálování: Při použití plánu Consumption se vaše aplikace v Javě můžou škálovat na nulu. Když je po vaší aplikaci malá poptávka, automatické škálování snižuje náklady na vaše projekty.
Možnosti nasazení: Azure Container Apps se integruje s Buildpacky, což umožňuje nasazení přímo z sestavení Maven, pomocí souborů artefaktů nebo s vlastním souborem Dockerfile.
Automatické přizpůsobení paměti (Preview): Kontejnerové aplikace optimalizují způsob správy paměti prostředí Java Virtual Machine (JVM) a zpřístupňuje tak maximální možnou paměť aplikacím v Javě.
Sestavovací proměnné prostředí (Preview): Můžete nakonfigurovat vlastní dvojice klíč-hodnota k řízení sestavení obrazu Java ze zdrojového kódu.
Tento článek popisuje informace, které potřebujete vědět při vytváření aplikací v Javě v Azure Container Apps.
Typy nasazení
Spouštění kontejnerizovaných aplikací obvykle znamená, že potřebujete vytvořit soubor Dockerfile pro vaši aplikaci, ale spouštění aplikací Java v Container Apps nabízí několik možností.
| Typ | Popis | Používá buildpacky. | Používá soubor Dockerfile. |
|---|---|---|---|
| Sestavení zdrojového kódu | Ze zdrojového kódu můžete nasadit přímo do Container Apps. | Yes | Ne |
| Sestavení artefaktů | Můžete vytvořit build Maven pro nasazení do Container Apps. | Yes | Ne |
| Dockerfile | Soubor Dockerfile můžete vytvořit ručně a převzít úplnou kontrolu nad nasazením. | Ne | Yes |
Poznámka:
Nasazení pomocí Buildpacks podporují Java Development Kit (JDK) verze 8, 11, 17 a 21.
Typy aplikací
Různé typy aplikací se implementují buď jako jednotlivá aplikace kontejneru, nebo jako úloha Container Apps. Následující tabulka vám pomůže určit, který typ aplikace je pro váš scénář nejvhodnější.
Příklady uvedené v této tabulce nejsou vyčerpávající, ale pomáhají vám co nejlépe porozumět záměru různých typů aplikací.
| Typ | Příklady | Implementovat jako... |
|---|---|---|
| Webové aplikace a koncové body rozhraní API | Spring Boot, Quarkus, Apache Tomcat a Jetty | Jednotlivá aplikace typu kontejner |
| Konzolové aplikace, naplánované úkoly, spouštěče úloh, dávkové úlohy | Úlohy SparkJobs, úlohy ETL, úloha Spring Batch, úloha pipeline Jenkins | úloha Container Apps |
Ladění
Při ladění vaší Java aplikace na Container Apps nezapomeňte zkontrolovat in-process agenta Java kvůli zprávám pro ladění datových proudů protokolů a konzoly.
Řešení problému
Při vývoji aplikací v Javě mějte na paměti následující položky:
Výchozí prostředky: Ve výchozím nastavení má aplikace k dispozici polovinu procesoru a 1 GB.
Bezstavové procesy: Při horizontálním navýšení a snižování kapacity aplikace kontejneru se vytvoří a vypnou nové procesy. Nezapomeňte předem naplánovat zápis dat do sdíleného úložiště, jako jsou databáze a sdílené složky systému souborů. Neočekávejte, že žádné soubory zapsané přímo do systému souborů kontejneru budou dostupné pro žádný jiný kontejner.
Škálování na nulu je výchozí: Pokud potřebujete zajistit, aby jedna nebo více instancí vaší aplikace nepřetržitě běžela, ujistěte se, že definujete pravidlo škálování, které nejlépe vyhovuje vašim potřebám.
Neočekávané chování: Pokud se vaší aplikaci kontejneru nepodaří sestavit, spustit nebo spustit, ověřte, že je cesta artefaktu ve vašem kontejneru správně nastavená.
Problémy s podporou buildpacku: Pokud buildpack nepodporuje závislosti nebo požadovanou verzi Javy, vytvořte vlastní soubor Dockerfile pro nasazení aplikace. Můžete zobrazit ukázkový soubor Dockerfile pro orientaci.
SIGTERM a SIGINT signály: Ve výchozím nastavení JVM tyto signály
SIGTERMaSIGINTzpracovává a nepředává je do aplikace, pokud tyto signály nezachytíte a odpovídajícím způsobem je zpracujete ve své aplikaci. Container Apps používá jakSIGTERM, takSIGINTpro řízení procesů. Pokud tyto signály nezachytíte a vaše aplikace se neočekávaně ukončí, můžete tyto signály ztratit, pokud je neuchováte v úložišti.Přístup k obrazům kontejnerů: Pokud používáte nasazení artefaktu nebo zdrojového kódu v kombinaci s výchozím registrem, nemáte přímý přístup k obrazům kontejnerů.
Sledování
Všechny standardní nástroje pozorovatelnosti fungují s vaší aplikací v Javě. Při vytváření aplikací v Javě pro spouštění v Container Apps mějte na paměti následující položky:
Metriky: Metriky prostředí Java Virtual Machine (JVM) jsou důležité pro monitorování stavu a výkonu aplikací v Javě. Shromážděná data zahrnují přehled o využití paměti, uvolňování paměti a počtu vláken vašeho prostředí JVM. Můžete zkontrolovat metriky , které vám pomůžou zajistit stav a stabilitu aplikací.
Protokolování: Odesílejte aplikační a chybové zprávy do
stdoutnebostderror, aby se mohly zobrazit v proudu protokolů. Vyhněte se protokolování přímo do systému souborů kontejneru, jak je běžné při používání oblíbených služeb protokolování.Konfigurace monitorování výkonu: Nasaďte služby monitorování výkonu jako samostatný kontejner v prostředí Container Apps, aby mohl přímo přistupovat k vaší aplikaci.
Diagnostika
Azure Container Apps nabízí integrované diagnostické nástroje výhradně pro vývojáře v Javě. Tato podpora zjednodušuje ladění a řešení potíží s aplikacemi v Javě běžících ve službě Azure Container Apps, aby se zlepšila efektivita a usnadnila.
- Úroveň dynamického protokolovacího nástroje: Umožňuje přístup k různým úrovním podrobností protokolu bez úprav kódu nebo vynucení restartování aplikace. Pro referenci můžete zobrazit nastavení úrovně dynamického protokolovacího nástroje.
Škálování
Pokud potřebujete zajistit, aby se požadavky z front-endových aplikací dostaly na stejný server, nebo je front-endová aplikace rozdělena mezi více kontejnerů, nezapomeňte povolit sticky sessions.
Zabezpečení
Modul runtime Container Apps za vás ukončí protokol TLS v prostředí Container Apps.
Správa paměti
Pokud chcete optimalizovat správu paměti v aplikaci v Javě, ujistěte se, že je ve vaší aplikaci povolené přizpůsobení paměti JVM .
Paměť se měří v gibibajtech (GiB) a párech jader procesoru. Následující tabulka ukazuje rozsah prostředků dostupných pro vaši aplikaci kontejneru.
| Prahová hodnota | Procesorová jádra | Paměť v Gibibajtech (GiB) |
|---|---|---|
| Minimum | 0.25 | 0.5 |
| Maximální | 4 | 8 |
Jádra jsou k dispozici v přírůstcích po 0,25 jádrech s pamětí dostupnou v poměru 2:1. Pokud například potřebujete 1,25 jader, máte 2,5 GiB paměti dostupné pro vaši aplikaci kontejneru.
Poznámka:
U aplikací používajících sadu JDK verze 9 a nižší nezapomeňte definovat vlastní nastavení paměti JVM tak, aby odpovídalo přidělení paměti v Azure Container Apps.
Podpora komponent Java
Azure Container Apps nabízí podporu pro následující komponenty Javy jako spravované služby:
Eureka Server for Spring: Registrace a zjišťování služeb jsou klíčové požadavky na údržbu seznamu instancí živých aplikací. Vaše aplikace používá tento seznam ke směrování a vyrovnávání zatížení příchozích požadavků. Ruční konfigurace každého klienta trvá určitou dobu a zavádí možnost lidské chyby. Eureka Server zjednodušuje správu zjišťování služeb tím, že funguje jako registr služeb, kde se mikroslužby mohou registrovat a zjišťovat další služby v systému.
Konfigurační server pro Spring: Konfigurační server poskytuje centralizovanou externí správu konfigurace pro distribuované systémy. Tato komponenta je navržená tak, aby řešila problémy při správě nastavení konfigurace napříč několika mikroslužbami v prostředí nativním pro cloud.
Brána pro Spring: Brána pro Spring nabízí efektivní a výkonný způsob směrování, správy a zpracování požadavků rozhraní API v rámci architektury mikroslužeb. Slouží jako brána rozhraní API , která směruje externí požadavky do různých služeb a přidává funkce, jako je filtrování a vyrovnávání zatížení.
Admin for Spring: Komponenta admin for Spring managed poskytuje rozhraní pro správu navržené pro webové aplikace Spring Boot, které mají koncové body poháněcího zařízení. Spravovaná komponenta poskytuje integraci a správu aplikace kontejneru tím, že umožňuje vytvořit vazbu aplikace kontejneru s komponentou Admin for Spring.