Bii Quarkus ṣe ṣajọpọ awọn siseto pataki ati ifaseyin

Ni ọdun yii a gbero lati dagbasoke ni pataki awọn akori apoti, Awọsanma- Abinibi Java и Kubernetes. Ilọsiwaju ọgbọn ti awọn akọle wọnyi yoo jẹ itan kan nipa ilana Quarkus, tẹlẹ lori Habré. Nkan oni ko kere si nipa apẹrẹ “subatomic superfast Java” ati diẹ sii nipa ileri ti Quarkus mu wa si Idawọlẹ.

Bii Quarkus ṣe ṣajọpọ awọn siseto pataki ati ifaseyin

Java ati JVM tun jẹ olokiki pupọju, ṣugbọn nigbati o ba n ṣiṣẹ pẹlu awọn imọ-ẹrọ ti ko ni olupin ati awọn microservices abinibi awọsanma, Java ati awọn ede JVM miiran ti dinku ati dinku nitori wọn gba aaye iranti pupọ ati pe wọn lọra lati fifuye, ṣiṣe wọn. ko dara fun lilo pẹlu awọn apoti igba diẹ. Ni Oriire, ipo yii ti bẹrẹ lati yipada ọpẹ si Quarkus.

Superfast subatomic Java ti de ipele tuntun kan!

Awọn idasilẹ 42, awọn oṣu 8 ti iṣẹ agbegbe ati awọn idagbasoke iyalẹnu 177 - abajade gbogbo rẹ ni idasilẹ ni Oṣu kọkanla ọdun 2019 Kúkús 1.0, itusilẹ ti o jẹ ami-iṣẹlẹ pataki kan ninu idagbasoke iṣẹ akanṣe ati pe o funni ni ọpọlọpọ awọn ẹya ti o tutu ati awọn agbara (o le ka diẹ sii nipa wọn ni ìkéde).

Loni a yoo fihan ọ bi Quarkus ṣe ṣajọpọ pataki ati awọn awoṣe siseto ifaseyin sinu koko ifaseyin ẹyọkan. A yoo bẹrẹ pẹlu itan-akọọlẹ kukuru ati lẹhinna lọ sinu awọn alaye nipa kini Quarkus' ifaseyin mojuto dualism jẹ ati bii Java-Awọn olupilẹṣẹ le lo awọn anfani wọnyi.

Awọn iṣẹ Micro, iṣẹlẹ ìṣó architectures и laisi olupin-awọn iṣẹ - gbogbo eyi ni, bi wọn ti sọ, lori jinde loni. Laipe, awọn ẹda ti awọsanma-centric faaji ti di Elo rọrun ati siwaju sii wiwọle, sugbon isoro wa - paapa fun Java Difelopa. Fun apẹẹrẹ, ninu ọran ti awọn iṣẹ alailowaya ati awọn iṣẹ microservices, iwulo ni iyara wa lati dinku akoko ibẹrẹ, dinku agbara iranti, ati tun jẹ ki idagbasoke wọn rọrun ati igbadun. Java ti ṣe ọpọlọpọ awọn ilọsiwaju ni awọn ọdun aipẹ, gẹgẹbi ilọsiwaju iṣẹ ṣiṣe ergonomics fun awọn apoti ati bẹbẹ lọ. Sibẹsibẹ, gbigba Java lati ṣiṣẹ daradara ni apo eiyan jẹ ṣi nija. Nitorinaa a yoo bẹrẹ nipasẹ wiwo diẹ ninu awọn idiju atorunwa ti Java, eyiti o jẹ pataki ni pataki nigbati o dagbasoke awọn ohun elo Java ti o da lori eiyan.

Ni akọkọ, jẹ ki a wo itan-akọọlẹ.

Bii Quarkus ṣe ṣajọpọ awọn siseto pataki ati ifaseyin

Awọn ṣiṣan ati awọn apoti

