I-Quarcus ihlanganisa kanjani uhlelo olubalulekile nolusebenzayo

Kulo nyaka sihlela ukuthuthukisa ama-container themes, Cloud-Native Java и Kubernetes. Ukuqhubeka okunengqondo kwalezi zihloko kuzoba indaba emayelana nohlaka lwe-Quarkus, kakade kucatshangelwe kuHabre. Isihloko sanamuhla sincane mayelana nomklamo "we-subatomic superfast Java" nokunye okwengeziwe mayelana nesithembiso uQuarkus asiletha ku-Enterprise.

I-Quarcus ihlanganisa kanjani uhlelo olubalulekile nolusebenzayo

I-Java ne-JVM zisathandwa kakhulu, kodwa lapho usebenza ngobuchwepheshe obungenasiphakeli kanye nezinsiza ezincane ze-cloud-native, i-Java nezinye izilimi ze-JVM zisetshenziswa kancane kancane ngoba zithatha isikhala esikhulu sememori futhi zihamba kancane ukulayisha, zizenze. ayilungele ukusetshenziswa neziqukathi zesikhashana. Ngenhlanhla, lesi simo manje sesiqala ukushintsha ngenxa ye-Quarkus.

I-Superfast subatomic Java isifinyelele ezingeni elisha!

Ukukhishwa okungu-42, izinyanga eziyi-8 zomsebenzi womphakathi kanye nabathuthukisi abamangalisayo abayi-177 - umphumela wakho konke kwaba ukukhishwa ngoNovemba 2019. I-Quarcus 1.0, ukukhululwa omaka ingqopha-mlando ebalulekile ekuthuthukisweni kwephrojekthi futhi okunikeza izici eziningi ezipholile namandla (ungafunda okwengeziwe ngazo ku isimemezelo).

Namuhla sizokukhombisa ukuthi i-Quarkus iwahlanganisa kanjani amamodeli ezinhlelo abalulekile futhi asebenzayo abe wumongo owodwa osebenzayo. Sizoqala ngomlando omfushane bese singena emininingwaneni mayelana nokuthi iyini i-Quarcus' reactive core dualism futhi kanjani Java-Abathuthukisi bangasebenzisa lezi zinzuzo.

Ama-Microservices, izakhiwo eziqhutshwa umcimbi и serverless-imisebenzi - konke lokhu, njengoba besho, kuyanda namuhla. Muva nje, ukwakhiwa kwezakhiwo ze-cloud-centric sekulula kakhulu futhi kufinyeleleka kalula, kodwa izinkinga zisekhona - ikakhulukazi kubathuthukisi be-Java. Isibonelo, esimweni semisebenzi engenasiphakeli kanye nama-microservices, kunesidingo esiphuthumayo sokunciphisa isikhathi sokuqalisa, ukunciphisa ukusetshenziswa kwememori, futhi nokwenza ukuthuthukiswa kwabo kube lula futhi kujabulise. I-Java yenze ukuthuthuka okuningana eminyakeni yamuva nje, njengokuthuthukiswa kokusebenza kwe-ergonomics yeziqukathi nokunye. Nokho, ukwenza i-Java isebenze kahle esitsheni kuseyinselele. Ngakho-ke sizoqala ngokubheka ezinye zezinto eziyinkimbinkimbi ze-Java, ezibukhali kakhulu lapho kwakhiwa izinhlelo zokusebenza ze-Java ezigxile ku-container.

Okokuqala, ake sibheke umlando.

I-Quarcus ihlanganisa kanjani uhlelo olubalulekile nolusebenzayo

Imifudlana neziqukathi

