Ignite Service Grid - Reboot

Fis-26 ta’ Frar, għamilna laqgħa ta’ Apache Ignite GreenSource, fejn tkellmu kontributuri għall-proġett open source Apache Ignite. Avveniment importanti fil-ħajja ta 'din il-komunità kien ir-ristrutturar tal-komponent Ignite Service Grid, li jippermettilek li tuża mikroservizzi tad-dwana direttament fi cluster Ignite. Huwa tkellem dwar dan il-proċess diffiċli fil-laqgħa Vyacheslav Daradur, inġinier tas-softwer u kontributur ta' Apache Ignite għal aktar minn sentejn.

Ignite Service Grid - Reboot

Nibdew b'dak li huwa Apache Ignite b'mod ġenerali. Din hija database li hija ħażna ta 'Key/Valur distribwita b'appoġġ għal SQL, transazzjoni u caching. Barra minn hekk, Ignite jippermettilek li tuża servizzi tad-dwana direttament fi cluster Ignite. L-iżviluppatur għandu aċċess għall-għodod kollha li jipprovdi Ignite - strutturi tad-dejta mqassma, Messaging, Streaming, Compute u Data Grid. Pereżempju, meta tuża Data Grid, il-problema tal-amministrazzjoni ta' infrastruttura separata għall-ħażna tad-data u, bħala konsegwenza, l-ispejjeż ġenerali li jirriżultaw jisparixxu.

Ignite Service Grid - Reboot

Bl-użu tal-API tal-Grid tas-Servizz, tista' tuża servizz billi sempliċement tispeċifika l-iskema tal-iskjerament u, għaldaqstant, is-servizz innifsu fil-konfigurazzjoni.

Tipikament, skema ta' skjerament hija indikazzjoni tan-numru ta' istanzi li għandhom jiġu skjerati fuq nodi ta' cluster. Hemm żewġ skemi ta' skjerament tipiċi. L-ewwel huwa Cluster Singleton: fi kwalunkwe ħin partikolari, istanza waħda ta 'servizz għall-utent hija garantita li tkun disponibbli fil-cluster. It-tieni huwa Node Singleton: istanza waħda tas-servizz hija skjerata fuq kull node tal-cluster.

Ignite Service Grid - Reboot

L-utent jista 'wkoll jispeċifika n-numru ta' każijiet ta 'servizz fil-cluster kollu u jiddefinixxi predicat għall-filtrazzjoni ta' nodi xierqa. F'dan ix-xenarju, Service Grid innifsu se jikkalkula l-aħjar distribuzzjoni għall-iskjerament tas-servizzi.

Barra minn hekk, hemm karatteristika bħal Affinity Service. L-affinità hija funzjoni li tiddefinixxi r-relazzjoni taċ-ċwievet għall-ħitan u r-relazzjoni tal-partijiet għan-nodi fit-topoloġija. Bl-użu taċ-ċavetta, tista 'tiddetermina n-nodu primarju li fuqu hija maħżuna d-dejta. B'dan il-mod tista 'tassoċja s-servizz tiegħek stess ma' cache tal-funzjoni taċ-ċavetta u ta 'affinità. Jekk tinbidel il-funzjoni tal-affinità, isseħħ riallokazzjoni awtomatika. B'dan il-mod, is-servizz dejjem ikun jinsab qrib id-dejta li jeħtieġ li jimmanipula, u, għaldaqstant, inaqqas l-ispiża ġenerali tal-aċċess għall-informazzjoni. Din l-iskema tista 'tissejjaħ tip ta' kompjuters kollokati.

Issa li sirna nafu x'inhi s-sbuħija ta 'Service Grid, ejja nitkellmu dwar l-istorja tal-iżvilupp tagħha.

Dak li ġara qabel

L-implimentazzjoni preċedenti ta' Service Grid kienet ibbażata fuq il-cache tas-sistema transazzjonali replikata ta' Ignite. Il-kelma "cache" f'Ignite tirreferi għall-ħażna. Jiġifieri, din mhix xi ħaġa temporanja, kif tista 'taħseb. Minkejja l-fatt li l-cache hija replikata u kull node fih is-sett tad-dejta kollu, ġewwa l-cache għandu rappreżentazzjoni maqsuma. Dan huwa dovut għall-ottimizzazzjoni tal-ħażna.

Ignite Service Grid - Reboot

X'ġara meta l-utent ried juża s-servizz?

  • In-nodi kollha fil-cluster abbonaw biex jaġġornaw id-dejta fil-ħażna bl-użu tal-mekkaniżmu ta' Mistoqsija Kontinwu inkorporat.
  • In-nodu tal-bidu, taħt transazzjoni kommessa bil-qari, għamel rekord fid-database li kien fih il-konfigurazzjoni tas-servizz, inkluża l-istanza serjali.
  • Meta nnotifikat bi dħul ġdid, il-koordinatur ikkalkula d-distribuzzjoni abbażi tal-konfigurazzjoni. L-oġġett li jirriżulta nkiteb lura fid-database.
  • Jekk nodu kien parti mid-distribuzzjoni, il-koordinatur kellu jużah.

