Momwe Quarkus amaphatikizira mapulogalamu ofunikira komanso othandizira

Chaka chino tikukonzekera kukhazikitsa mitu yamakontena, Cloud-Native Java ΠΈ Kubernetes. Kupitiliza koyenera kwa mitu iyi kudzakhala nkhani yokhudza Quarks framework, kale amaganiziridwa pa Habre. Nkhani ya lero ndi yochepa ponena za mapangidwe a "subatomic superfast Java" komanso zambiri za lonjezo limene Quarkus amabweretsa ku Enterprise.

Momwe Quarkus amaphatikizira mapulogalamu ofunikira komanso othandizira

Java ndi JVM zikadali zodziwika kwambiri, koma pogwira ntchito ndiukadaulo wopanda seva ndi ma microservices amtundu wamtambo, Java ndi zilankhulo zina za JVM zimagwiritsidwa ntchito pang'onopang'ono chifukwa zimatenga malo okumbukira kwambiri ndipo zimachedwa kutsitsa, kuzipanga. zosayenera kugwiritsidwa ntchito ndi zotengera zosakhalitsa. Mwamwayi, izi tsopano zikuyamba kusintha chifukwa cha Quarkus.

Superfast subatomic Java yafika pamlingo watsopano!

42 kutulutsidwa, miyezi 8 yantchito za anthu ammudzi ndi opanga 177 odabwitsa - zotsatira zake zonse zidatulutsidwa mu Novembala 2019. Quark 1.0, kumasulidwa komwe kumasonyeza gawo lofunika kwambiri pa chitukuko cha polojekitiyi ndipo kumapereka zinthu zambiri zabwino ndi luso (mutha kuwerenga zambiri za iwo mu kulengeza).

Lero tikuwonetsani momwe Quarkus amaphatikizira mitundu yofunikira komanso yosinthika kukhala maziko amodzi. Tiyamba ndi mbiri yachidule kenako ndikufotokozera mwatsatanetsatane za zomwe Quarkus 'reactive core dualism ndi Java-Madivelopa atha kupezerapo mwayi pamapinduwa.

Microservices, Zomangamanga zoyendetsedwa ndi zochitika ΠΈ serverless-ntchito - zonsezi, monga akunena, zikukwera lero. Posachedwapa, kupanga mapangidwe amtambo-centric kwakhala kosavuta komanso kosavuta, koma mavuto amakhalabe - makamaka kwa opanga Java. Mwachitsanzo, pankhani ya ntchito zopanda seva ndi ma microservices, pakufunika mwachangu kuchepetsa nthawi yoyambira, kuchepetsa kukumbukira kukumbukira, ndikupangitsanso kukula kwawo kukhala kosavuta komanso kosangalatsa. Java yasintha kangapo m'zaka zaposachedwa, monga kuwongolera magwiridwe antchito a ergonomics pazotengera ndi zina. Komabe, kupeza Java kuti igwire ntchito bwino mu chidebe kumakhalabe kovuta. Chifukwa chake tiyamba ndikuwona zovuta zina za Java, zomwe zimakhala zovuta kwambiri popanga mapulogalamu a Java omwe ali ndi chidebe.

Choyamba, tiyeni tione mbiri yakale.

Momwe Quarkus amaphatikizira mapulogalamu ofunikira komanso othandizira

Mitsinje ndi zotengera

Kuyambira ndi mtundu wa 8u131, Java idayamba kuthandizira zotengera zambiri chifukwa chakusintha kwa magwiridwe antchito a ergonomics. Makamaka, JVM tsopano ikudziwa kuchuluka kwa ma processor cores yomwe ikuyendetsa ndipo imatha kukonza maiwe a ulusi - omwe nthawi zambiri amakhala mafoloko / ophatikizana - motere. Zachidziwikire, izi ndizabwino, koma tinene kuti tili ndi tsamba lawebusayiti lomwe limagwiritsa ntchito ma seva a HTTP ndikuyendetsa ku Tomcat, Jetty, ndi zina. Zotsatira zake, pulogalamuyi ipereka pempho lililonse ulusi wosiyana ndikulola kuti itseke ulusi uwu podikirira ntchito za I / O, mwachitsanzo, mukamalowa mu database, mafayilo kapena mautumiki ena. Ndiko kuti, kukula kwa ntchito yotere sikudalira kuchuluka kwa ma cores omwe alipo, koma pa chiwerengero cha zopempha panthawi imodzi. Kuphatikiza apo, izi zikutanthauza kuti ma quotas kapena malire ku Kubernetes pa kuchuluka kwa ma cores sangakhale othandiza kwambiri pano, ndipo nkhaniyi pamapeto pake idzatha.