Bibẹrẹ pẹlu ẹya 8u131, Java bẹrẹ si diẹ sii tabi kere si awọn apoti atilẹyin nitori awọn ilọsiwaju ninu iṣẹ ṣiṣe ergonomics. Ni pataki, JVM ni bayi mọ iye awọn ohun kohun ero isise ti o nṣiṣẹ lori ati pe o le tunto awọn adagun okun-ni deede orita/darapọ mọ adagun-ni ibamu. Nitoribẹẹ, eyi jẹ nla, ṣugbọn jẹ ki a sọ pe a ni ohun elo wẹẹbu ibile ti o nlo awọn olupin HTTP ati ṣiṣe ni Tomcat, Jetty, ati bẹbẹ lọ. Bi abajade, ohun elo yii yoo fun ibeere kọọkan ni okun lọtọ ati gba laaye lati dènà o tẹle ara yii lakoko ti o nduro fun awọn iṣẹ I/O, fun apẹẹrẹ, nigbati o wọle si ibi ipamọ data, awọn faili tabi awọn iṣẹ miiran. Iyẹn ni, iwọn iru ohun elo ko da lori nọmba awọn ohun kohun ti o wa, ṣugbọn lori nọmba awọn ibeere nigbakanna. Ni afikun, eyi tumọ si pe awọn ipin tabi awọn opin ni Kubernetes lori nọmba awọn ohun kohun kii yoo ṣe iranlọwọ pupọ nibi, ati pe ọrọ naa yoo pari ni ipari.

Irẹwẹsi iranti

Awọn okun jẹ iranti. Ati awọn idiwọn iranti inu inu-eiyan kii ṣe panacea ni ọna kan. Kan bẹrẹ jijẹ nọmba awọn ohun elo ati awọn okun, ati laipẹ tabi ya iwọ yoo ba pade ilosoke pataki ni igbohunsafẹfẹ iyipada ati, bi abajade, ibajẹ iṣẹ. Paapaa, ti ohun elo rẹ ba lo awọn ilana microservice ibile, tabi sopọ si ibi ipamọ data kan, tabi lo caching, tabi bibẹẹkọ nlo iranti, o han gedegbe o nilo ohun elo kan ti o fun ọ laaye lati wo inu JVM ki o wo bii o ṣe n ṣakoso iranti laisi pipa. JVM funrararẹ (fun apẹẹrẹ, XX:+ UseCGroupMemoryLimitForHeap). Ati pe botilẹjẹpe, lati Java 9, JVM ti kọ ẹkọ lati gba awọn ẹgbẹ ati mu ni ibamu, ifiṣura ati iṣakoso iranti jẹ ọrọ ti o nira pupọ.

Quotas ati awọn ifilelẹ

Java 11 ṣe atilẹyin atilẹyin fun awọn ipin Sipiyu (bii PreferContainerQuotaForCPUCount). Kubernetes tun funni ni atilẹyin fun awọn opin ati awọn ipin. Bẹẹni, gbogbo eyi jẹ oye, ṣugbọn ti ohun elo naa ba tun kọja ipin ti a pin, a tun pari pẹlu iwọn - gẹgẹ bi ọran pẹlu awọn ohun elo Java ti aṣa - ti pinnu nipasẹ nọmba awọn ohun kohun ati pẹlu ipin ti okun lọtọ fun ọkọọkan. ìbéèrè, lẹhinna ori kekere wa ninu gbogbo eyi.
Ni afikun, ti o ba lo awọn ipin ati awọn opin tabi awọn iṣẹ iwọn-jade ti Syeed ti o wa labẹ Kubernetes, iṣoro naa ko tun yanju funrararẹ. A rọrun lo awọn orisun diẹ sii lori yanju iṣoro atilẹba tabi pari inawo apọju. Ati pe ti o ba jẹ eto fifuye giga ni awọsanma ti gbogbo eniyan, dajudaju a fẹrẹ pari ni lilo awọn orisun diẹ sii ju ti a nilo gaan.

Ati kini lati ṣe pẹlu gbogbo eyi?

