Mar a bhios Quarkus a’ cothlamadh prògramadh riatanach agus reactive

Am-bliadhna tha sinn an dùil cuspairean container a leasachadh gu mòr, Java dùthchasach Cloud и Kubernetes. Bidh leantainn loidsigeach de na cuspairean sin na sgeulachd mu fhrèam Quarkus, mar-thà beachdachadh air Habré. Chan eil an artaigil an-diugh nas lugha mu dhealbhadh “Subatomic superfast Java” agus barrachd mun ghealladh a bheir Quarkus gu Iomairt.

Mar a bhios Quarkus a’ cothlamadh prògramadh riatanach agus reactive

Tha fèill mhòr air Java agus an JVM fhathast, ach nuair a bhios iad ag obair le teicneòlasan gun fhrithealaiche agus meanbh-sheirbheisean dùthchasach sgòthan, thathas a’ cleachdadh Java agus cànanan JVM eile nas lugha agus nas lugha leis gu bheil iad a’ gabhail cus àite cuimhne agus gu bheil iad ro shlaodach airson an luchdachadh, gan dèanamh. gu math freagarrach airson a chleachdadh le soithichean geàrr-ùine. Gu fortanach, tha an suidheachadh seo a-nis a’ tòiseachadh ag atharrachadh le taing dha Quarkus.

Tha Java subatomic fìor-luath air ìre ùr a ruighinn!

42 fiosan, 8 mìosan de dh’ obair coimhearsnachd agus 177 leasaiche iongantach - b’ e toradh a h-uile càil a chaidh fhoillseachadh san t-Samhain 2019 Cuarc 1.0, brath-naidheachd a tha a’ comharrachadh clach-mhìle chudromach ann an leasachadh a’ phròiseict agus a tha a’ tabhann tòrr fheartan agus chomasan fionnar (faodaidh tu barrachd a leughadh mun deidhinn ann an sanas).

An-diugh seallaidh sinn dhut mar a bhios Quarkus a’ cothlamadh mhodalan prògramadh riatanach is reactive ann an aon chridhe reactive. Tòisichidh sinn le eachdraidh ghoirid agus an uairsin thèid sinn a-steach gu mion-fhiosrachadh mu dè a th’ ann am prìomh dhualchas reactive Quarkus agus ciamar Java- Faodaidh luchd-leasachaidh brath a ghabhail air na buannachdan sin.

Microsheirbheisean, ailtireachd air a stiùireadh le tachartas и gun fhrithealaiche-functions - tha seo uile, mar a chanas iad, air an àrdachadh an-diugh. O chionn ghoirid, tha cruthachadh ailtireachd sgòthan-cridhe air fàs mòran nas fhasa agus nas ruigsinneach, ach tha duilgheadasan ann fhathast - gu sònraichte do luchd-leasachaidh Java. Mar eisimpleir, a thaobh gnìomhan gun fhrithealaiche agus microservices, tha feum èiginneach air ùine tòiseachaidh a lughdachadh, caitheamh cuimhne a lughdachadh, agus an leasachadh a dhèanamh nas goireasaiche agus nas tlachdmhoire. Tha Java air grunn leasachaidhean a dhèanamh anns na bliadhnachan mu dheireadh, leithid gnìomhachd ergonomics leasaichte airson soithichean agus mar sin air adhart. Ach, tha e fhathast dùbhlanach faighinn Java gus obrachadh gu ceart ann an soitheach. Mar sin tòisichidh sinn le bhith a’ coimhead air cuid de na iom-fhillteachd gnèitheach aig Java, a tha gu sònraichte gann nuair a bhios sinn a’ leasachadh thagraidhean Java a tha ag amas air soithichean.

An toiseach, leig dhuinn sùil a thoirt air eachdraidh.

Mar a bhios Quarkus a’ cothlamadh prògramadh riatanach agus reactive

Sruthan agus soithichean

