Sidee Quarkus isugu daraa barnaamijka lama huraanka ah iyo falcelinta

Sannadkan waxaan qorsheyneynaa inaan si dhab ah u horumarino mawduucyada weelasha, Cloud-Native Java ΠΈ Kubureteska. Sii wadida macquulka ah ee mawduucyadani waxay noqon doontaa sheeko ku saabsan qaabka Quarkus, horeba tixgelin ku Habre. Maqaalka maanta wuu ka yar yahay naqshadeynta "subatomic superfast Java" iyo wax badan oo ku saabsan ballan qaadka Quarkus u keenayo Enterprise.

Sidee Quarkus isugu daraa barnaamijka lama huraanka ah iyo falcelinta

Java iyo JVM-yadu wali aad bay caan u yihiin, laakiin marka ay la shaqeeyaan teknoolojiyadda server-la'aanta ah iyo microservices-ka daruuriga ah, Java iyo luqadaha kale ee JVM waxaa loo adeegsadaa wax yar iyo ka yar sababtoo ah waxay qaataan meelo badan oo xusuusta ah waxayna aad u gaabiyaan inay rartaan, iyaga oo ka dhigaya. si liidata ugu habboon isticmaalka weelasha wakhtiga gaaban. Nasiib wanaag, xaaladdan hadda waxay bilaabeysaa inay isbedesho iyada oo ay ugu wacan tahay Quarkus.

Superfast subatomic Java waxay gaadhay heer cusub!

42 sii dayn, 8 bilood oo shaqo bulsho ah iyo 177 horumariyeyaal yaab leh - natiijadii ka soo baxday waxaas oo dhan waxay ahayd siideynta Noofembar 2019 Quarcus 1.0, sii daayo calaamad muhiim u ah horumarinta mashruuca oo bixiya wax badan oo ka mid ah sifooyin qabow iyo awood (wax badan oo iyaga ku saabsan waxaad ka akhrisan kartaa in ogeysiis).

Maanta waxaan ku tusi doonaa sida Quarkus uu isugu daro moodooyinka barmaamijyada lama huraanka ah iyo kuwa falcelinta leh ee hal xudun u ah. Waxaan ku bilaabi doonaa taariikh kooban ka dibna si faahfaahsan u gali doonaa waxa Quarkus 'dualism-ka falcelinta u yahay iyo sida Java- horumariyayaashu waxay ka faa'iidaysan karaan faa'iidooyinkan.

Adeegyada yaryar, Architectures kaxeeyey dhacdo ΠΈ serverless-functions - waxaas oo dhan waa, sida ay yiraahdaan, kor u kaca maanta. Dhowaan, abuurista qaab-dhismeedka daruuriga ah ayaa noqday mid aad u fudud oo la heli karo, laakiin dhibaatooyinka ayaa weli ah - gaar ahaan horumarinta Java. Tusaale ahaan, marka laga hadlayo shaqooyinka aan server-ka lahayn iyo adeeg-yaraha, waxaa jira baahi degdeg ah oo loo baahan yahay in la yareeyo wakhtiga bilowga, la yareeyo isticmaalka xusuusta, oo weli horumarkooda ka dhigaya mid ku habboon oo lagu raaxaysto. Java waxa ay samaysay dhowr horumar sanadihii ugu dambeeyay, sida hagaajinta shaqada ergonomics ee weelasha iyo wixii la mid ah. Si kastaba ha ahaatee, in Java si sax ah ugu shaqeeyo weelka ayaa weli ah mid adag. Markaa waxaan ku bilaabaynaa inaan eegno qaar ka mid ah kakanaanta Java, kuwaas oo si gaar ah u daran marka la horumarinayo codsiyada Java ee ku jihaysan weelka.

Marka hore, aan eegno taariikhda.

Sidee Quarkus isugu daraa barnaamijka lama huraanka ah iyo falcelinta

durdurrada iyo weelasha