Lati fi sii nirọrun, lo asynchronous ati ti kii ṣe idilọwọ awọn ile-ikawe I/O ati awọn ilana bii Netty, Vert.x tabi Akka. Wọn dara julọ dara julọ lati ṣiṣẹ ninu awọn apoti nitori iseda ifaseyin wọn. Ṣeun si I/O ti kii ṣe idinamọ, okun kanna le ṣe ilana awọn ibeere nigbakanna lọpọlọpọ. Lakoko ti ibeere kan n duro de awọn abajade I/O, ilana o tẹle ara ti tu silẹ ati gba nipasẹ ibeere miiran. Ati nigbati awọn abajade I/O ti de nipari, sisẹ ti ibeere akọkọ tẹsiwaju. Nipa sisẹ interleaved ti awọn ibeere laarin okun kanna, o le dinku nọmba lapapọ ti awọn okun ki o dinku agbara orisun fun awọn ibeere sisẹ.

Pẹlu I/O ti kii ṣe idinamọ, nọmba awọn ohun kohun di paramita bọtini nitori pe o pinnu nọmba awọn okun I/O ti o le ṣe ni afiwe. Nigbati o ba lo ni deede, eyi n gba ọ laaye lati pin kaakiri fifuye laarin awọn ohun kohun ati mu awọn iṣẹ ṣiṣe ti o ga julọ pẹlu awọn orisun diẹ.

Bawo, iyẹn gbogbo?

Rara, nkan miiran wa. Ṣiṣeto siseto ṣe iranlọwọ lati lo awọn orisun to dara julọ, ṣugbọn tun wa ni idiyele kan. Ni pataki, koodu naa yoo ni lati tun kọ ni ibamu si awọn ipilẹ ti kii ṣe idinamọ ati yago fun didi awọn okun I/O. Ati pe eyi jẹ awoṣe ti o yatọ patapata ti idagbasoke ati ipaniyan. Ati pe botilẹjẹpe ọpọlọpọ awọn ile-ikawe ti o wulo ni o wa nibi, o tun jẹ iyipada ipilẹṣẹ ni ọna ironu deede.

Ni akọkọ, o nilo lati kọ bi o ṣe le kọ koodu ti o nṣiṣẹ ni asynchronously. Ni kete ti o bẹrẹ lilo I/O ti kii ṣe idinamọ, o nilo lati ṣalaye ni ṣoki ohun ti o yẹ ki o ṣẹlẹ nigbati idahun si ibeere kan ba gba. Nìkan didi ati idaduro kii yoo ṣiṣẹ mọ. Dipo, o le ṣe awọn ipe pada, lo siseto ifaseyin tabi itesiwaju. Ṣugbọn iyẹn kii ṣe gbogbo rẹ: lati lo I/O ti kii ṣe idilọwọ, o nilo mejeeji awọn olupin ti kii ṣe idilọwọ ati awọn alabara, ni pataki nibi gbogbo. Ninu ọran HTTP, ohun gbogbo rọrun, ṣugbọn awọn apoti isura infomesonu tun wa, awọn ọna ṣiṣe faili, ati pupọ diẹ sii.

Ati pe botilẹjẹpe ifasilẹ ipari-si-opin lapapọ n mu iṣẹ ṣiṣe pọ si, iru iyipada le nira si ikun ni iṣe. Nitorinaa, agbara lati darapọ ifaseyin ati koodu pataki di ohun pataki ṣaaju lati:

  1. Lo awọn orisun ni imunadoko ni awọn agbegbe ti kojọpọ julọ ti eto sọfitiwia;
  2. Lo koodu ara ti o rọrun ni awọn ẹya ti o ku.

Ifihan Quarkus

Lootọ, eyi ni pataki ti Quarkus - lati ṣajọpọ ifaseyin ati awọn awoṣe pataki laarin agbegbe asiko asiko kan.

Quarkus da lori Vert.x ati Netty, pẹlu ọpọlọpọ awọn ilana ifaseyin ati awọn amugbooro lori oke lati ṣe iranlọwọ fun idagbasoke. Quarkus jẹ apẹrẹ fun kikọ kii ṣe awọn iṣẹ microservice HTTP nikan, ṣugbọn awọn faaji ti o dari iṣẹlẹ. Nitori iseda ifaseyin rẹ, o ṣiṣẹ ni imunadoko pẹlu awọn eto fifiranṣẹ (Apache Kafka, AMQP, ati bẹbẹ lọ).