Iqala ngenguqulo engu-8u131, i-Java yaqala ukusekela iziqukathi eziningi noma ezingaphansi ngenxa yentuthuko yokusebenza kwe-ergonomics. Ikakhulukazi, i-JVM manje isiyazi ukuthi mangaki ama-processor cores esebenza kuwo futhi ingalungiselela amachibi ochungechunge—imvamisa amachibi emfoloko/joyina—ngokuvumelana nalokho. Yebo, lokhu kuhle, kodwa ake sithi sinohlelo lwewebhu oluvamile olusebenzisa amaseva e-HTTP futhi lusebenza ku-Tomcat, Jetty, njll. Ngenxa yalokho, lolu hlelo lokusebenza luzonikeza isicelo ngasinye intambo ehlukile futhi luvumele ukuthi luvimbe lolu chungechunge ngenkathi lulinde imisebenzi ye-I/O, isibonelo, lapho ufinyelela kusizindalwazi, amafayela noma ezinye izinsizakalo. Okusho ukuthi, usayizi wesicelo esinjalo akuxhomekile kwinani lama-cores atholakalayo, kodwa ngenani lezicelo kanyekanye. Ngaphezu kwalokho, lokhu kusho ukuthi ama-quota noma imikhawulo ku-Kubernetes enanini lama-cores ngeke ibe usizo olukhulu lapha, futhi udaba ekugcineni luzophela ngokunyakazisa.

Ukukhathala kwenkumbulo

Imicu iyinkumbulo. Futhi ukulinganiselwa kwenkumbulo ye-intra-container akuyona neze i-panacea. Vele uqale ukwandisa inani lezinhlelo zokusebenza kanye nezintambo, futhi maduze uzobhekana nokwanda okubalulekile ekushintsheni imvamisa futhi, ngenxa yalokho, ukuwohloka kokusebenza. Futhi, uma uhlelo lwakho lokusebenza lusebenzisa izinhlaka ze-microservice evamile, noma luxhuma kusizindalwazi, noma lusebenzisa ukulondoloza isikhashana, noma lisebenzisa inkumbulo, ngokusobala udinga ithuluzi elikuvumela ukuthi ubheke ngaphakathi kwe-JVM futhi ubone ukuthi iyiphatha kanjani inkumbulo ngaphandle kokuyibulala. I-JVM ngokwayo (ngokwesibonelo, XX:+UseCGroupMemoryLimitForHeap). Futhi noma, kusukela ku-Java 9, i-JVM ifunde ukwamukela amaqoqo futhi ivumelane nezimo ngokufanele, ukugcina nokuphatha inkumbulo kuhlala kuyindaba eyinkimbinkimbi.

Izilinganiso kanye nemikhawulo

I-Java 11 yethule ukusekelwa kwe-CPU quotas (njenge-PreferContainerQuotaForCPUCount). I-Kubernetes iphinde inikeze ukwesekwa kwemikhawulo nama-quotas. Yebo, konke lokhu kunengqondo, kodwa uma isicelo siphinda sidlula isabelo esabelwe, siphinde sigcine ngosayizi - njengoba kwenzeka ngezinhlelo zendabuko zeJava - ezinqunywa inani lama-cores kanye nokwabiwa kwentambo ehlukile ngayinye. isicelo, khona-ke kukhona umqondo omncane kukho konke lokhu.
Ngaphezu kwalokho, uma usebenzisa ama-quotas nemikhawulo noma imisebenzi yokukala yesikhulumi esingaphansi kwe-Kubernetes, inkinga nayo ayizixazululi ngokwayo. Simane sisebenzise izinsiza eziningi ekuxazululeni inkinga yasekuqaleni noma sigcine sesisebenzisa imali ngokweqile. Futhi uma kuwuhlelo olunomthwalo omkhulu emafini omphakathi, cishe sigcina sesisebenzisa izinsiza eziningi kunalokho esizidinga ngempela.

Futhi kwenziwani ngakho konke lokhu?

