Sprievodca po QuarkusIO

1. Úvod

V dnešnej dobe je veľmi bežné napísať aplikáciu a nasadiť ju do cloudu a nemusíte sa starať o infraštruktúru. Serverless a FaaS sa stali veľmi populárnymi.

V tomto type prostredia, kde sa inštancie vytvárajú a ničia často, je čas zavedenia a čas do prvej žiadosti nesmierne dôležitý, pretože môžu vytvoriť úplne iný používateľský zážitok.

Jazyky ako JavaScript a Python sú v tomto type scenára vždy v centre pozornosti. Inými slovami, Java so svojimi tučnými súbormi JAR a dlhým časom zavádzania nikdy nebola najlepším uchádzačom.

V tomto návode predstavíme Quarkus a prediskutujeme, či je to alternatíva, ako efektívnejšie priviesť Javu do cloudu.

2. QuarkusIO

QuarkusIO, nadzvuková subatomárna java, sľubuje doručenie malých artefaktov, extrémne rýchlu dobu zavádzania a kratšiu dobu od prvého požiadania. V kombinácii s programom GraalVM bude Quarkus zostavovať vopred (AOT).

A keďže Quarkus je postavený na najvyšších štandardoch, nemusíme sa učiť nič nové. V dôsledku toho môžeme okrem iného používať CDI a JAX-RS. Quarkus má tiež veľa rozšírení, vrátane tých, ktoré podporujú Hibernate, Kafka, OpenShift, Kubernetes a Vert.x.

3. Naša prvá aplikácia

Najjednoduchší spôsob, ako vytvoriť nový projekt Quarkus, je otvoriť terminál a napísať:

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

Týmto sa vygeneruje kostra projektu, a HelloResource s /Ahoj vystavený koncový bod, konfigurácia, projekt Maven a súbory Docker.

Po importovaní do nášho IDE budeme mať štruktúru podobnú štruktúre zobrazenej na obrázku nižšie:

Poďme preskúmať obsah HelloResource trieda:

@Path ("/ ahoj") verejná trieda HelloResource {@GET @Produces (MediaType.TEXT_PLAIN) public String ahoj () {návrat "ahoj"; }}

Zatiaľ vyzerá všetko dobre. V tomto okamihu máme jednoduchú aplikáciu s jediným koncovým bodom RESTEasy JAX-RS. Poďme do toho a otestujme to otvorením terminálu a spustením príkazu:

./mvnw kompilovať quarkus: dev:

Náš koncový bod REST by mal byť vystavený na adrese localhost: 8080 / ahoj. Poďme to otestovať pomocou zvlnenie príkaz:

$ curl localhost: 8080 / ahoj ahoj

4. Horúce načítanie

Pri spustení vo vývojovom režime (./mvn kompilovať quarkus: dev), Quarkus poskytuje funkciu opätovného načítania za tepla. Inými slovami, zmeny vykonané v súboroch Java alebo v konfiguračných súboroch sa automaticky vykonajú po obnovení prehľadávača. Najpôsobivejšou vlastnosťou je, že nemusíme ukladať svoje súbory. To môže byť dobré alebo zlé, v závislosti od našich preferencií.

Teraz upravíme náš príklad, aby sme demonštrovali schopnosť opätovného načítania za tepla. Ak je aplikácia zastavená, môžeme ju jednoducho reštartovať v režime dev. Ako východiskový bod použijeme rovnaký príklad ako predtým.

Najskôr vytvoríme a HelloService trieda:

@ApplicationScoped verejná trieda HelloService {public String politeHello (názov reťazca) {návrat "Hello Mr / Mrs" + meno; }}

Teraz upravíme HelloResource triedy, vstrekovanie HelloService a pridanie novej metódy:

@Inject HelloService helloService; @GET @Produces (MediaType.APPLICATION_JSON) @Path ("/ zdvorilý / {name}") verejný pozdrav reťazca (@PathParam ("názov") názov reťazca) {návrat helloService.politeHello (meno); }

Ďalej otestujme náš nový koncový bod:

$ curl localhost: 8080 / ahoj / zdvorilý / Baeldung Dobrý deň pán / pani Baeldung

Urobíme ešte jednu zmenu, aby sme preukázali, že to isté sa dá použiť aj na súbory vlastností. Upravme application.properties súbor a pridajte ešte jeden kľúč:

pozdrav = dobré ráno

Potom upravíme HelloService používať našu novú nehnuteľnosť:

@ConfigProperty (name = "pozdrav") súkromné ​​String pozdrav; public String zdvorilýHello (názov reťazca) {návrat pozdrav + "" + meno; }