Ẹtan naa ni bii o ṣe le lo ẹrọ ifaseyin kanna fun mejeeji pataki ati koodu ifaseyin.

Bii Quarkus ṣe ṣajọpọ awọn siseto pataki ati ifaseyin

Quarkus ṣe eyi ni itara. Yiyan laarin dandan ati ifaseyin jẹ kedere - lo ekuro ifaseyin fun awọn mejeeji. Ohun ti o ṣe iranlọwọ gaan pẹlu ni iyara, koodu ti kii ṣe idilọwọ ti o mu ohun gbogbo ti o kọja nipasẹ okun iṣẹlẹ-lupu, aka IO o tẹle ara. Ṣugbọn ti o ba ni REST Ayebaye tabi awọn ohun elo ẹgbẹ alabara, Quarkus ni awoṣe siseto pataki ni ti ṣetan. Fun apẹẹrẹ, atilẹyin HTTP ni Quarkus da lori lilo ti kii ṣe idinamọ ati ẹrọ ifaseyin (Eclipse Vert.x ati Netty). Gbogbo awọn ibeere HTTP ti o gba nipasẹ ohun elo rẹ ni akọkọ kọja nipasẹ lupu iṣẹlẹ kan (IO Thread) ati lẹhinna firanṣẹ si apakan koodu ti o ṣakoso awọn ibeere naa. Ti o da lori opin irin ajo naa, koodu iṣakoso ibeere le pe laarin okun lọtọ (eyiti a pe ni okun oṣiṣẹ, ti a lo ninu ọran ti servlets ati Jax-RS) tabi lo okun I/O orisun (ọna ifaseyin).

Bii Quarkus ṣe ṣajọpọ awọn siseto pataki ati ifaseyin

Awọn asopọ eto fifiranṣẹ lo awọn alabara ti kii ṣe idinamọ ti n ṣiṣẹ lori ẹrọ Vert.x. Nitorinaa, o le firanṣẹ ni imunadoko, gba ati ṣiṣẹ awọn ifiranṣẹ lati awọn ọna ṣiṣe agbedemeji fifiranṣẹ.

Lori aaye naa Quarkus.io Eyi ni diẹ ninu awọn ikẹkọ to dara lati ṣe iranlọwọ fun ọ lati bẹrẹ pẹlu Quarkus:

A tun ti ṣẹda awọn ikẹkọ ọwọ lori ayelujara lati kọ ọ ni ọpọlọpọ awọn aaye ti siseto ifaseyin ni ẹrọ aṣawakiri kan, ko si IDE ti o nilo, ko si si kọnputa ti o nilo. O le wa awọn ẹkọ wọnyi nibi.

Wulo Resources

Awọn ẹkọ fidio 10 lori Quarkus lati ni imọran pẹlu koko-ọrọ naa

Bi wọn ti sọ lori oju opo wẹẹbu Quarkus.io, quarkus - eyi ni Kubernetes-Oriented akopọ Java, ti a ṣe fun GraalVM ati OpenJDK HotSpot ati pejọ lati awọn ile-ikawe Java ti o dara julọ ati awọn iṣedede.

Lati ṣe iranlọwọ fun ọ lati loye koko-ọrọ naa, a ti yan awọn ikẹkọ fidio 10 ti o bo ọpọlọpọ awọn apakan ti Quarkus ati awọn apẹẹrẹ ti lilo rẹ:

1. Iṣafihan Quarkus: Ilana Java Next generation fun Kubernetes

Nipasẹ Thomas Qvarnstrom ati Jason Greene
Ibi-afẹde ti iṣẹ akanṣe Quarkus ni lati ṣẹda pẹpẹ Java kan fun Kubernetes ati awọn agbegbe ti ko ni olupin, ati lati ṣajọpọ awọn adaṣe siseto ati awọn awoṣe siseto pataki sinu agbegbe akoko asiko kan ki awọn olupilẹṣẹ le ni irọrun yatọ si ọna wọn nigbati wọn n ṣiṣẹ pẹlu ọpọlọpọ awọn faaji ohun elo pinpin. Wa diẹ sii ninu ikowe iforowero ni isalẹ.

