Yadda Quarkus ke haɗa shirye-shirye masu mahimmanci da amsawa

A wannan shekara muna shirin haɓaka jigogi da gaske, Cloud-Native Java и Kubernetes. Ci gaba mai ma'ana na waɗannan batutuwa zai zama labari game da tsarin Quarkus, riga la'akari ku Habre. Labarin na yau ya yi ƙasa da ƙirar "subatomic superfast Java" da ƙari game da alkawarin da Quarkus ya kawo ga Enterprise.

Yadda Quarkus ke haɗa shirye-shirye masu mahimmanci da amsawa

Java da JVM har yanzu suna da mashahuri sosai, amma lokacin aiki tare da fasahar mara sabar da microservices na asali, Java da sauran harsunan JVM ana amfani da su ƙasa da ƙasa saboda suna ɗaukar sararin ƙwaƙwalwar ajiya da yawa kuma suna jinkirin ɗaukar nauyi, yana sanya su. bai dace da amfani da kwantena na ɗan gajeren lokaci ba. Abin farin ciki, wannan halin yanzu ya fara canzawa godiya ga Quarkus.

Superfast subatomic Java ya kai sabon matakin!

42 sakewa, watanni 8 na aikin al'umma da masu haɓaka ban mamaki 177 - sakamakon duka shine sakin a watan Nuwamba 2019 Quarku 1.0, saki wanda ke nuna muhimmiyar mahimmanci a cikin ci gaban aikin kuma yana ba da abubuwa masu kyau da kuma iyawa (zaku iya karantawa game da su a ciki). sanarwa).

A yau za mu nuna muku yadda Quarkus ke haɗa samfuran shirye-shirye masu mahimmanci da masu amsawa zuwa cikin jigon amsawa guda ɗaya. Za mu fara da ɗan taƙaitaccen tarihi sannan mu shiga daki-daki game da abin da Quarkus' reactive core dualism yake da kuma yadda Java-Masu haɓakawa na iya amfani da waɗannan fa'idodin.

Microservices, taron kore architectures и marar amfani-ayyuka - duk wannan shine, kamar yadda suke faɗa, akan tashi a yau. Kwanan nan, ƙirƙirar gine-ginen gine-ginen girgije ya zama mafi sauƙi kuma mafi sauƙi, amma matsalolin sun kasance - musamman ga masu haɓaka Java. Alal misali, a cikin yanayin ayyuka marasa uwar garke da microservices, akwai buƙatar gaggawa don rage lokacin farawa, rage yawan ƙwaƙwalwar ajiya, kuma har yanzu ci gaban su ya fi dacewa da jin dadi. Java ya yi gyare-gyare da yawa a cikin 'yan shekarun nan, kamar ingantaccen aikin ergonomics don kwantena da sauransu. Koyaya, samun Java yayi aiki yadda yakamata a cikin akwati har yanzu yana da wahala. Don haka za mu fara da duban wasu rikitattun abubuwan da ke tattare da Java, waɗanda ke da ƙarfi musamman lokacin haɓaka aikace-aikacen Java masu dogaro da akwati.

Da farko, bari mu dubi tarihi.

Yadda Quarkus ke haɗa shirye-shirye masu mahimmanci da amsawa

Rafukan ruwa da kwantena

An fara da sigar 8u131, Java ya fara ƙara ko žasa da kwantena tallafi saboda haɓaka ayyukan ergonomics. Musamman ma, JVM yanzu ya san nau'ikan nau'ikan kayan aikin da yake gudana akan kuma yana iya saita wuraren waha - yawanci cokali mai yatsa / haɗa wuraren waha-bisa ga haka. Tabbas, wannan yana da kyau, amma bari mu ce muna da aikace-aikacen gidan yanar gizo na gargajiya wanda ke amfani da servlets HTTP kuma yana gudana a cikin Tomcat, Jetty, da sauransu. A sakamakon haka, wannan aikace-aikacen zai ba kowane buƙatun zaren daban kuma ya ba shi damar toshe wannan zaren yayin da yake jiran ayyukan I/O, misali, lokacin shiga bayanan bayanai, fayiloli ko wasu ayyuka. Wato girman irin wannan aikace-aikacen ba ya dogara da adadin da ake samu ba, amma akan adadin buƙatun lokaci guda. Bugu da ƙari, wannan yana nufin cewa ƙididdiga ko iyaka a cikin Kubernetes akan adadin ƙididdiga ba zai taimaka sosai a nan ba, kuma al'amarin zai ƙare a ƙarshe.