Ukukubeka kalula, sebenzisa imitapo yolwazi ye-I/O engavimbeli nezinhlaka ezifana ne-Netty, Vert.x noma Akka. Zikulungele kangcono ukusebenza ezitsheni ngenxa yemvelo yazo esebenzayo. Ngenxa yokungavimbi i-I/O, uchungechunge olufanayo lungacubungula izicelo eziningi ngasikhathi sinye. Ngenkathi isicelo esisodwa sisalinde imiphumela ye-I/O, ukucutshungulwa kwentambo kuyakhululwa futhi kuthathwe esinye isicelo. Futhi lapho imiphumela ye-I/O ekugcineni ifika, ukucutshungulwa kwesicelo sokuqala kuyaqhubeka. Ngokucutshungulwa kwezicelo okushiyene phakathi kochungechunge olufanayo, unganciphisa inani eliphelele lezintambo futhi wehlise ukusetshenziswa kwensiza ukucubungula izicelo.

Nge-I/O engavimbi, inani lama-cores liba ipharamitha eyinhloko ngoba inquma inani lemicu ye-I/O engenziwa ngokuhambisana. Uma kusetshenziswe ngendlela efanele, lokhu kukuvumela ukuthi usabalalise ngempumelelo umthwalo phakathi kwama-cores futhi uphathe imithwalo ephezulu yokusebenza ngezinsiza ezimbalwa.

Kanjani, konke lokho?

Cha, kukhona okunye. Ukuhlela okusebenzayo kusiza ukusebenzisa kangcono izinsiza, kodwa futhi kuza ngentengo. Ikakhulukazi, ikhodi kuzodingeka ibhalwe kabusha ngokuvumelana nezimiso zokungavimbeli futhi igweme ukuvimbela imicu ye-I/O. Futhi lena imodeli ehluke ngokuphelele yokuthuthukiswa nokwenza. Futhi nakuba kunemitapo yolwazi eminingi ewusizo lapha, kusewushintsho olukhulu endleleni yokucabanga evamile.

Okokuqala, udinga ukufunda ukubhala ikhodi esebenza ngokulinganayo. Uma usuqale ukusebenzisa i-I/O engavimbeli, udinga ukucacisa ngokusobala okufanele kwenzeke uma impendulo yesicelo yamukelwe. Ukumane uvimbele nokulinda ngeke kusasebenza. Esikhundleni salokho, ungadlula ama-callback, usebenzise uhlelo olusebenzayo noma ukuqhubeka. Kodwa akupheleli lapho: ukusebenzisa i-I/O engavimbi, udinga kokubili amaseva angavimbi namaklayenti, okungcono yonke indawo. Endabeni ye-HTTP, konke kulula, kodwa kukhona futhi imininingwane yolwazi, izinhlelo zefayela, nokunye okuningi.

Futhi nakuba ukusebenza kabusha okuphelele kokuphela kuye ekupheleni kukhulisa ukusebenza kahle, ukuguquguquka okunjalo kungaba nzima ukukusebenzisa esiswini. Ngakho-ke, ikhono lokuhlanganisa ikhodi esebenzayo nebalulekile iba yimfuneko ukuze:

  1. Sebenzisa izinsiza ngokuphumelelayo ezindaweni ezilayishwe kakhulu zesistimu yesofthiwe;
  2. Sebenzisa ikhodi yesitayela elula ezingxenyeni zayo ezisele.

Sethula i-Quarcus

Empeleni, lokhu kuwumnyombo we-Quarkus - ukuhlanganisa amamodeli asebenzayo futhi abalulekile ngaphakathi kwendawo eyodwa yesikhathi sokusebenza.

I-Quarkus isekelwe ku-Vert.x naku-Netty, enohlu lwezinhlaka ezisebenzayo nezandiso phezulu ukuze kusizwe unjiniyela. I-Quarkus yakhelwe ukwakha hhayi kuphela ama-microservices e-HTTP, kodwa futhi nezakhiwo eziqhutshwa umcimbi. Ngenxa yemvelo yayo esebenzayo, isebenza ngempumelelo kakhulu ngezinhlelo zokuthumela imiyalezo (i-Apache Kafka, i-AMQP, njll.).