A’ tòiseachadh le dreach 8u131, thòisich Java air barrachd no nas lugha a’ toirt taic do shoithichean mar thoradh air leasachaidhean ann an gnìomhachd ergonomics. Gu sònraichte, tha fios aig an JVM a-nis cia mheud cores pròiseasar air a bheil e a ’ruith agus is urrainn dhaibh amaran snàithlean a rèiteachadh - mar as trice forc / amaran còmhla - a rèir sin. Gu dearbh, tha seo fìor mhath, ach canaidh sinn gu bheil tagradh lìn traidiseanta againn a bhios a ’cleachdadh servlets HTTP agus a’ ruith ann an Tomcat, Jetty, msaa. Mar thoradh air an sin, bheir an tagradh seo snàithlean fa-leth do gach iarrtas agus leigidh e leis an t-snàthainn seo a bhacadh fhad ‘s a tha thu a’ feitheamh ri gnìomhachd I / O, mar eisimpleir, nuair a gheibh thu cothrom air an stòr-dàta, faidhlichean no seirbheisean eile. Is e sin, chan eil meud a leithid de thagradh an urra ris an àireamh de choraichean a tha rim faighinn, ach air an àireamh de dh’ iarrtasan aig an aon àm. A bharrachd air an sin, tha seo a’ ciallachadh nach bi cuotathan no crìochan ann an Kubernetes air an àireamh de choraichean gu mòr na chuideachadh an seo, agus thig a’ chùis gu crìch le smeòrach.

Sàrachadh cuimhne

Is e cuimhne nan snàithleanan. Agus chan e panacea a th’ ann an crìochan cuimhne taobh a-staigh inneal. Dìreach tòisich air an àireamh de thagraidhean agus snàithleanan a mheudachadh, agus nas luaithe no nas fhaide air adhart thig thu tarsainn air àrdachadh èiginneach ann am tricead suidse agus, mar thoradh air sin, crìonadh coileanaidh. Cuideachd, ma chleachdas an tagradh agad frèaman microservice traidiseanta, no ma cheanglas e ri stòr-dàta, no ma chleachdas e caching, no ma chleachdas e cuimhne air dhòigh eile, tha e follaiseach gu bheil feum agad air inneal a leigeas leat coimhead taobh a-staigh an JVM agus faicinn mar a stiùireas e cuimhne gun a bhith ga mharbhadh. JVM fhèin (mar eisimpleir, XX:+UseCGroupMemoryLimitForHeap). Agus eadhon ged, bho Java 9, tha an JVM air ionnsachadh gabhail ri cgroups agus atharrachadh a rèir sin, tha glèidheadh ​​​​agus riaghladh cuimhne fhathast na chùis caran toinnte.

Cuotas agus crìochan

Thug Java 11 a-steach taic airson cuotathan CPU (mar PreferContainerQuotaForCPUCCount). Bidh Kubernetes cuideachd a’ tabhann taic airson crìochan agus cuotathan. Tha, tha seo uile a’ dèanamh ciall, ach ma tha an tagradh a-rithist nas àirde na a’ chuota a chaidh a shònrachadh, bidh sinn a-rithist a’ tighinn gu crìch leis a’ mheud - mar a tha fìor le tagraidhean traidiseanta Java - air a dhearbhadh leis an àireamh de choraichean agus le bhith a’ riarachadh snàithlean fa leth airson gach fear. iarrtus, an sin is beag ciall an so uile.
A bharrachd air an sin, ma chleachdas tu cuotathan is crìochan no gnìomhan sgèile a-mach an àrd-ùrlar a tha mar bhunait air Kubernetes, chan eil an duilgheadas cuideachd ga fhuasgladh fhèin. Bidh sinn dìreach a’ cosg barrachd ghoireasan air fuasgladh fhaighinn air an duilgheadas thùsail no a’ cosg cus. Agus mas e siostam làn luchd a th’ ann ann an sgòth poblach poblach, cha mhòr gu cinnteach bidh sinn a’ cleachdadh barrachd ghoireasan na tha a dhìth oirnn.

Agus dè a dhèanamh le seo uile?