Dak li ma jaqbilniex

F'xi punt wasalna għall-konklużjoni: dan mhux il-mod kif taħdem mas-servizzi. Kien hemm diversi raġunijiet.

Jekk seħħ xi żball waqt l-iskjerament, allura jista 'jinstab biss mir-zkuk tan-node fejn ġara kollox. Kien hemm biss skjerament asinkroniku, għalhekk wara li rritorna l-kontroll lill-utent mill-metodu ta 'skjerament, kien meħtieġ xi żmien addizzjonali biex jinbeda s-servizz - u matul dan iż-żmien l-utent ma seta' jikkontrolla xejn. Sabiex tiżviluppa aktar is-Service Grid, toħloq karatteristiċi ġodda, tattira utenti ġodda u tagħmel il-ħajja ta 'kulħadd aktar faċli, xi ħaġa trid tinbidel.

Meta nfasslu l-Grid tas-Servizz il-ġdid, l-ewwel nett ridna nipprovdu garanzija ta 'skjerament sinkroniku: hekk kif l-utent irritorna l-kontroll mill-API, seta' juża s-servizzi immedjatament. Ridt ukoll nagħti lill-inizjatur l-abbiltà li jimmaniġġja l-iżbalji ta' skjerament.

Barra minn hekk, ridt nissimplifika l-implimentazzjoni, jiġifieri, titbiegħed mit-tranżazzjonijiet u l-ibbilanċjar mill-ġdid. Minkejja l-fatt li l-cache hija replikata u m'hemm l-ebda bilanċ, inqalgħu problemi waqt skjerament kbir b'ħafna nodi. Meta t-topoloġija tinbidel, in-nodi jeħtieġ li jiskambjaw informazzjoni, u bi skjerament kbir, din id-dejta tista 'tiżen ħafna.

Meta t-topoloġija kienet instabbli, il-koordinatur kellu bżonn jikkalkula mill-ġdid id-distribuzzjoni tas-servizzi. U b'mod ġenerali, meta jkollok taħdem ma 'tranżazzjonijiet fuq topoloġija instabbli, dan jista' jwassal għal żbalji diffiċli biex jiġu mbassra.

Problemi

X'inhuma l-bidliet globali mingħajr problemi ta' akkumpanjament? L-ewwel waħda minn dawn kienet bidla fit-topoloġija. Trid tifhem li fi kwalunkwe mument, anke fil-mument tal-iskjerament tas-servizz, node jista’ jidħol jew joħroġ mill-cluster. Barra minn hekk, jekk fil-ħin tal-iskjerament in-nodu jingħaqad mal-cluster, ikun meħtieġ li l-informazzjoni kollha dwar is-servizzi tiġi trasferita b'mod konsistenti lin-nodu l-ġdid. U qed nitkellmu mhux biss dwar dak li diġà ġie skjerat, iżda wkoll dwar skjeramenti attwali u futuri.

Din hija biss waħda mill-problemi li jistgħu jinġabru f'lista separata:

  • Kif tuża servizzi konfigurati b'mod statiku fl-istartjar tan-node?
  • Tħalli node mill-cluster - x'għandek tagħmel jekk in-nodu jospita servizzi?
  • X'għandek tagħmel jekk il-koordinatur ikun inbidel?
  • X'għandek tagħmel jekk il-klijent jerġa 'jikkonnettja mal-cluster?
  • It-talbiet ta' attivazzjoni/diżattivazzjoni jeħtieġ li jiġu pproċessati u kif?
  • X'jiġri jekk talbu għall-qerda tal-cache, u għandna servizzi ta 'affinità marbuta magħha?

U dan mhux kollox.

deċiżjoni

Bħala mira, għażilna l-approċċ Immexxi mill-Avvenimenti bl-implimentazzjoni tal-komunikazzjoni tal-proċess bl-użu ta 'messaġġi. Ignite diġà timplimenta żewġ komponenti li jippermettu li n-nodi jgħaddu messaġġi bejniethom - komunikazzjoni-spi u skoperta-spi.

Ignite Service Grid - Reboot

Communication-spi jippermetti li n-nodi jikkomunikaw direttament u jgħaddu messaġġi. Huwa adattat tajjeb biex jintbagħtu ammonti kbar ta 'dejta. Discovery-spi jippermettilek li tibgħat messaġġ lin-nodi kollha fil-cluster. Fl-implimentazzjoni standard, dan isir bl-użu ta 'topoloġija ċirku. Hemm ukoll integrazzjoni ma 'Zookeeper, f'dan il-każ tintuża topoloġija stilla. Punt ieħor importanti ta 'min jinnota huwa li l-iskoperta-spi jipprovdi garanziji li l-messaġġ definittivament se jitwassal fl-ordni korretta lin-nodi kollha.