Kutopa kwa kukumbukira

Ulusi ndi kukumbukira. Ndipo kulephera kukumbukira ma intra-container si njira yothetsera vuto. Ingoyambani kuonjezera chiwerengero cha mapulogalamu ndi ulusi, ndipo posachedwa mudzakumana ndi kuwonjezeka kwakukulu kwa kusintha kwafupipafupi ndipo, chifukwa chake, kuwonongeka kwa ntchito. Komanso, ngati pulogalamu yanu imagwiritsa ntchito machitidwe amtundu wa microservice, kapena kulumikiza ku database, kapena kugwiritsa ntchito caching, kapena kugwiritsa ntchito kukumbukira, mwachiwonekere mukufunikira chida chomwe chimakulolani kuti muyang'ane mkati mwa JVM ndikuwona momwe imasamalira kukumbukira popanda kuipha. JVM yokha (mwachitsanzo, XX:+UseCGroupMemoryLimitForHeap). Ndipo ngakhale, kuyambira Java 9, JVM yaphunzira kuvomereza magulu ndikusintha moyenera, kusunga ndikuwongolera kukumbukira kumakhalabe nkhani yovuta.

Quotas ndi malire

Java 11 idayambitsa chithandizo cha ma CPU quotas (monga PreferContainerQuotaForCPUCount). Kubernetes imaperekanso chithandizo cha malire ndi ma quotas. Inde, zonsezi ndi zomveka, koma ngati ntchitoyo idutsanso gawo lomwe laperekedwa, timakhalanso ndi kukula kwake - monga momwe zilili ndi machitidwe a Java achikhalidwe - otsimikiziridwa ndi chiwerengero cha ma cores ndi kugawa kwa ulusi wina uliwonse. pempho, ndiye palibe nzeru mu zonsezi.
Kuphatikiza apo, ngati mugwiritsa ntchito ma quotas ndi malire kapena magwiridwe antchito a nsanja yomwe ili pansi pa Kubernetes, vuto silidzithetsa lokha. Timangowononga ndalama zambiri pothana ndi vuto loyambalo kapena kuwononga ndalama mopambanitsa. Ndipo ngati ndi dongosolo lodzaza kwambiri pamtambo wapagulu, timakhala tikugwiritsa ntchito zinthu zambiri kuposa zomwe timafunikira.

Ndipo chochita ndi zonsezi?

Kunena mwachidule, gwiritsani ntchito malaibulale a I/O osatsekereza komanso osatsekereza ngati Netty, Vert.x kapena Aka. Ndizoyenera kwambiri kugwira ntchito m'mitsuko chifukwa cha kukhazikika kwawo. Chifukwa chosatsekereza I/O, ulusi womwewo ukhoza kukonza zopempha zingapo nthawi imodzi. Pomwe pempho limodzi likudikirira zotsatira za I / O, ulusi wokonza ulusi umatulutsidwa ndikutengedwa ndi pempho lina. Ndipo zotsatira za I/O zikafika, kukonza kwa pempho loyamba kumapitilira. Pakukonza zofunsira zolumikizana mkati mwa ulusi womwewo, mutha kuchepetsa kuchuluka kwa ulusi ndikuchepetsa kugwiritsidwa ntchito kwazinthu pokonza zopempha.

Ndi I / O yosatsekereza, kuchuluka kwa ma cores kumakhala kofunikira chifukwa kumatsimikizira kuchuluka kwa ulusi wa I / O womwe utha kuchitidwa mofanana. Mukagwiritsidwa ntchito moyenera, izi zimakupatsani mwayi wogawa bwino katundu pakati pa ma cores ndikugwira ntchito zapamwamba zokhala ndi zinthu zochepa.

Motani, zonsezo?

Ayi, pali china chake. Mapulogalamu okhazikika amathandizira kugwiritsa ntchito bwino zinthu, komanso amabwera pamtengo. Makamaka, code iyenera kulembedwanso molingana ndi mfundo zosatsekereza ndikupewa kutsekereza ulusi wa I / O. Ndipo ichi ndi chitsanzo chosiyana kwambiri cha chitukuko ndi kuphedwa. Ndipo ngakhale pali malaibulale ambiri othandiza pano, akadali kusintha kwakukulu pamaganizidwe anthawi zonse.