Iqhinga liwukusebenzisa injini efanayo esebenzayo kukho kokubili ikhodi ebalulekile nesebenzayo.

I-Quarcus ihlanganisa kanjani uhlelo olubalulekile nolusebenzayo

I-Quarkus yenza lokhu ngobuhlakani. Ukukhetha phakathi kokubalulekile nokusebenzayo kusobala - sebenzisa i-kernel esebenzayo kukho kokubili. Okusiza ngakho ngempela ikhodi esheshayo, engavimbi ephatha cishe yonke into edlula kuchungechunge lweloop yomcimbi, intambo ye-aka IO. Kodwa uma une-REST yakudala noma izinhlelo zokusebenza eziseceleni kweklayenti, i-Quarkus inemodeli yokuhlela ebalulekile elungile. Isibonelo, usekelo lwe-HTTP ku-Quarkus lusekelwe ekusetshenzisweni kwenjini engavimbeli nesasebenza (i-Eclipse Vert.x ne-Netty). Zonke izicelo ze-HTTP ezitholwe uhlelo lwakho lokusebenza ziqale zidlule ku-loop yomcimbi (IO Thread) bese zithunyelwa engxenyeni yekhodi ephethe izicelo. Ngokuya ngendawo okuyiwa kuyo, ikhodi yokuphatha isicelo ingabizwa ngaphakathi kwentambo ehlukile (okuthiwa intambo yesisebenzi, esetshenziswa esimweni se-servlets ne-Jax-RS) noma sebenzisa intambo ye-I/O yomthombo (umzila osebenzayo).

I-Quarcus ihlanganisa kanjani uhlelo olubalulekile nolusebenzayo

Izixhumi zesistimu yemiyalezo zisebenzisa amaklayenti angavimbi asebenza phezu kwenjini ye-Vert.x. Ngakho-ke, ungathumela ngempumelelo, wamukele futhi usebenze imilayezo evela kumasistimu we-middleware wokuthumela imiyalezo.

Esizeni I-Quarkus.io Nazi ezinye izifundo ezinhle zokukusiza ukuthi uqalise nge-Quarkus:

Siphinde sakha okokufundisa okusebenza ku-inthanethi ukuze sikufundise izici ezihlukahlukene zokuhlela okusebenzayo esipheqululini nje, ayikho i-IDE edingekayo, futhi akudingeki ikhompuyutha. Ungathola lezi zifundo lapha.

Izinsiza Eziwusizo

Izifundo zevidiyo eziyi-10 ku-Quarkus ukuze ujwayelane nesihloko

Njengoba besho kuwebhusayithi I-Quarkus.io, Ama-Quarkus - kuyinto Kubernetes-isitaki se-Java esiqondiswe ngqo, siklanyelwe i-GraalVM ne-OpenJDK HotSpot futhi siqoqwe kusuka kumitapo yolwazi ye-Java ehamba phambili namazinga.

Ukukusiza uqonde isihloko, sikhethe izifundo zevidiyo eziyi-10 ezihlanganisa izici ezahlukahlukene ze-Quarkus nezibonelo zokusetshenziswa kwayo:

1. Sethula i-Quarkus: I-Next Generation Java Framework ye-Kubernetes

NguThomas Qvarnstrom noJason Greene
Umgomo wephrojekthi ye-Quarkus ukwakha inkundla ye-Java ye-Kubernetes kanye nezindawo ezingenaseva, kanye nokuhlanganisa amamodeli wezinhlelo asebenzayo futhi abalulekile endaweni eyodwa yesikhathi sokusebenza ukuze abathuthukisi bakwazi ukushintsha ngendlela eguquguqukayo indlela yabo yokusebenza lapho besebenza ngezinhlobonhlobo zezakhiwo zohlelo lokusebenza ezisabalalisiwe. Thola okwengeziwe esifundweni esingezansi.