Ejja nħarsu lejn il-protokoll tal-iskjerament. It-talbiet kollha tal-utenti għall-iskjerament u l-iskjerament jintbagħtu permezz ta' discovery-spi. Dan jagħti dan li ġej garanziji:

  • It-talba tiġi riċevuta min-nodi kollha fil-cluster. Dan jippermetti li t-talba tkompli l-ipproċessar meta l-koordinatur jinbidel. Dan ifisser ukoll li f'messaġġ wieħed, kull node se jkollu l-metadata kollha meħtieġa, bħall-konfigurazzjoni tas-servizz u l-istanza serjali tagħha.
  • L-ordni strett tat-twassil tal-messaġġi jgħin biex isolvi kunflitti ta' konfigurazzjoni u talbiet li jikkompetu.
  • Peress li d-dħul tan-nodu fit-topoloġija huwa wkoll ipproċessat permezz ta 'skoperta-spi, in-nodu l-ġdid se jirċievi d-dejta kollha meħtieġa biex taħdem mas-servizzi.

Meta tasal talba, in-nodi fil-cluster jivvalidawha u joħolqu ħidmiet ta' pproċessar. Dawn il-kompiti jitqiegħdu fil-kju u mbagħad jiġu pproċessati f'ħajt ieħor minn ħaddiem separat. Huwa implimentat b'dan il-mod minħabba li l-iskjerament jista 'jieħu ammont sinifikanti ta' żmien u jdewwem il-fluss ta 'skoperta għalja b'mod intollerabbli.

It-talbiet kollha mill-kju jiġu pproċessati mill-maniġer tal-iskjerament. Għandu ħaddiem speċjali li jiġbed kompitu minn dan il-kju u jinizjalizzah biex jibda l-iskjerament. Wara dan, iseħħu l-azzjonijiet li ġejjin:

  1. Kull nodu jikkalkula b'mod indipendenti d-distribuzzjoni grazzi għal funzjoni ta 'assenjazzjoni deterministika ġdida.
  2. In-nodi jiġġeneraw messaġġ bir-riżultati tal-iskjerament u jibagħtu lill-koordinatur.
  3. Il-koordinatur jaggrega l-messaġġi kollha u jiġġenera r-riżultat tal-proċess kollu ta 'skjerament, li jintbagħat permezz ta' discovery-spi lin-nodi kollha fil-cluster.
  4. Meta r-riżultat jiġi riċevut, il-proċess ta 'skjerament jintemm, u wara l-kompitu jitneħħa mill-kju.

Ignite Service Grid - Reboot
Disinn ġdid immexxi mill-avvenimenti: org.apache.ignite.internal.processors.service.IgniteServiceProcessor.java

Jekk iseħħ żball waqt l-iskjerament, in-nodu immedjatament jinkludi dan l-iżball f'messaġġ li jibgħat lill-koordinatur. Wara l-aggregazzjoni tal-messaġġi, il-koordinatur ikollu informazzjoni dwar l-iżbalji kollha waqt l-iskjerament u jibgħat dan il-messaġġ permezz ta' discovery-spi. Informazzjoni dwar l-iżball tkun disponibbli fuq kwalunkwe node fil-cluster.

L-avvenimenti importanti kollha fis-Service Grid huma pproċessati bl-użu ta' dan l-algoritmu operattiv. Pereżempju, it-tibdil tat-topoloġija huwa wkoll messaġġ permezz ta 'skoperta-spi. U b'mod ġenerali, meta mqabbel ma 'dak li kien qabel, il-protokoll irriżulta li kien pjuttost ħafif u affidabbli. Biżżejjed biex tittratta kwalunkwe sitwazzjoni waqt l-iskjerament.

X'se jiġri wara

Issa dwar il-pjanijiet. Kwalunkwe bidla kbira għall-proġett Ignite titlesta bħala inizjattiva ta 'titjib Ignite, imsejħa IEP. Id-disinn mill-ġdid tal-Grid tas-Servizz għandu wkoll IEP - IEP #17 bit-titolu mocking “Oil change in the Service Grid”. Imma fil-fatt, aħna ma biddilniex iż-żejt tal-magna, iżda l-magna kollha.

Qsamna l-kompiti fl-IEP f'2 fażijiet. L-ewwel hija fażi ewlenija, li tikkonsisti f'ħidma mill-ġdid tal-protokoll tal-iskjerament. Diġà hija inkluża fil-kaptan, tista 'tipprova l-Grid tas-Servizz il-ġdid, li se tidher fil-verżjoni 2.8. It-tieni fażi tinkludi ħafna kompiti oħra:

  • Iskjerament mill-ġdid sħun
  • Verżjoni tas-servizz
  • Żieda fit-tolleranza tal-ħsarat
  • Klijent irqiq
  • Għodod għall-monitoraġġ u l-kalkolu ta 'metriċi varji

Fl-aħħarnett, nistgħu nagħtuk parir dwar Service Grid għall-bini ta’ sistemi li jifilħu għall-ħsarat u ta’ disponibbiltà għolja. Nistednuk ukoll iżżurna fuq dev-lista и lista tal-utenti taqsam l-esperjenza tiegħek. L-esperjenza tiegħek hija tassew importanti għall-komunità se tgħinek tifhem fejn timxi wara, kif tiżviluppa l-komponent fil-futur.

Sors: www.habr.com

Żid kumment