Ƙwaƙwalwar ƙwaƙwalwa

Zaren ƙwaƙwalwar ajiya. Kuma iyakokin ƙwaƙwalwar ajiyar cikin-kwantena ko kaɗan ba magani bane. Kawai fara ƙara yawan aikace-aikacen da zaren, kuma ba dade ko ba dade za ku gamu da haɓaka mai mahimmanci a mitar sauyawa kuma, a sakamakon haka, lalacewar aiki. Hakanan, idan aikace-aikacenku yana amfani da tsarin tsarin microservice na gargajiya, ko yana haɗawa zuwa bayanan bayanai, ko amfani da caching, ko kuma yana amfani da ƙwaƙwalwar ajiya, tabbas kuna buƙatar kayan aiki wanda zai ba ku damar duba cikin JVM ɗin ku ga yadda yake sarrafa ƙwaƙwalwar ajiya ba tare da kashe shi ba. JVM kanta (misali, XX:+Yi amfani daCGroupMemoryLimitForHeap). Kuma ko da yake, tun daga Java 9, JVM ya koyi karɓar ƙungiyoyi kuma ya daidaita daidai da haka, adanawa da sarrafa ƙwaƙwalwar ajiya ya kasance wani abu mai rikitarwa.

Ƙidaya da iyaka

Java 11 ya gabatar da goyan baya ga ƙimar CPU (kamar PreferContainerQuotaForCPUCount). Kubernetes kuma yana ba da tallafi don iyakoki da ƙididdiga. Haka ne, wannan duk yana da ma'ana, amma idan aikace-aikacen ya sake zarce adadin da aka keɓe, za mu sake ƙarewa da girman - kamar yadda yake a aikace-aikacen Java na al'ada - wanda aka ƙaddara ta adadin nau'i-nau'i tare da rabon zaren daban ga kowane. roƙo, to, akwai ƙananan hankali a cikin duk wannan.
Bugu da ƙari, idan kun yi amfani da ƙididdiga da iyakoki ko ayyukan ma'auni na dandamali da ke ƙarƙashin Kubernetes, matsalar kuma ba ta magance kanta ba. Mu kawai muna kashe ƙarin albarkatu don magance matsalar asali ko kuma mu ƙare wuce gona da iri. Kuma idan tsarin babban kaya ne a cikin gajimare na jama'a, kusan tabbas mun ƙare amfani da albarkatu fiye da yadda muke buƙata.

Kuma me za a yi da wannan duka?

Don sanya shi a sauƙaƙe, yi amfani da asynchronous da marasa toshewa da ɗakunan karatu na I/O da tsarin kamar Netty, Vert.x ko Akka. Sun fi dacewa da aiki a cikin kwantena saboda yanayin amsawa. Godiya ga rashin toshewa I/O, zaren iri ɗaya na iya aiwatar da buƙatun lokaci guda da yawa. Yayin da buƙatu ɗaya ke jiran sakamakon I/O, ana fitar da zaren sarrafa shi kuma wani buƙatun ya karbe shi. Kuma lokacin da sakamakon I/O ya zo ƙarshe, ana ci gaba da aiwatar da buƙatar farko. Ta hanyar sarrafa buƙatun da ke cikin zaren guda ɗaya, zaku iya rage jimillar zaren kuma rage yawan amfani da albarkatun don sarrafa buƙatun.

Tare da rashin toshewa I/O, adadin cores ya zama maɓalli na maɓalli saboda yana ƙayyade adadin zaren I/O waɗanda za a iya aiwatar da su a layi daya. Lokacin da aka yi amfani da shi daidai, wannan yana ba ku damar rarraba kaya yadda ya kamata tsakanin cores da kuma ɗaukar nauyin aiki mafi girma tare da ƙarancin albarkatu.

Yaya, wannan duka?

A'a, akwai wani abu kuma. Shirye-shiryen amsawa yana taimakawa mafi kyawun amfani da albarkatu, amma kuma yana zuwa akan farashi. Musamman, dole ne a sake rubuta lambar bisa ga ƙa'idodin rashin toshewa kuma a guji toshe zaren I/O. Kuma wannan shi ne mabanbanta samfurin ci gaba da aiwatarwa. Kuma ko da yake akwai ɗakunan karatu masu amfani da yawa a nan, har yanzu canji ne mai mahimmanci a cikin hanyar tunani na yau da kullum.