Gus a chuir gu sìmplidh, cleachd leabharlannan agus frèaman I / O asyncronach agus gun bhacadh mar Netty, Vert.x no Akka. Tha iad tòrr nas freagarraiche airson a bhith ag obair ann an soithichean air sgàth an nàdar reactive. Mar thoradh air nach eil bacadh air I/O, faodaidh an aon snàithlean grunn iarrtasan aig an aon àm a phròiseasadh. Fhad ‘s a tha aon iarrtas a’ feitheamh ri toraidhean I / O, tha an giullachd snàithlean air a leigeil ma sgaoil agus air a ghabhail thairis le iarrtas eile. Agus nuair a ruigeas toraidhean I/O mu dheireadh, leanar air adhart a’ giullachd a’ chiad iarrtas. Le bhith a’ giullachd iarrtasan eadar-duilleach taobh a-staigh an aon snàithlean, faodaidh tu an àireamh iomlan de shnàithleanan a lughdachadh agus caitheamh ghoireasan a lughdachadh airson iarrtasan giollachd.

Le I/O gun bhacadh, bidh an àireamh de choraichean gu bhith na phrìomh pharamadair oir bidh e a’ dearbhadh an àireamh de shnàithleanan I/O a ghabhas cur gu bàs aig an aon àm. Nuair a thèid a chleachdadh gu ceart, leigidh seo leat an luchd eadar coraichean a sgaoileadh gu h-èifeachdach agus eallach obrach nas àirde a làimhseachadh le nas lugha de ghoireasan.

Ciamar, tha sin uile?

Chan e, tha rudeigin eile ann. Bidh prògramadh ath-ghnìomhach a’ cuideachadh le bhith a’ dèanamh feum nas fheàrr de ghoireasan, ach thig e aig prìs cuideachd. Gu sònraichte, feumaidh an còd a bhith air ath-sgrìobhadh a rèir prionnsapalan neo-bhacadh agus casg a chuir air snàithleanan I / O. Agus tha seo na mhodail gu tur eadar-dhealaichte de leasachadh agus coileanadh. Agus ged a tha tòrr leabharlannan feumail an seo, tha e fhathast na atharrachadh radaigeach anns an dòigh smaoineachaidh àbhaisteach.

An toiseach, feumaidh tu ionnsachadh mar a sgrìobhas tu còd a tha a 'ruith asyncronach. Cho luath ‘s a thòisicheas tu a’ cleachdadh I/O gun bhacadh, feumaidh tu sònrachadh gu soilleir dè bu chòir tachairt nuair a gheibhear freagairt do iarrtas. Cha bhith dìreach bacadh agus feitheamh ag obair tuilleadh. An àite sin, faodaidh tu fios air ais a chuir seachad, prògramadh reactive a chleachdadh no leantainn air adhart. Ach chan e sin a h-uile càil: gus I / O neo-bacadh a chleachdadh, feumaidh tu an dà chuid frithealaichean agus teachdaichean nach eil a’ bacadh, agus as fheàrr anns a h-uile àite. A thaobh HTTP, tha a h-uile dad sìmplidh, ach tha stòran-dàta, siostaman faidhle, agus mòran a bharrachd ann cuideachd.

Agus ged a tha ath-ghnìomhachd deireadh-gu-deireadh iomlan a’ meudachadh èifeachdas, faodaidh an gluasad seo a bhith duilich a stobadh ann an cleachdadh. Mar sin, bidh an comas còd ath-ghnìomhach agus riatanach a chur còmhla na ro-riatanach airson:

  1. Cleachd goireasan gu h-èifeachdach anns na raointean as luchdaichte den t-siostam bathar-bog;
  2. Cleachd còd stoidhle nas sìmplidh anns na pàirtean a tha air fhàgail.

A 'toirt a-steach Quarkus

Gu fìrinneach, is e seo brìgh Quarkus - gus modalan ath-ghnìomhach agus riatanach a thoirt còmhla taobh a-staigh aon àrainneachd runtime.