Laga bilaabo nooca 8u131, Java wuxuu bilaabay in ka badan ama ka yar weelasha taageerada sababtoo ah hagaajinta shaqada ergonomics. Gaar ahaan, JVM-gu hadda wuu ogyahay inta koleejyada processor-ka ah ee uu ku shaqaynayo wuxuuna habayn karaa barkadaha dunta-sida caadiga ah fargeeto/ku biir barkadaha-sida waafaqsan. Dabcan, tani waa wax weyn, laakiin aynu nidhaahno waxaan haynaa codsi shabakad dhaqameed oo adeegsada servlets HTTP oo ku shaqeeya Tomcat, Jetty, iwm. Natiijo ahaan, codsigani wuxuu siin doonaa codsi kasta dun gaar ah oo u oggolaanaysa inuu xannibo dunta inta ay sugayaan hawlaha I/O, tusaale ahaan, marka la gelayo kaydka xogta, faylasha ama adeegyada kale. Taasi waa, cabbirka codsigan kuma xirna tirada koofiyadaha la heli karo, laakiin waxay ku xiran tahay tirada codsiyada isku mar ah. Intaa waxaa dheer, tani waxay ka dhigan tahay in kootada ama xaddidaadda Kubernetes ee tirada koofiyadaha aysan wax badan ka caawin doonin halkan, arrinkuna wuxuu ugu dambeyntii ku dhammaan doonaa inuu ku dhaco.

Daalka xusuusta

Xargaha waa xusuusta. Iyo xaddidaadaha xusuusta konteenar-ku-guduhu macneheedu maaha dawo. Kaliya billow kordhinta tirada codsiyada iyo dunta, goor dhow ama hadhow waxaad la kulmi doontaa koror aad u daran ee soo noqnoqda beddelka iyo, natiijada, hoos u dhaca waxqabadka. Sidoo kale, haddii codsigaagu isticmaalo qaab-dhismeedka microservice-ka caadiga ah, ama uu ku xiro database, ama isticmaalo kaydinta, ama haddii kale uu isticmaalo xusuusta, waxaad si cad u baahan tahay qalab kuu ogolaanaya inaad eegto gudaha JVM oo aad aragto sida ay u maamusho xusuusta adigoon dilin. JVM lafteeda (tusaale ahaan, XX:+UseCGroupMemoryLimitForHeap). In kasta oo, laga soo bilaabo Java 9, JVM waxay bartay inay aqbasho koox-kooxeedyo oo ay la qabsato si waafaqsan, kaydinta iyo maaraynta xusuusta ayaa weli ah arrin kakan.

Kootada iyo xadka

Java 11 waxay soo bandhigtay taageerada kootada CPU (sida PreferContainerQuotaForCPUCount). Kubernetes waxa kale oo ay bixisaa taageerada xadka iyo kootooyinka. Haa, waxaas oo dhan macno ayay samaynaysaa, laakiin haddii codsigu mar kale dhaafo kootada loo qoondeeyay, waxaanu mar kale ku dhammaynaynaa cabbirka - sida ay tahay kiisaska codsiyada Java-dhaqameedka ah - oo lagu go'aamiyo tirada xargaha iyo qoondaynta dun gaar ah mid kasta codsi, markaas waxaas oo dhan waxaa jira dareen yar.
Intaa waxaa dheer, haddii aad isticmaasho kootada iyo xaddidaadaha ama hawlaha miisaanka-baxa ee madal ka hooseeya Kubernetes, dhibaatadu sidoo kale ma xalliso lafteeda. Waxaan si fudud ku bixinaa dhaqaale badan xallinta dhibaatada asalka ah ama waxaan ku dhamaaneynaa kharash dheeraad ah. Oo haddii ay tahay nidaam culeys badan leh oo ku jira daruur dadweyne, hubaal waxaan ku dhammaaneynaa isticmaalka kheyraad ka badan inta aan runtii u baahanahay.

Maxaase lagu sameeyaa waxaas oo dhan?