Da farko, kuna buƙatar koyon yadda ake rubuta lambar da ke aiki asynchronously. Da zarar ka fara amfani da I/O ba tare da toshewa ba, kana buƙatar ƙayyadadden abin da zai faru a fili lokacin da aka karɓi amsa ga buƙata. Kawai tarewa da jira ba zai ƙara yin aiki ba. Madadin haka, zaku iya wuce kiran baya, yi amfani da shirye-shiryen amsawa ko ci gaba. Amma wannan ba duka ba: don amfani da I/O mara toshewa, kuna buƙatar duka sabar da ba tare da toshewa ba, zai fi dacewa a ko'ina. A cikin yanayin HTTP, komai yana da sauƙi, amma akwai kuma bayanan bayanai, tsarin fayil, da ƙari mai yawa.

Kuma ko da yake jimlar amsawar ƙarshen-zuwa-ƙarshen yana haɓaka haɓaka aiki, irin wannan motsi na iya zama da wahala ga ciki a aikace. Don haka, ikon haɗa lambar amsawa da mahimmanci ta zama abin da ake buƙata don:

  1. Yi amfani da albarkatu yadda ya kamata a mafi yawan wuraren da aka ɗora wa tsarin software;
  2. Yi amfani da lambar salo mafi sauƙi a cikin ragowar sassansa.

Gabatar da Quarkus

A haƙiƙa, wannan shine ainihin Quarkus - don haɗa samfuran amsawa da mahimmanci a cikin yanayin lokaci guda.

Quarkus ya dogara ne akan Vert.x da Netty, tare da kewayon tsarin amsawa da kari akan sama don taimakawa mai haɓakawa. An ƙirƙira Quarkus don gina ba kawai ƙananan sabis na HTTP ba, har ma da gine-ginen da ke faruwa. Saboda yanayin amsawa, yana aiki sosai tare da tsarin saƙon (Apache Kafka, AMQP, da sauransu).

Dabarar ita ce yadda ake amfani da injin amsawa iri ɗaya don lambar mahimmanci da lambar amsawa.

Yadda Quarkus ke haɗa shirye-shirye masu mahimmanci da amsawa

