Přehled Javy v Azure Container Apps
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. Škálování v případě, že vaše aplikace vyžaduje jen málo, automaticky sníží náklady na vaše projekty.
Možnosti nasazení: Azure Container Apps se integruje s buildovacími balíčky, což umožňuje nasazení přímo z sestavení Mavenu, prostřednictvím 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ě.
Vytváření proměnných prostředí (Preview): Můžete nakonfigurovat vlastní páry klíč-hodnota pro řízení sestavení image Java ze zdrojového kódu.
Tento článek podrobně popisuje informace, které potřebujete vědět při vytváření aplikací Java 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 | No |
Sestavení artefaktů | Můžete vytvořit build Maven pro nasazení do Container Apps. | Yes | No |
Dockerfile | Soubor Dockerfile můžete vytvořit ručně a převzít úplnou kontrolu nad nasazením. | No | Ano |
Poznámka:
Nasazení Buildpacks podporují sadu 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, ETL, úloha Spring Batch, úloha kanálu Jenkins | Úloha Container Apps |
Ladění
Při ladění aplikace v Javě v Container Apps nezapomeňte zkontrolovat agenta v procesu Javy, jestli neobsahuje zprávy o 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 referenci.
SIGTERM a SIGINT signály: Ve výchozím nastavení JVM zpracovává a signály
SIGTERM
aSIGINT
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á řízení procesů iSIGTERM
SIGINT
pro ří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 imagí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 imagím kontejneru.
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, 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ílání aplikací a chybových zpráv do
stdout
datového proudu protokolů nebostderror
jejich zobrazení. 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 aby front-endová aplikace byla rozdělená mezi více kontejnerů, nezapomeňte povolit rychlé relace.
Zabezpečení
Modul runtime Container Apps za vás ukončí protokol TLS/SSL v prostředí Container Apps.
Správa paměti
Pokud chcete pomoct optimalizovat správu paměti v aplikaci v Javě, můžete zajistit, aby byla ve vaší aplikaci povolená instalace paměti JVM.
Paměť se měří v gibibajtech (Gi) 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 (Gi) |
---|---|---|
Minimum | 0.25 | 0.5 |
Maximum | 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 pro svou aplikaci kontejneru k dispozici 2,5 Gi paměti.
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í. 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 navržená tak, aby řešila problémy při správě nastavení konfigurace napříč několika mikroslužbami v cloudovém nativním prostředí.
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á různé funkce, jako je filtrování, vyrovnávání zatížení a další.
Admin for Spring: Komponenta admin for Spring managed poskytuje rozhraní pro správu urč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.