Java az Azure Container Appsben – áttekintés
Az Azure Container Apps bármilyen tárolóalapú Java-alkalmazást futtathat a felhőben, miközben rugalmas lehetőségeket biztosít az alkalmazások üzembe helyezéséhez.
Ha Tárolóalkalmazásokat használ a tárolóalapú Java-alkalmazásokhoz, a következőt kapja:
Költséghatékony skálázás: A Használat csomag használatakor a Java-alkalmazások nullára méretezhetők. Ha kevés az igény az alkalmazásra, automatikusan csökkennek a projektek költségei.
Üzembe helyezési lehetőségek: Az Azure Container Apps integrálható a Buildpacksszel, amely lehetővé teszi, hogy közvetlenül Egy Maven-buildből, összetevőfájlokon vagy saját Dockerfile-fájlon keresztül telepítsen.
JAR-telepítés (előzetes verzió):: A tárolóalkalmazást közvetlenül jar-fájlból helyezheti üzembe.
WAR-üzembe helyezés (előzetes verzió):: A tárolóalkalmazást közvetlenül egy WAR-fájlból helyezheti üzembe.
IDE-támogatás: A tárolóalkalmazást közvetlenül az IntelliJ-ből telepítheti.
Automatikus memóriaillesztés (előzetes verzió):A Container Apps optimalizálja, hogy a Java virtuális gép (JVM) hogyan kezeli a memóriát, így a lehető legtöbb memória érhető el a Java-alkalmazások számára.
Környezeti változók összeállítása (előzetes verzió): Egyéni kulcs-érték párokat konfigurálhat a Java-rendszerképek forráskódból történő összeállításának szabályozásához.
Ez a cikk részletesen ismerteti a Java-alkalmazások Azure Container Appsen való létrehozása során szükséges információkat.
Üzembehelyezési típusok
A tárolóalapú alkalmazások futtatása általában azt jelenti, hogy létre kell hoznia egy Dockerfile-fájlt az alkalmazáshoz, de a Java-alkalmazások Container Appsen való futtatása néhány lehetőséget kínál.
Típus | Leírás | Buildpacks használata | Dockerfile-t használ |
---|---|---|---|
Forráskód összeállítása | Közvetlenül a Container Appsben telepítheti a forráskódból. | Igen | Nem |
Összetevő összeállítása | Létrehozhat egy Maven-buildet a Container Appsben való üzembe helyezéshez | Igen | Nem |
Dockerfile | Manuálisan is létrehozhatja a Dockerfile-t, és teljes mértékben átveheti az irányítást az üzembe helyezés felett. | Nem | Igen |
Feljegyzés
A Buildpacks üzemelő példányai támogatják a JDK 8., 11., 17. és 21. verzióját.
Alkalmazástípusok
A különböző alkalmazástípusok egyéni tárolóalkalmazásként vagy Container Apps-feladatként implementálhatók. Az alábbi táblázat segítségével eldöntheti, hogy melyik alkalmazástípus a legmegfelelőbb a forgatókönyvhöz.
A táblázatban felsorolt példák nem a teljesség igénye nélkül, hanem a különböző alkalmazástípusok szándékának legjobb megértéséhez szolgálnak.
Típus | Példák | Implementálás... |
---|---|---|
Webalkalmazások és API-végpontok | Spring Boot, Quarkus, Apache Tomcat és Jetty | Egyéni tárolóalkalmazás |
Konzolalkalmazások, ütemezett tevékenységek, feladatfuttatók, kötegelt feladatok | SparkJobs, ETL-feladatok, Spring Batch-feladat, Jenkins-folyamatfeladat | Container Apps-feladat |
Hibakeresés
A Java-alkalmazás Container Appsben való hibakeresése során mindenképpen ellenőrizze a Java folyamatban lévő ügynökét a naplóstreamek és a konzol hibakeresési üzeneteinél.
Hibaelhárítás
A Java-alkalmazások fejlesztése során tartsa szem előtt az alábbi elemeket:
Alapértelmezett erőforrások: Alapértelmezés szerint egy alkalmazás fél processzort és 1 GB-ot kínál.
Állapot nélküli folyamatok: A tárolóalkalmazás be- és kiskálázása során a rendszer új folyamatokat hoz létre és állít le. Ügyeljen arra, hogy előre tervezze, hogy adatokat írjon megosztott tárolókba, például adatbázisokba és fájlrendszer-megosztásokra. Ne számítson arra, hogy a közvetlenül a tároló fájlrendszerére írt fájlok bármely más tároló számára elérhetők lesznek.
A nullára skálázás az alapértelmezett érték: Ha biztosítania kell, hogy az alkalmazás egy vagy több példánya folyamatosan fusson, akkor az igényeinek leginkább megfelelő méretezési szabályt kell meghatároznia.
Váratlan viselkedés: Ha a tárolóalkalmazás nem tud buildelést, indítást vagy futtatásokat végrehajtani, ellenőrizze, hogy az összetevő elérési útja megfelelően van-e beállítva a tárolóban.
A Buildpack támogatási problémái: Ha a Buildpack nem támogatja a függőségeket vagy a Java szükséges verzióját, hozzon létre saját Dockerfile-t az alkalmazás üzembe helyezéséhez. Hivatkozás céljából megtekintheti a minta Dockerfile-fájlt .
SIGTERM- és SIGINT-jelek: Alapértelmezés szerint a JVM kezeli
SIGTERM
ésSIGINT
nem továbbítja azokat az alkalmazásnak, kivéve, ha elfogja ezeket a jeleket, és ennek megfelelően kezeli őket az alkalmazásban. A Container Apps mind aSIGINT
folyamatvezérlést, mindSIGTERM
a folyamatot használja. Ha nem rögzíti ezeket a jeleket, és az alkalmazás váratlanul leáll, elveszítheti ezeket a jeleket, hacsak nem tárolja őket a tárolóban.Hozzáférés a tárolólemezképekhez: Ha az összetevő vagy a forráskód üzembe helyezését az alapértelmezett beállításjegyzékkel együtt használja, akkor nincs közvetlen hozzáférése a tárolólemezképekhez.
Figyelés
Az összes szabványos megfigyelhetőségi eszköz együttműködik a Java-alkalmazással. Amikor a Java-alkalmazásokat a Container Appsen való futtatásra készíti, tartsa szem előtt a következő elemeket:
Metrikák: A Java virtuális gép (JVM) mérőszámai kritikus fontosságúak a Java-alkalmazások állapotának és teljesítményének monitorozásához. Az összegyűjtött adatok betekintést nyújtanak a memóriahasználatba, a szemétgyűjtésbe, a JVM szálszámába. A metrikákat ellenőrizheti az alkalmazások állapotának és stabilitásának biztosítása érdekében.
Naplózás: Alkalmazás és hibaüzenetek küldése a
stdout
stderror
naplóstreamben való felületre vagy annak érdekében, hogy azok felszínre lépjenek. Kerülje a közvetlen naplózást a tároló fájlrendszerére, ahogyan az gyakori a népszerű naplózási szolgáltatások használatakor.Teljesítményfigyelési konfiguráció: A teljesítményfigyelő szolgáltatásokat külön tárolóként helyezheti üzembe a Container Apps-környezetben, hogy közvetlenül hozzáférhessen az alkalmazáshoz.
Diagnosztika
Az Azure Container Apps beépített diagnosztikai eszközöket kínál kizárólag Java-fejlesztőknek. Ez a támogatás leegyszerűsíti az Azure Container Appsben futó Java-alkalmazások hibakeresését és hibaelhárítását a hatékonyabb és egyszerűbb használat érdekében.
- Dinamikus naplózói szint: Lehetővé teszi a különböző szintű naplóadatok elérését és ellenőrzését kódmódosítások nélkül, vagy az alkalmazás újraindítására kényszerítve. A dinamikus naplózószint beállítása hivatkozás céljából megtekinthető.
Méretezés
Ha meg kell győződnie arról, hogy az előtérbeli alkalmazások kérelmei ugyanarra a kiszolgálóra érkeznek, vagy az előtéralkalmazás több tároló között van elosztva, engedélyezze a ragadós munkameneteket.
Biztonság
A Container Apps-futtatókörnyezet leállítja a TLS/SSL protokollt a Container Apps-környezetben.
Memóriakezelés
A Java-alkalmazásban a memóriakezelés optimalizálásához biztosíthatja, hogy a JVM-memóriaillesztés engedélyezve legyen az alkalmazásban.
A memória gibibájtban (Gi) és CPU-magpárokban van megmérve. Az alábbi táblázat a tárolóalkalmazás számára elérhető erőforrások tartományát mutatja be.
Küszöbérték | Processzormagok | Memória Gibibyte-ben (Gi) |
---|---|---|
Minimum | 0,25 | 0,5 |
Maximum | 4 | 8 |
A magok 0,25 magos növekményekben érhetők el, a memória pedig 2:1 arányban érhető el. Ha például 1,25 magra van szüksége, 2,5 Gi memóriával rendelkezik a tárolóalkalmazás számára.
Feljegyzés
A JDK 9- és alacsonyabb verzióját használó alkalmazások esetében mindenképpen adjon meg egyéni JVM-memóriabeállításokat az Azure Container Apps memóriafoglalásának megfelelően.
Java-összetevők támogatása
Az Azure Container Apps a következő Java-összetevőket támogatja felügyelt szolgáltatásként:
Az Eureka Server for Spring: Szolgáltatásregisztráció és -felderítés kulcsfontosságú követelmények az élő alkalmazáspéldányok listájának fenntartásához. Az alkalmazás ezt a listát használja a bejövő kérések útválasztásához és terheléselosztásához. Az egyes ügyfelek manuális konfigurálása időt vesz igénybe, és emberi hiba lehetőségét eredményezi. Az Eureka Server leegyszerűsíti a szolgáltatásfelderítés kezelését azáltal, hogy szolgáltatásregisztrációs adatbázisként működik, ahol a mikroszolgáltatások regisztrálhatják magukat, és felfedezhetnek más szolgáltatásokat a rendszeren belül.
A Config Server for Spring: Config Server központosított külső konfigurációkezelést biztosít az elosztott rendszerekhez. Ez az összetevő úgy lett kialakítva, hogy kezelje a konfigurációs beállítások kezelésének kihívásait egy natív felhőbeli környezetben több mikroszolgáltatásban .
A Gateway for Spring: Gateway for Spring hatékony és hatékony módszert kínál az API-kérések irányítására, kezelésére és kezelésére egy mikroszolgáltatás-architektúra részeként. API-átjáróként szolgál, amely a külső kéréseket különböző szolgáltatásokhoz irányítja, és különböző képességeket, például szűrést, terheléselosztást és egyebeket ad hozzá.
Rendszergazda a Springhez: A Spring-felügyelet által felügyelt összetevő felügyeleti felületet biztosít az olyan Spring Boot-webalkalmazásokhoz, amelyek működtető végpontokkal rendelkeznek. A felügyelt összetevők integrációt és felügyeletet biztosítanak a tárolóalkalmazáshoz, lehetővé téve, hogy a tárolóalkalmazást a Spring-rendszergazda összetevőhöz kösse.