Quarkus yana yin wannan da kyau. Zaɓin tsakanin mahimmanci da mai amsawa a bayyane yake - yi amfani da kwaya mai amsawa ga duka biyun. Abin da yake taimakawa da gaske yana da sauri, lambar ba tare da toshewa ba wanda ke ɗaukar kusan duk abin da ke wucewa ta zaren taron-madauki, aka IO thread. Amma idan kuna da REST na yau da kullun ko aikace-aikacen gefen abokin ciniki, Quarkus yana da ƙirar shirye-shirye masu mahimmanci a shirye. Misali, tallafin HTTP a cikin Quarkus ya dogara ne akan amfani da injin da ba ya toshewa da amsawa (Eclipse Vert.x da Netty). Duk buƙatun HTTP da aka karɓa ta aikace-aikacenku ana fara wucewa ta hanyar madauki na taron (IO Thread) sannan a aika zuwa ɓangaren lambar da ke sarrafa buƙatun. Dangane da wurin da aka nufa, ana iya kiran lambar sarrafa buƙatun a cikin keɓan zaren (abin da ake kira zaren ma'aikaci, wanda aka yi amfani da shi a yanayin servlets da Jax-RS) ko amfani da zaren I/O tushen (hanyar amsawa).

Yadda Quarkus ke haɗa shirye-shirye masu mahimmanci da amsawa

Masu haɗin tsarin saƙo suna amfani da abokan ciniki marasa toshewa waɗanda ke gudana a saman injin Vert.x. Don haka, zaku iya aikawa, karɓa da sarrafa saƙon yadda ya kamata daga tsarin tsakiya na saƙo.

A shafin Quarkus.io Ga wasu kyawawan koyawa don taimaka muku farawa da Quarkus:

Mun kuma ƙirƙiri koyaswar hannu-kan kan layi don koya muku fannoni daban-daban na shirye-shiryen amsawa a cikin burauza kawai, babu IDE da ake buƙata, kuma babu kwamfuta da ake buƙata. Kuna iya samun waɗannan darussan a nan.

Albarkatu masu Amfani

Darussan bidiyo 10 akan Quarkus don sanin batun

Kamar yadda suke fada a gidan yanar gizon Quarkus.io, kwarkus - shi ne KubernetesTarin Java mai daidaitawa, wanda aka keɓance don GraalVM da OpenJDK HotSpot kuma an haɗa shi daga mafi kyawun ɗakunan karatu da ƙa'idodi na Java.

Don taimaka muku fahimtar batun, mun zaɓi koyaswar bidiyo guda 10 waɗanda suka shafi fannoni daban-daban na Quarkus da misalan amfaninsa:

1. Gabatar da Quarkus: Tsarin Java na gaba na Kubernetes

Daga Thomas Qvarnstrom da Jason Greene
Manufar aikin Quarkus shine ƙirƙirar dandamali na Java don Kubernetes da mahalli marasa uwar garken, da kuma haɗa samfuran shirye-shirye masu aiki da mahimmanci a cikin yanayi guda na lokaci guda ta yadda masu haɓakawa za su iya canza tsarin su a sassauƙa yayin aiki tare da kewayon tsarin gine-ginen aikace-aikacen da aka rarraba. Nemo ƙarin a cikin lacca gabatarwa a ƙasa.

2. Quarkus: Superfast Subatomic Java

By: Burr Sutter
Wannan koyawa ta bidiyo daga DevNation Live yana nuna yadda ake amfani da Quarkus don haɓaka aikace-aikacen Java na kasuwanci, APIs, microservices, da ayyuka marasa uwar garke a cikin yanayin Kubernetes/OpenShift, yana sa su ƙarami, sauri, da ƙari.

3. Quarkus da GraalVM: haɓaka Hibernate zuwa babban saurin gudu da rage shi zuwa girman subatomic

Marubuci: Sanne Grinovero
Daga gabatarwa za ku koyi yadda Quarkus ya kasance, yadda yake aiki, da kuma yadda yake ba ku damar yin hadaddun dakunan karatu, kamar Hibernate ORM, masu dacewa da hotunan GraalVM na asali.

4. Koyi haɓaka aikace-aikace marasa sabar

Marubuci: Martin Luther
Bidiyon da ke ƙasa yana nuna yadda ake ƙirƙirar aikace-aikacen Java mai sauƙi ta amfani da Quarkus da tura shi azaman aikace-aikacen mara sabar akan Knative.

5. Quarkus: Yi nishaɗin coding

Marubuci: Edson Yanaga
Jagorar bidiyo don ƙirƙirar aikin ku na farko na Quarkus, yana ba ku damar fahimtar dalilin da yasa Quarkus ke lashe zukatan masu haɓakawa.

6. Java da kwantena - menene makomarsu tare za ta kasance

Mark Little ne ya buga
Wannan gabatarwa yana gabatar da tarihin Java kuma ya bayyana dalilin da yasa Quarkus shine makomar Java.

7. Quarkus: Superfast Subatomic Java

Marubuci: Dimitris Andreadis
Bayanin fa'idodin Quarkus waɗanda suka sami karɓuwa daga masu haɓakawa: sauƙi, matsananciyar gudu, mafi kyawun ɗakunan karatu da ƙa'idodi.

8. Quarkus da tsarin roka na subatomic

Marubuci: Clement Escoffier
Ta hanyar haɗin kai tare da GraalVM, Quarkus yana ba da ƙwarewar ci gaba mai sauri da yanayin lokacin gudu na subatomic. Marubucin yayi magana game da bangaren amsawa na Quarkus da yadda ake amfani da shi don gina aikace-aikacen amsawa da yawo.

9. Quarkus da saurin aikace-aikacen haɓakawa a cikin Eclipse MicroProfile

Marubuci: John Clingan
Ta haɗa Eclipse MicroProfile da Quarkus, masu haɓakawa za su iya ƙirƙirar ƙaƙƙarfan aikace-aikacen MicroProfile da aka ƙaddamar da su a cikin dubun ɗari biyu. Bidiyon ya shiga daki-daki kan yadda ake yin rikodin aikace-aikacen MicroProfile mai kwantena don turawa akan dandalin Kubernetes.

10. Java, “Turbo” sigar

Marubuci: Marcus Biel
Marubucin ya nuna yadda ake amfani da Quarkus don ƙirƙirar manyan kanana, manyan kwantena na Java waɗanda ke ba da damar ci gaba na gaske, musamman a cikin mahalli marasa sabar.



source: www.habr.com

Add a comment