Si fudud loo dhigo, isticmaal asynchronous iyo kuwa aan xannibin maktabadaha I/O iyo qaab-dhismeedka sida Netty, Vert.x ama Akka. Aad bay ugu habboon yihiin in lagu dhex shaqeeyo weelasha sababtoo ah dabeecadooda falcelinta ah. Thanks to aan xannibin I/O, isla dunta ayaa ka baaraandegi karta codsiyo badan oo isku mar ah. Iyadoo hal codsi la sugayo natiijooyinka I/O, habaynta dunta ayaa la sii daayaa waxaana la wareegaya codsi kale. Oo marka natiijooyinka I/O ay ugu dambeyntii yimaadaan, ka baaraandegidda codsiga ugu horreeya way sii socotaa. Codsiyada isku-xidhan ee isku-xidhka isku midka ah, waxaad yarayn kartaa tirada guud ee dunta oo aad yareyn kartaa isticmaalka kheyraadka ee codsiyada.

Iyada oo aan la xannibin I/O, tirada xargaha ayaa noqda halbeeg muhiim ah sababtoo ah waxay go'aaminaysaa tirada I/O threads ee la fulin karo si isbar-bar socda. Marka si sax ah loo isticmaalo, tani waxay kuu ogolaaneysaa inaad si wax ku ool ah u qaybiso culeyska inta u dhaxaysa xargaha oo aad xakameyso culeysyada shaqada ee sarreeya oo leh ilo yar.

Sidee, waa intaas oo dhan?

Maya, wax kale ayaa jira. Barnaamij-samaynta falcelinta waxay caawisaa in si wanaagsan loo isticmaalo agabka, laakiin sidoo kale waxay ku timaadaa qiime. Gaar ahaan, koodka waa in dib loo qoraa si waafaqsan mabaadi'da xannibaadda oo laga fogaado xannibaadda I/O threads. Tanina waa nooc gebi ahaanba ka duwan horumarinta iyo fulinta. In kasta oo ay jiraan maktabado badan oo faa'iido leh halkan, weli waa isbeddel xagjir ah oo ku yimaada habka caadiga ah ee fikirka.

Marka hore, waxaad u baahan tahay inaad barato sida loo qoro koodka u shaqeeya si la mid ah. Markaad bilowdo isticmaalka I/O aan xannibin, waxaad u baahan tahay inaad si cad u qeexdo waxa dhici doona marka jawaabta codsiga la helo. Kaliya xannibista iyo sugitaanka ma sii shaqeyn doono. Taa beddelkeeda, waxaad gudbin kartaa dib-u-warid, isticmaal barnaamij falcelineed ama sii wadid. Laakiin taasi dhammaanteed maaha: si aad u isticmaasho I/O aan xannibin, waxaad u baahan tahay labada adeegayaasha iyo macaamiisha aan xannibin, gaar ahaan meel kasta. Xaaladda HTTP, wax walbaa waa sahlan yihiin, laakiin sidoo kale waxaa jira xog-ururin, nidaamyada faylka, iyo wax ka badan.

In kasta oo wadarta fal-celinta dhammaadka-ilaa-dhamaadka ay sare u qaaddo waxtarka, isbeddelka noocan oo kale ah wuxuu noqon karaa mid adag in caloosha lagu dhaqmo. Sidaa darteed, awoodda isku-darka koodka falcelinta iyo lama huraanka ah waxay noqotaa shuruud si:

  1. Si wax ku ool ah u isticmaal kheyraadka meelaha ugu badan ee nidaamka software-ka;
  2. Isticmaal koodka qaabka fudud qaybihiisa hadhay.

Soo bandhigida Quarkus

Dhab ahaantii, kani waa nuxurka Quarkus - in la isku daro moodooyinka falcelinta iyo lama huraanka ah gudaha halbeeg runtime ah.