Tha Quarkus stèidhichte air Vert.x agus Netty, le raon de fhrèaman reactive agus leudachadh air a’ mhullach gus an leasaiche a chuideachadh. Tha Quarkus air a dhealbhadh airson a bhith a’ togail chan e a-mhàin microservices HTTP, ach cuideachd ailtireachd air a stiùireadh le tachartas. Air sgàth a nàdar reactive, bidh e ag obair gu fìor èifeachdach le siostaman teachdaireachd (Apache Kafka, AMQP, msaa).

Is e an cleas mar a chleachdas tu an aon einnsean reactive airson an dà chuid còd riatanach agus reactive.

Mar a bhios Quarkus a’ cothlamadh prògramadh riatanach agus reactive

Bidh Quarkus a’ dèanamh seo gu sgoinneil. Tha an roghainn eadar deatamach agus reactive follaiseach - cleachd kernel reactive airson an dà chuid. Is e an rud a tha dha-rìribh na chuideachadh le còd luath, neo-bhacadh a bhios a’ làimhseachadh cha mhòr a h-uile càil a thèid tron ​​​​snàthainn lùb tachartais, aka snàithlean IO. Ach ma tha tagraidhean clasaigeach REST no taobh teachdaiche agad, tha modal prògramadh riatanach aig Quarkus deiseil. Mar eisimpleir, tha taic HTTP ann an Quarkus stèidhichte air cleachdadh einnsean neo-bacadh agus reactive (Eclipse Vert.x agus Netty). Thèid a h-uile iarrtas HTTP a gheibh an tagradh agad a chuir tro lùb tachartais (IO Thread) an toiseach agus an uairsin a chuir chun phàirt den chòd a bhios a’ riaghladh nan iarrtasan. A rèir an ceann-uidhe, faodar an còd riaghlaidh iarrtas a ghairm taobh a-staigh snàithlean air leth (an t-snàthainn neach-obrach ris an canar, air a chleachdadh a thaobh servlets agus Jax-RS) no cleachd an t-snàthainn stòr I / O (slighe ath-ghnìomhach).

Mar a bhios Quarkus a’ cothlamadh prògramadh riatanach agus reactive

Bidh luchd-ceangail siostam teachdaireachd a 'cleachdadh luchd-dèiligidh nach eil a' bacadh a 'ruith air mullach an einnsean Vert.x. Mar sin, faodaidh tu teachdaireachdan a chuir, fhaighinn agus a phròiseasadh gu h-èifeachdach bho shiostaman meadhan bathar teachdaireachd.

Air an làraich Quarkus.io Seo cuid de na clasaichean oideachaidh math a chuidicheas tu gus tòiseachadh le Quarkus:

Tha sinn cuideachd air clasaichean làimhe air-loidhne a chruthachadh gus diofar thaobhan de phrògramadh ath-ghnìomhach a theagasg dhut ann an dìreach brobhsair, chan eil feum air IDE, agus chan eil feum air coimpiutair. Gheibh thu na leasanan seo an seo.

Goireasan feumail

10 leasanan bhidio air Quarkus gus eòlas fhaighinn air a’ chuspair

Mar a tha iad ag ràdh air an làrach-lìn Quarkus.io, Cuarcus An e sin e Kubernetes- stac Java stèidhichte, air a dhealbhadh gu sònraichte airson GraalVM agus OpenJDK HotSpot agus air a chruinneachadh bho na leabharlannan agus inbhean Java as fheàrr.

Gus do chuideachadh le bhith a’ tuigsinn a’ chuspair, tha sinn air 10 clasaichean bhidio a thaghadh a tha a’ còmhdach diofar thaobhan de Quarkus agus eisimpleirean de a chleachdadh:

1. A 'toirt a-steach Quarkus: Frèam Java an ath ghinealach airson Kubernetes