Ak vykonáme to isté zvlnenie príkaz, mali by sme teraz vidieť:

Dobré ráno Baeldung

Aplikáciu môžeme ľahko zabaliť spustením:

./mvnw balík 

Týmto sa vo vnútri súboru vygenerujú 2 súbory jar cieľ adresár:

  • quarkus-project-1.0-SNAPSHOT-runner.jar - spustiteľný súbor s kopírovaním závislostí cieľ / lib
  • quarkus-project-1.0-SNAPSHOT.jar - obsahuje triedy a súbory zdrojov

Teraz môžeme spustiť zabalenú aplikáciu:

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

5. Natívny obrázok

Ďalej vytvoríme natívny obraz našej aplikácie. Natívny obrázok zlepší čas spustenia a čas do prvej reakcie. Inými slovami obsahuje všetko, čo je potrebné na spustenie, vrátane minimálneho JVM potrebného na spustenie aplikácie.

Na začiatok musíme mať nainštalovaný program GraalVM a nakonfigurovanú premennú prostredia GRAALVM_HOME.

Teraz aplikáciu zastavíme (Ctrl + C), ak už nie je zastavená, a spustíme príkaz:

./mvnw balík -prirodzený

Dokončenie môže trvať niekoľko sekúnd. Pretože sa natívne obrázky snažia vytvoriť všetok kód AOT, aby sa rýchlejšie zavádzali, vo výsledku budeme mať dlhšie časy na zostavenie.

Môžeme bežať ./mvnw overiť -pôvodné na overenie, či bol náš natívny artefakt správne zostavený:

Po druhé, budeme vytvorte obrázok kontajnera pomocou nášho natívneho spustiteľného súboru. Na to musíme mať v našom stroji spustený runtime kontajnera (t.j. Docker). Poďme otvoriť okno terminálu a vykonať:

./mvnw balík -Pnative -Dnative-image.docker-build = true 

Týmto sa vytvorí 64-bitový spustiteľný súbor systému Linux, takže ak používame iný operačný systém, nemusí byť už spustiteľný. To je zatiaľ v poriadku.

Generácia projektu vytvorila a Dockerfile.native pre nás:

Z FROM registry.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 "] 

Ak súbor preskúmame, máme náznak toho, čo bude nasledovať. Najprv urobíme vytvoriť ukotviteľný obraz:

docker build -f src / main / docker / Dockerfile.native -t quarkus / quarkus-project.

Teraz môžeme kontajner spustiť pomocou:

docker run -i --rm -p 8080: 8080 quarkus / quarkus-project

Kontajner začal v neuveriteľne nízkom čase 0,009 s. To je jedna zo silných stránok Quarkusu.

Nakoniec by sme mali otestovať náš upravený REST na overenie našej aplikácie:

$ curl localhost: 8080 / ahoj / zdvorilý / Baeldung Dobré ráno, Baeldung

6. Nasadenie na OpenShift

Po dokončení lokálneho testovania pomocou Dockeru nasadíme náš kontajner do OpenShift. Za predpokladu, že v našom registri máme obraz Dockeru, môžeme aplikáciu nasadiť podľa nasledujúcich krokov:

oc new-build --binary --name = quarkus-project -l app = quarkus-project oc patch bc / quarkus-project -p '{"spec": {"strategy": {"dockerStrategy": {"dockerfilePath" : "src / main / docker / Dockerfile.native"}}}} 'oc start-build quarkus-project --from-dir =. --follow oc new-app --image-stream = quarkus-project: latest oc expose service quarkus-project

Teraz môžeme získať adresu URL aplikácie spustením:

ok dostať trasu

Nakoniec pristúpime k rovnakému koncovému bodu (všimnite si, že adresa URL sa môže líšiť v závislosti od našej adresy IP):

$ curl //quarkus-project-myproject.192.168.64.2.nip.io/hello/polite/Baeldung Dobré ráno Baeldung

7. Záver

V tomto článku sme demonštrovali, že Quarkus je skvelým doplnkom, ktorý dokáže efektívnejšie priviesť Javu do cloudu. Napríklad je teraz možné predstaviť si Javu na AWS Lambda. Quarkus je tiež založený na štandardoch ako JPA a JAX / RS. Preto sa nemusíme učiť nič nové.

Quarkus v poslednom čase zaujal veľkú pozornosť a každý deň pribúda množstvo nových funkcií. Existuje niekoľko projektov rýchleho spustenia, ktoré nám umožňujú vyskúšať Quarkus v úložisku Quarkus GitHub.

Ako vždy, kód tohto článku je k dispozícii na GitHub. Šťastné programovanie!


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