Choyamba, muyenera kuphunzira kulemba kachidindo kamene kamayendera asynchronously. Mukangoyamba kugwiritsa ntchito I / O yosatsekereza, muyenera kufotokoza momveka bwino zomwe ziyenera kuchitika pamene yankho la pempho likulandiridwa. Kungotsekereza ndikudikirira sikudzagwiranso ntchito. M'malo mwake, mutha kupitilira kuyimba foni, kugwiritsa ntchito mapulogalamu okhazikika kapena kupitiliza. Koma si zokhazo: kugwiritsa ntchito osatsekereza I/O, mumafunika ma seva osatsekereza ndi makasitomala, makamaka kulikonse. Pankhani ya HTTP, chilichonse ndi chosavuta, koma palinso ma database, mafayilo amafayilo, ndi zina zambiri.

Ndipo ngakhale reactivity yomaliza mpaka-mapeto imakulitsa magwiridwe antchito, kusintha kotereku kumatha kukhala kovuta kuchita. Chifukwa chake, kuthekera kophatikiza code yokhazikika komanso yofunikira kumakhala kofunikira kuti:

  1. Kugwiritsa ntchito moyenera zinthu m'malo odzaza kwambiri ndi pulogalamu yamapulogalamu;
  2. Gwiritsani ntchito zilembo zosavuta m'magawo ake otsala.

Kuyambitsa Quarkus

Kwenikweni, ichi ndiye chofunikira cha Quarkus - kuphatikiza mitundu yokhazikika komanso yofunikira mkati mwamalo amodzi othamanga.

Quarkus imachokera ku Vert.x ndi Netty, yokhala ndi machitidwe osinthika komanso zowonjezera pamwamba kuti zithandizire wopanga mapulogalamu. Quarkus idapangidwa kuti imangopanga ma microservices a HTTP okha, komanso zomangamanga zoyendetsedwa ndi zochitika. Chifukwa cha chikhalidwe chake chokhazikika, chimagwira ntchito bwino ndi mauthenga a mauthenga (Apache Kafka, AMQP, etc.).

Chinyengo ndi momwe mungagwiritsire ntchito injini yokhazikika yofananira pamakhodi ofunikira komanso okhazikika.

Momwe Quarkus amaphatikizira mapulogalamu ofunikira komanso othandizira

Quarkus amachita izi mwanzeru. Kusankha pakati pa zofunika ndi kuchitapo kanthu ndizodziwikiratu - gwiritsani ntchito kernel yokhazikika pa zonse ziwiri. Chomwe chimathandiza nacho ndi nambala yachangu, yosatsekereza yomwe imagwira pafupifupi chilichonse chomwe chimadutsa ulusi wa loop, aka IO ulusi. Koma ngati muli ndi REST yapamwamba kapena mapulogalamu a kasitomala, Quarkus ali ndi pulogalamu yofunikira yokonzekera. Mwachitsanzo, chithandizo cha HTTP ku Quarkus chimachokera pakugwiritsa ntchito injini yosatsekereza komanso yokhazikika (Eclipse Vert.x ndi Netty). Zopempha zonse za HTTP zomwe mwalandira ndi pulogalamu yanu zimadutsa pamwambo wa zochitika (IO Thread) kenako zimatumizidwa kugawo la code yomwe imayang'anira zopemphazo. Kutengera komwe mukupita, nambala yoyang'anira pempho imatha kuyitanidwa mkati mwa ulusi wosiyana (womwe umatchedwa ulusi wogwira ntchito, womwe umagwiritsidwa ntchito ngati servlets ndi Jax-RS) kapena gwiritsani ntchito ulusi wa I / O (njira yokhazikika).

Momwe Quarkus amaphatikizira mapulogalamu ofunikira komanso othandizira

Zolumikizira zotumizira mauthenga zimagwiritsa ntchito makasitomala osatsekereza omwe akuyenda pamwamba pa injini ya Vert.x. Choncho, mukhoza kutumiza, kulandira ndi kukonza mauthenga kuchokera ku mauthenga apakati pa mauthenga.

Pamalo Quarkus.io Nawa maphunziro ena abwino okuthandizani kuti muyambe ndi Quarkus:

Tapanganso maphunziro apaintaneti kuti akuphunzitseni mbali zosiyanasiyana zamapulogalamu mumsakatuli chabe, osafunikira IDE, komanso makompyuta osafunikira. Mutha kupeza maphunziro awa apa.

Zothandiza

Maphunziro 10 a kanema pa Quarkus kuti adziwe bwino mutuwo

