Útmutató a QuarkusIO-hoz

1. Bemutatkozás

Manapság nagyon gyakori, hogy alkalmazást írunk és felhőbe telepítjük, és nem aggódunk az infrastruktúra miatt. A kiszolgáló nélküli és a FaaS nagyon népszerűvé vált.

Ebben a típusú környezetben, ahol a példányokat gyakran létrehozzák és megsemmisítik, az indítás ideje és az első kérés ideje rendkívül fontos, mivel teljesen más felhasználói élményt teremthetnek.

A JavaScript és a Python nyelvek mindig reflektorfénybe kerülnek az ilyen típusú forgatókönyvekben. Más szavakkal, a Java kövér JAR-jaival és hosszú indítási idejével soha nem volt elsőszámú versenyző.

Ebben az oktatóanyagban bemutatjuk a Quarkust, és megvitatjuk, hogy ez egy alternatíva a Java hatékonyabb felhőbe juttatásához.

2. QuarkusIO

QuarkusIO, a szuperszonikus szubatomi Java, ígéri, hogy apró műtárgyakat, rendkívül gyors indítási időt és alacsonyabb, az első kérésig mért időt biztosít. A GraalVM-mel kombinálva a Quarkus idő előtt összeállítja az AOT-t.

És mivel a Quarkus a szabványok csúcsára épül, nem kell újat tanulnunk. Következésképpen használhatjuk többek között a CDI-t és a JAX-RS-t is. A Quarkusnak rengeteg kiterjesztése van, köztük a Hibernate, a Kafka, az OpenShift, a Kubernetes és a Vert.x.

3. Első alkalmazásunk

Az új Quarkus projekt létrehozásának legegyszerűbb módja a terminál megnyitása és a gépelés:

mvn io.quarkus: quarkus-maven-plugin: 0.13.1: create \ -DprojectGroupId = com.baeldung.quarkus \ -DprojectArtifactId = quarkus-project \ -DclassName = "com.baeldung.quarkus.HelloResource" \ -Dpath = " /Helló"

Ez létrehozza a projekt csontvázat, a HelloResource val,-vel /Helló exponált végpont, konfiguráció, Maven-projekt és Dockerfiles.

Az IDE-be történő importálás után az alábbi képen látható struktúrához hasonló lesz:

Vizsgáljuk meg a HelloResource osztály:

@Path ("/ hello") public class HelloResource {@GET @Produces (MediaType.TEXT_PLAIN) public String hello () {return "hello"; }}

Eddig minden jól néz ki. Ezen a ponton van egy egyszerű alkalmazásunk, egyetlen RESTEasy JAX-RS végponttal. Menjünk előre, és teszteljük a terminál megnyitásával és a parancs futtatásával:

./mvnw quarkus összeállítása: dev:

A REST végpontunkat a localhoston kell kitenni: 8080 / hello. Teszteljük a becsavar parancs:

$ curl localhost: 8080 / hello hello

4. Forró újratöltés

Fejlesztési módban (./mvn összeállítja a kvarkuszt: dev), A Quarkus gyors újratöltési lehetőséget biztosít. Más szavakkal, A Java fájlokban vagy a konfigurációs fájlokban végrehajtott módosítások a böngésző frissítése után automatikusan összeállnak. A legimpozánsabb tulajdonság itt az, hogy nem kell mentenünk a fájljainkat. Ez lehet jó vagy rossz, preferenciánktól függően.

Most módosítjuk a példánkat, hogy bemutassuk a gyors újratöltési képességet. Ha az alkalmazás le van állítva, egyszerűen újraindíthatjuk dev módban. Kiindulópontként ugyanazt a példát fogjuk használni, mint korábban.

Először létrehozunk egy HelloService osztály:

@ApplicationScoped public class HelloService {public String politeHello (String name) {return "Hello Mr / Mrs" + név; }}

Most módosítjuk a HelloResource osztály, injektálva a HelloService és új módszer hozzáadása:

@ Injekció HelloService helloService; @GET @Produces (MediaType.APPLICATION_JSON) @Path ("/ udvarias / {name}") nyilvános String üdvözlet (@PathParam ("név") String neve) {return helloService.politeHello (név); }

Ezután teszteljük az új végpontunkat:

$ curl localhost: 8080 / hello / udvarias / Baeldung Hello Mr. / Mrs Baeldung

Még egy változtatást végrehajtunk annak bizonyítására, hogy ugyanez alkalmazható a tulajdonfájlokra is. Szerkesszük a alkalmazás.tulajdonságok fájlt, és adjon hozzá még egy kulcsot:

üdvözlet = Jó reggelt

Ezt követően módosítjuk a HelloService új ingatlanunk használatához:

@ConfigProperty (név = "üdvözlet") privát String üdvözlet; public String udvariasSzia (karakterlánc neve) {visszatérő üdvözlet + "" + név; }

Ha ugyanezt hajtjuk végre becsavar parancsot, most látnunk kell:

