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.
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.
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.
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.
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.).
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).
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:
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
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.