Quarkus waxay ku salaysan tahay Vert.x iyo Netty, oo leh noocyo kala duwan oo qaab-dhismeedka falcelinta iyo kordhinta kor si loo caawiyo horumariyaha. Quarkus waxaa loogu talagalay in lagu dhiso ma aha oo kaliya HTTP microservices, laakiin sidoo kale naqshadaha ay wado dhacdo. Dabeecadda falcelinta awgeed, waxay si hufan ugu shaqeysaa nidaamyada fariimaha (Apache Kafka, AMQP, iwm.).

Khiyaamadu waa sida loo isticmaalo matoorka falcelinta isku midka ah ee koodka muhiimka ah iyo kan falcelinta labadaba.

Sidee Quarkus isugu daraa barnaamijka lama huraanka ah iyo falcelinta

Quarkus wuxuu tan u sameeyaa si cajiib leh. Doorashada u dhaxaysa lama huraanka ah iyo falcelinta waa iska caddahay - labadaba u isticmaal kernel fal-celin ah. Waxa ay runtii ku caawiso waa dhakhso, koodhka aan xannibin kaas oo wax ka qabta ku dhawaad ​​​​wax kasta oo soo mara dunta dhacdada-loop, aka IO thread. Laakiin haddii aad haysato codsiyada caadiga ah ee REST ama dhinaca macmiilka, Quarkus wuxuu diyaar u yahay moodel barnaamijeed lama huraan ah. Tusaale ahaan, taageerada HTTP ee Quarkus waxay ku salaysan tahay isticmaalka mishiinka aan xannibin iyo falcelinta (Eclipse Vert.x iyo Netty). Dhammaan codsiyada HTTP ee uu helo codsigaaga waxaa marka hore loo maraa loop dhacdo (IO Thread) ka dibna loo diro qaybta koodka maamula codsiyada. Iyadoo ku xiran meesha loo socdo, koodhka maamulka codsiga waxaa loogu yeeri karaa dun gaar ah (waxa loogu yeero dunta shaqaalaha, oo loo isticmaalo kiisaska servlets iyo Jax-RS) ama isticmaal isha I/O thread (dariiq falcelineed).

Sidee Quarkus isugu daraa barnaamijka lama huraanka ah iyo falcelinta

Xidhiidhiyayaasha nidaamka fariimaha waxay adeegsadaan macaamiisha aan xannibin ee ku ordaya matoorka Vert.x. Sidaa darteed, waxaad si wax ku ool ah u diri kartaa, heli kartaa oo uga baaraandegi kartaa fariimaha fariimaha habka dhexe.

On goobta Quarkus.io Halkan waxaa ah casharro wanaagsan oo kaa caawinaya inaad ku bilowdo Quarkus:

Waxa kale oo aanu abuurnay casharro gacan-ku-siman oo khadka ah si aanu ku barno qaybo kala duwan oo ku saabsan barnaamijka falcelinta ee browser-ka kaliya, looma baahna IDE, kombuyuutarna looma baahna. Waxaad ka heli kartaa casharadan halkan.

Kheyraad Faa'iido Leh

10 casharo muuqaal ah oo ku saabsan Quarkus si aad u barato mawduuca

Sida ay ku yiraahdeen mareegaha Quarkus.io, quruus - waa KubureteskaXirmada Java ee ku jihaysan, oo loogu talagalay GraalVM iyo OpenJDK HotSpot oo laga soo ururiyay maktabadaha Java ugu fiican iyo heerarka.

Si aad u fahamto mawduuca, waxaanu dooranay 10 cashar oo muuqaal ah oo daboolaya dhinacyo kala duwan oo Quarkus ah iyo tusaalooyin isticmaalkiisa:

1. Soo bandhigida Quarkus: Qaab-dhismeedka Java ee Jiilka Xiga ee Kubernetes