Le Thomas Qvarnstrom agus Jason Greene
Is e amas pròiseact Quarkus àrd-ùrlar Java a chruthachadh airson Kubernetes agus àrainneachdan gun fhrithealaiche, agus modalan prògramadh ath-ghnìomhach agus riatanach a chur còmhla ann an aon àrainneachd runtime gus an urrainn do luchd-leasachaidh an dòigh-obrach aca atharrachadh gu sùbailte nuair a bhios iad ag obair le raon farsaing de ailtireachd tagraidh sgaoilte. Faigh a-mach barrachd anns an òraid tòiseachaidh gu h-ìosal.

2. Quarkus: Superfast Subatomic Java

Le: Burr Sutter
Tha an oideachadh bhidio seo bho DevNation Live a’ sealltainn mar a chleachdas tu Quarkus gus tagraidhean Java iomairt, APIan, microservices, agus gnìomhan gun fhrithealaiche a bharrachadh ann an àrainneachd Kubernetes / OpenShift, gan dèanamh tòrr nas lugha, nas luaithe agus nas scalable.

3. Quarkus agus GraalVM: a 'luathachadh cadal a' gheamhraidh gu astaran fìor mhath agus ga lughdachadh gu meudan subatomic

Ùghdar: Sanne Grinovero
Bhon taisbeanadh ionnsaichidh tu mar a thàinig Quarkus gu bhith, mar a tha e ag obair, agus mar a leigeas e leat leabharlannan iom-fhillte a dhèanamh, leithid Hibernate ORM, a tha co-chosmhail ri ìomhaighean dùthchasach GraalVM.

4. Ionnsaich mar a leasaicheas tu iarrtasan gun fhrithealaiche

Ùghdar: Martin Luther
Tha am bhidio gu h-ìosal a’ sealltainn mar a chruthaicheas tu tagradh Java sìmplidh a’ cleachdadh Quarkus agus a chleachdadh mar thagradh gun fhrithealaiche air Knative.

5. Quarkus: Dèan còdadh spòrsail

Ùghdar: Edson Yanaga
Stiùireadh bhidio mu bhith a’ cruthachadh a’ chiad phròiseact Quarkus agad, a’ toirt cothrom dhut tuigsinn carson a tha Quarkus a’ buannachadh cridheachan luchd-leasachaidh.

6. Java agus soithichean - dè an àm ri teachd a bhios aca còmhla

Air fhoillseachadh le Mark Little
Tha an taisbeanadh seo a’ toirt a-steach eachdraidh Java agus a’ mìneachadh carson a tha Quarkus mar àm ri teachd Java.

7. Quarkus: Superfast Subatomic Java

Ùghdar: Dimitris Andreadis
Sealladh farsaing air buannachdan Quarkus a tha air aithne fhaighinn bho luchd-leasachaidh: sìmplidheachd, astaran fìor àrd, na leabharlannan agus na h-inbhean as fheàrr.

8. Quarkus agus siostaman rocaid subatomic

Ùghdar: Clement Escoffier
Tro aonachadh le GraalVM, tha Quarkus a’ toirt seachad eòlas leasachaidh ultra-luath agus àrainneachd runtime subatomic. Tha an t-ùghdar a’ bruidhinn air taobh reactive Quarkus agus mar a chleachdas tu e gus tagraidhean reactive agus sruthadh a thogail.

9. Quarkus agus leasachadh iarrtas luath ann an Eclipse MicroProfile

Ùghdar: Iain Clingan
Le bhith a’ cothlamadh Eclipse MicroProfile agus Quarkus, faodaidh luchd-leasachaidh tagraidhean MicroProfile làn-nochdadh a chruthachadh a bhios a’ cur air bhog ann an deichean de mhillean-seconds. Tha a’ bhidio a’ toirt mion-fhiosrachadh air mar a chòdaicheas tu tagradh MicroProfile container airson a chleachdadh air àrd-ùrlar Kubernetes.

10. Java, "Turbo" dreach

Ùghdar: Marcus Biel
Tha an t-ùghdar a’ sealltainn mar a chleachdas tu Quarkus gus soithichean Java fìor-bheag, fìor-luath a chruthachadh a bheir comas do fhìor adhartasan, gu sònraichte ann an àrainneachdan gun fhrithealaiche.



Source: www.habr.com

Cuir beachd ann