Monga akunena pa webusaitiyi Quarkus.io, quarkus - ndi Kubernetes-zolowera Java stack, yopangidwira GraalVM ndi OpenJDK HotSpot ndipo idasonkhanitsidwa kuchokera ku malaibulale abwino kwambiri a Java ndi miyezo.

Kuti tikuthandizeni kumvetsetsa mutuwu, tasankha maphunziro 10 a kanema omwe amakhudza mbali zosiyanasiyana za Quarkus ndi zitsanzo za ntchito yake:

1. Kuyambitsa Quarkus: The Next Generation Java Framework for Kubernetes

Wolemba Thomas Qvarnstrom ndi Jason Greene
Cholinga cha pulojekiti ya Quarkus ndikupanga nsanja ya Java ya Kubernetes ndi malo opanda seva, ndikuphatikiza mitundu yokhazikika komanso yofunikira kuti ikhale malo amodzi othamanga kuti opanga athe kusinthasintha njira zawo pogwira ntchito ndi mitundu ingapo yamapangidwe ogwiritsira ntchito. Dziwani zambiri m'nkhani yoyambira pansipa.

2. Quarkus: Superfast Subatomic Java

Wolemba: Burr Sutter
Kanemayu wamaphunziro a DevNation Live akuwonetsa momwe angagwiritsire ntchito Quarkus kukhathamiritsa ma Java applications, APIs, microservices, ndi ntchito zopanda ma seva pamalo a Kubernetes/OpenShift, kuwapangitsa kukhala ang'onoang'ono, mwachangu, komanso owopsa.

3. Quarkus ndi GraalVM: kufulumizitsa Hibernate kuti ikhale yothamanga kwambiri ndikuyichepetsa mpaka kukula kwake

Wolemba: Sanne Grinovero
Kuchokera pawonetsero muphunzira momwe Quarkus idakhalira, momwe imagwirira ntchito, komanso momwe imakulolani kupanga malaibulale ovuta, monga Hibernate ORM, ogwirizana ndi zithunzi zaku GraalVM.

4. Phunzirani kupanga mapulogalamu opanda seva

Wolemba: Martin Luther
Kanemayo pansipa akuwonetsa momwe mungapangire pulogalamu yosavuta ya Java pogwiritsa ntchito Quarkus ndikuyiyika ngati pulogalamu yopanda seva pa Knative.

5. Quarkus: Sangalalani ndi zolemba

Wolemba: Edson Yanaga
Kalozera wamakanema kuti mupange polojekiti yanu yoyamba ya Quarkus, kukulolani kuti mumvetsetse chifukwa chomwe Quarkus ikupambana mitima ya opanga.

6. Java ndi zotengera - tsogolo lawo limodzi lidzakhala lotani

Wolemba Mark Little
Chiwonetserochi chikuwonetsa mbiri ya Java ndikufotokozera chifukwa chake Quarkus ndi tsogolo la Java.

7. Quarkus: Superfast Subatomic Java

Wolemba: Dimitris Andreadis
Chidule cha zabwino za Quarkus zomwe zalandilidwa kuchokera kwa opanga: kuphweka, kuthamanga kwambiri, malaibulale abwino kwambiri ndi miyezo.

8. Quarks ndi makina a rocket a subatomic

Wolemba: Clement Escoffier
Kupyolera mu kuphatikiza ndi GraalVM, Quarkus imapereka chidziwitso chachitukuko chofulumira kwambiri komanso malo othamanga kwambiri. Wolembayo amalankhula za mbali yogwira ntchito ya Quarkus ndi momwe angagwiritsire ntchito kuti apange mapulogalamu osinthika komanso osakira.

9. Quarkus ndi chitukuko chofulumira cha ntchito mu Eclipse MicroProfile

Wolemba: John Clingan
Pophatikiza Eclipse MicroProfile ndi Quarkus, opanga amatha kupanga mapulogalamu a MicroProfile okhala ndi zonse zomwe zimayambira mu ma milliseconds. Kanemayo amafotokoza mwatsatanetsatane momwe mungayikitsire pulogalamu ya MicroProfile yosungidwa kuti itumizidwe papulatifomu ya Kubernetes.

10. Java, "Turbo" version

Wolemba: Marcus Biel
Wolembayo akuwonetsa momwe angagwiritsire ntchito Quarkus kupanga zida zazing'ono, zothamanga kwambiri za Java zomwe zimathandizira kuti zipambane zenizeni, makamaka m'malo opanda seva.



Source: www.habr.com

Kuwonjezera ndemanga