Jó reggelt Baeldung

Könnyen csomagolhatjuk az alkalmazást a futtatással:

./mvnw csomag 

Ez 2 jar fájlt generál a cél Könyvtár:

  • quarkus-project-1.0-SNAPSHOT-runner.jar - egy futtatható jar a másolt függőségekkel cél / lib
  • quarkus-project-1.0-SNAPSHOT.jar - osztályokat és erőforrás fájlokat tartalmaz

Most már futtathatjuk a csomagolt alkalmazást:

java -jar target / quarkus-project-1.0-SNAPSHOT-runner.jar

5. Natív kép

Ezután elkészítjük az alkalmazás natív képét. A natív kép javítja az indítási időt és az első válaszig eltelt időt. Más szóval azt mindent tartalmaz, ami a futtatásához szükséges, beleértve az alkalmazás futtatásához szükséges minimális JVM-et is.

Először is telepítenünk kell a GraalVM-et és konfigurálni kell a GRAALVM_HOME környezeti változót.

Most leállítjuk az alkalmazást (Ctrl + C), ha még nem állítottuk meg, és futtatjuk a parancsot:

./mvnw csomag -Natív

Ez néhány másodpercet igénybe vehet. Mivel a natív képek megpróbálják létrehozni az összes AOT kódot a gyorsabb indításhoz, ennek eredményeként hosszabb építési időkkel rendelkezünk.

Futhatunk ./mvnw ellenőrizze -Natív annak igazolása, hogy a bennünk lévő műtárgy megfelelően felépült:

Másodszor, megtesszük hozzon létre egy tároló képet a natív futtatható fájlunk segítségével. Ehhez rendelkeznünk kell egy gépünkön futó konténer futással (azaz Docker-rel). Nyissunk meg egy terminálablakot és hajtsuk végre:

./mvnw csomag -Pnative -Dnative-image.docker-build = true 

Ez létrehoz egy Linux 64 bites futtatható fájlt, ezért ha más operációs rendszert használunk, akkor előfordulhat, hogy ez már nem futtatható. Ez egyelőre rendben van.

A projektgenerálás létrehozta a Dockerfile.hative nekünk:

FROM register.fedoraproject.org/fedora-minimal WORKDIR / work / COPY target / * - runner / work / application RUN chmod 775 / work EXPOSE 8080 CMD ["./application", "-Dquarkus.http.host = 0.0.0.0 "] 

Ha megvizsgáljuk a fájlt, van egy tippünk arra, hogy mi következik. Először is hozz létre dokkoló képet:

docker build -f src / main / docker / Dockerfile.native -t kvarkusz / kvarkusz-projekt.

Most futtathatjuk a tárolót a következők használatával:

dokkoló futás -i --rm -p 8080: 8080 quarkus / quarkus-project

A konténer hihetetlenül alacsony, 0,009 másodperc alatt indult. Ez a Quarkus egyik erőssége.

Végül tesztelnünk kell módosított REST-jünket alkalmazásunk érvényesítéséhez:

$ curl localhost: 8080 / hello / udvarias / Baeldung Jó reggelt Baeldung

6. Telepítés az OpenShift programba

Miután befejeztük a helyi tesztelést a Docker használatával, telepítjük tárolónkat az OpenShift alkalmazásba. Feltéve, hogy a nyilvántartásunkban van a Docker-kép, az alábbi lépéseket követve telepíthetjük az alkalmazást:

oc new-build - bináris --name = quarkus-project -l app = quarkus-project oc patch bc / quarkus-project -p '{"spec": {"stratégia": {"dockerStrategy": {"dockerfilePath" : "src / main / docker / Dockerfile.native"}}}} 'oc-start quarkus-project --from-dir =. --follow oc new-app --image-stream = quarkus-project: a legújabb oc expose szolgáltatás quarkus-project

Most a következő futtatással kaphatjuk meg az alkalmazás URL-jét:

oc kap útvonalat

Végül ugyanazt a végpontot fogjuk elérni (vegye figyelembe, hogy az URL az IP-címünktől függően eltérő lehet):

$ curl //quarkus-project-myproject.192.168.64.2.nip.io/hello/polite/Baeldung Jó reggelt Baeldung

7. Következtetés

Ebben a cikkben bemutattuk, hogy a Quarkus egy nagyszerű kiegészítő, amely hatékonyabban képes a Java felhőbe juttatására. Például most elképzelhető a Java az AWS Lambda-n. A Quarkus olyan szabványokon alapul, mint a JPA és a JAX / RS. Ezért nem kell semmi újat megtanulnunk.

A Quarkus az utóbbi időben nagy figyelmet kapott, és minden nap rengeteg új funkcióval bővül. Számos gyorsindítási projekt létezik, amelyekkel kipróbálhatjuk a Quarkust a Quarkus GitHub tárházban.

Mint mindig, a cikk kódja is elérhető a GitHubon. Boldog kódolást!


$config[zx-auto] not found$config[zx-overlay] not found