Waxaa qoray Thomas Qvarnstrom iyo Jason Greene
Hadafka mashruuca Quarkus waa in la abuuro madal Java ah oo loogu talagalay Kubernetes iyo deegaanka server-la'aanta ah, iyo in la isku daro moodooyinka barnaamijka falcelinta iyo lama huraanka ah ee jawi runtime ah si ay horumariyayaashu si dabacsanaan ah u beddelaan qaabkooda marka ay la shaqeynayaan tiro balaadhan oo ah qaab-dhismeedka codsiyada qaybsan. Wax badan ka ogow muxaadarada hordhaca ah ee hoose.

2. Quarkus: Superfast Subatomic Java

By: Burr Sutter
Casharradan fiidyaha ah ee DevNation Live waxay tusinaysaa sida loo isticmaalo Quarkus si loo wanaajiyo codsiyada Java ee ganacsiga, API-yada, adeegaha yar-yar, iyo hawlaha server-la'aanta ee ku jira deegaanka Kubernetes/OpenShift, taasoo ka dhigaysa kuwo aad u yaryar, dhakhso badan, oo la miisaami karo.

3. Quarkus iyo GraalVM: dardargelinta Hibernate ee xawaarihiisa sare iyo hoos u dhigida cabbirrada subatomic

Qore: Sanne Grinovero
Bandhiga waxaad ka baran doontaa sida Quarkus ku yimid, sida ay u shaqeyso, iyo sida ay kuu ogolaato inaad samayso maktabado adag, sida Hibernate ORM, oo la jaan qaadaya sawirada asalka ah ee GraalVM.

4. Baro sida loo horumariyo codsiyada aan server lahayn

Qore: Martin Luther
Fiidiyowga hoose wuxuu muujinayaa sida loo abuuro codsi Java fudud iyadoo la adeegsanayo Quarkus oo loo geeyo codsi bilaa server ah oo ku yaal Knative.

5. Quarkus: Ku raaxayso codaynta

Qore: Edson Yanaga
Hagaha fiidiyowga si aad u abuurto mashruucaaga ugu horreeya ee Quarkus, oo kuu oggolaanaya inaad fahamto sababta Quarkus uu u kasbanayo quluubta horumariyeyaasha.

6. Java iyo weelasha - sida uu noqon doono mustaqbalkooda wada jir ah

Waxaa dhejiyay Mark Little
Bandhigani wuxuu soo bandhigayaa taariikhda Java wuxuuna sharxayaa sababta Quarkus u yahay mustaqbalka Java.

7. Quarkus: Superfast Subatomic Java

Qore: Dimitris Andreadis
Dulmar guud oo ku saabsan faa'iidooyinka Quarkus ee aqoonsi ka helay horumariyeyaal: fududaan, xawaare aad u sarreeya, maktabadaha ugu fiican iyo heerarka.

8. Quarkus iyo nidaamyada gantaallada subatomic

Qore: Clement Escoffier
Iyadoo la adeegsanayo isdhexgalka GraalVM, Quarkus wuxuu bixiyaa khibrad horumarineed oo degdeg ah iyo jawi runtime subatomic ah. Qoraagu wuxuu ka hadlayaa dhinaca falcelinta ee Quarkus iyo sida loo isticmaalo si loo dhiso codsiyada falcelinta iyo qulqulka.

9. Quarkus iyo horumarinta codsiga degdega ah ee Eclipse MicroProfile

Qore: John Clingan
Marka la isku daro Eclipse MicroProfile iyo Quarkus, horumariyayaashu waxay abuuri karaan weel sifaysan oo buuxa codsiyada MicroProfile kaas oo bilaabaya tobanaan ilbiriqsi. Fiidiyowgu wuxuu si faahfaahsan u qeexayaa sida loo codeeyo codsiga MicroProfile ee weelka ku jira ee la geynayo goobta Kubernetes.

10. Java, nooca "Turbo".

Qore: Marcus Biel
Qoraagu wuxuu muujinayaa sida loo isticmaalo Quarkus si loo abuuro weelal aad u yaryar oo aad u dheereya oo Java ah oo awood u siinaya guulo dhab ah, gaar ahaan meelaha aan server-ka lahayn.



Source: www.habr.com

Add a comment