2. Quarkus: Superfast Subatomic Java

Nipa: Burr Sutter
Ikẹkọ fidio yii lati ọdọ DevNation Live ṣe afihan bi o ṣe le lo Quarkus lati mu awọn ohun elo Java ti ile-iṣẹ ṣiṣẹ, APIs, microservices, ati awọn iṣẹ olupin ni agbegbe Kubernetes/OpenShift, ṣiṣe wọn kere pupọ, yiyara, ati iwọn diẹ sii.

3. Quarkus ati GraalVM: iyara Hibernate si awọn iyara nla ati idinku si awọn titobi subatomic

Onkọwe: Sanne Grinovero
Lati igbejade iwọ yoo kọ ẹkọ bii Quarkus ṣe wa, bii o ṣe n ṣiṣẹ, ati bii o ṣe gba ọ laaye lati ṣe awọn ile-ikawe eka, bii Hibernate ORM, ni ibamu pẹlu awọn aworan abinibi GraalVM.

4. Kọ ẹkọ lati ṣe agbekalẹ awọn ohun elo ti ko ni olupin

Onkọwe: Martin Luther
Fidio ti o wa ni isalẹ fihan bi o ṣe le ṣẹda ohun elo Java ti o rọrun nipa lilo Quarkus ati mu ṣiṣẹ bi ohun elo alailowaya olupin lori Knative.

5. Quarkus: Ni fun ifaminsi

Onkọwe: Edson Yanaga
Itọsọna fidio kan si ṣiṣẹda iṣẹ akanṣe Quarkus akọkọ rẹ, gbigba ọ laaye lati loye idi ti Quarkus n bori awọn ọkan ti awọn olupilẹṣẹ.

6. Java ati awọn apoti - kini ọjọ iwaju wọn yoo jẹ

Ti a fiweranṣẹ nipasẹ Mark Little
Ifihan yii ṣafihan itan-akọọlẹ Java ati ṣalaye idi ti Quarkus jẹ ọjọ iwaju ti Java.

7. Quarkus: Superfast Subatomic Java

Onkọwe: Dimitris Andreadis
Akopọ ti awọn anfani ti Quarkus ti o ti gba idanimọ lati ọdọ awọn olupilẹṣẹ: ayedero, awọn iyara giga-giga, awọn ile-ikawe ti o dara julọ ati awọn iṣedede.

8. Quarkus ati subatomic rocket awọn ọna šiše

Onkọwe: Clement Escoffier
Nipasẹ iṣọpọ pẹlu GraalVM, Quarkus n pese iriri idagbasoke iyara-iyara ati agbegbe asiko asiko subatomic kan. Onkọwe sọrọ nipa ẹgbẹ ifaseyin ti Quarkus ati bii o ṣe le lo lati kọ awọn ifaseyin ati awọn ohun elo ṣiṣanwọle.

9. Quarkus ati idagbasoke ohun elo iyara ni Eclipse MicroProfile

Onkọwe: John Clingan
Nipa apapọ Eclipse MicroProfile ati Quarkus, awọn olupilẹṣẹ le ṣẹda awọn ohun elo MicroProfile ti o ni ifihan kikun ti o ṣe ifilọlẹ ni mewa ti milliseconds. Fidio naa lọ sinu awọn alaye lori bi o ṣe le ṣe koodu ohun elo MicroProfile ti a fi sinu apoti fun imuṣiṣẹ lori pẹpẹ Kubernetes.

10. Java, "Turbo" version

Onkọwe: Marcus Biel
Onkọwe fihan bi o ṣe le lo Quarkus lati ṣẹda awọn apoti Java ti o kere pupọ, ti o yara pupọ ti o mu awọn aṣeyọri gidi ṣiṣẹ, paapaa ni awọn agbegbe ti ko ni olupin.



orisun: www.habr.com

Fi ọrọìwòye kun