2. I-Quarkus: I-Superfast Subatomic Java

Ibhalwe ngu: Burr Sutter
Lesi sifundo sevidiyo esivela ku-DevNation Live sibonisa indlela yokusebenzisa i-Quarkus ukuze kuthuthukiswe izinhlelo zokusebenza ze-Java zebhizinisi, ama-API, ama-microservices, nemisebenzi engenasiphakeli endaweni ye-Kubernetes/OpenShift, okuyenza ibe mancane kakhulu, isheshe, futhi ikhule.

3. I-Quarkus ne-GraalVM: isheshisa i-Hibernate ibe isivinini esikhulu futhi iyancipha ibe osayizi abancane.

Umbhali: Sanne Grinovero
Kusethulo uzofunda ukuthi i-Quarkus yaba khona kanjani, ukuthi isebenza kanjani, nokuthi ikuvumela kanjani ukuthi wenze imitapo yolwazi eyinkimbinkimbi, njenge-Hibernate ORM, ehambisana nezithombe zomdabu ze-GraalVM.

4. Funda ukuthuthukisa izinhlelo zokusebenza ezingenaseva

Umbhali: Martin Luther
Ividiyo engezansi ikhombisa ukuthi ulwakha kanjani uhlelo olulula lwe-Java usebenzisa i-Quarkus futhi ulusebenzise njengohlelo lokusebenza olungenaseva ku-Knative.

5. I-Quarkus: Kujabulele ukubhala amakhodi

Umbhali: Edson Yanaga
Umhlahlandlela wevidiyo wokudala iphrojekthi yakho yokuqala ye-Quarkus, ekuvumela ukuthi uqonde ukuthi kungani i-Quarkus iwina izinhliziyo zonjiniyela.

6. I-Java neziqukathi - ukuthi liyoba yini ikusasa labo ndawonye

Kuthunyelwe nguMark Little
Lesi sethulo sethula umlando we-Java futhi sichaza ukuthi kungani i-Quarkus iyikusasa le-Java.

7. I-Quarkus: I-Superfast Subatomic Java

Umbhali: Dimitris Andreadis
Ukubuka konke kwezinzuzo ze-Quarkus ezithole ukuqashelwa konjiniyela: ubulula, isivinini esiphezulu, amalabhulali angcono kakhulu namazinga.

8. I-Quarkus kanye nezinhlelo zerokhethi ze-subatomic

Umbhali: Clement Escoffier
Ngokuhlanganiswa ne-GraalVM, i-Quarkus inikeza ulwazi lokuthuthuka olushesha kakhulu kanye nemvelo yesikhathi sokusebenza esingaphansi kwe-subatomic. Umbhali ukhuluma ngohlangothi olusebenzayo lwe-Quarkus nokuthi lusetshenziswa kanjani ukwakha izinhlelo zokusebenza ezisebenzayo nezisakazayo.

9. I-Quarkus kanye nokuthuthukiswa kwesicelo esisheshayo ku-Eclipse MicroProfile

Umbhali: John Clingan
Ngokuhlanganisa i-Eclipse MicroProfile kanye ne-Quarkus, onjiniyela bangakha izinhlelo zokusebenza ezifakwe ngokugcwele ze-MicroProfile ezethula ngama-millisecond angamashumi. Ividiyo ingena emininingwaneni yokuthi ungakhoda kanjani isicelo se-MicroProfile esifakwe esitsheni ukuze sisetshenziswe endaweni yesikhulumi se-Kubernetes.

10. Java, "Turbo" version

Umbhali: UMarcus Biel
Umbhali ukhombisa ukuthi isetshenziswa kanjani i-Quarkus ukuze udale iziqukathi ze-Java ezincane kakhulu, ezishesha kakhulu ezivumela ukuphumelela kwangempela, ikakhulukazi ezindaweni ezingenaseva.



Source: www.habr.com

Engeza amazwana