Elementi ta' bini ta' applikazzjonijiet imqassma. Approssimazzjoni żero

Elementi ta' bini ta' applikazzjonijiet imqassma. Approssimazzjoni żero

Id-dinja ma tieqafx. Il-progress joħloq sfidi teknoloġiċi ġodda. Skont ir-rekwiżiti li qed jinbidlu, l-arkitettura tas-sistemi tal-informazzjoni trid tevolvi. Illum se nitkellmu dwar l-arkitettura mmexxija mill-avvenimenti, il-konkorrenza, il-konkorrenza, l-asinkronija, u kif tista 'tgħix fil-paċi ma' dan kollu f'Erlang.

Introduzzjoni

Skont id-daqs tas-sistema mfassla u r-rekwiżiti għaliha, aħna, l-iżviluppaturi, nagħżlu l-metodu ta 'skambju ta' informazzjoni fis-sistema. Fil-biċċa l-kbira tal-każijiet, biex torganizza l-interazzjoni tas-servizzi, għażla ta 'ħidma tista' tkun skema ma 'sensar, pereżempju, ibbażata fuq RabbitMQ jew kafka. Iżda xi drabi l-fluss ta 'avvenimenti, SLA u l-livell ta' kontroll fuq is-sistema huma tali li messaġġi lesti mhumiex adattati għalina. Naturalment, tista 'tikkomplika ftit is-sistema billi tieħu r-responsabbiltà għas-saff tat-trasport u l-formazzjoni tal-clusters, pereżempju billi tuża ZeroMQ jew nanomsg. Iżda jekk is-sistema għandha biżżejjed throughput u kapaċitajiet ta 'cluster Erlang standard, allura l-kwistjoni tal-introduzzjoni ta' entità addizzjonali teħtieġ studju dettaljat u ġustifikazzjoni ekonomika.

Is-suġġett ta 'applikazzjonijiet distribwiti reattivi huwa pjuttost wiesa'. Biex inżommu fil-format tal-artiklu, is-suġġett tad-diskussjoni tal-lum se jkunu biss ambjenti omoġenji mibnija fuq Erlang/Elixir. L-ekosistema Erlang/OTP tippermettilek timplimenta arkitettura reattiva bl-inqas ammont ta 'sforz. Iżda fi kwalunkwe każ, ikollna bżonn saff ta 'messaġġi.

Bażi teoretika

Id-disinn jibda bid-definizzjoni tal-għanijiet u r-restrizzjonijiet. L-għan ewlieni mhuwiex fil-qasam tal-iżvilupp għall-fini tal-iżvilupp. Irridu niksbu għodda sigura u skalabbli li fuq il-bażi tagħha nistgħu noħolqu u, l-aktar importanti, niżviluppaw applikazzjonijiet moderni ta’ diversi livelli: nibdew minn applikazzjonijiet ta’ server wieħed li jservu udjenza żgħira, li aktar tard jistgħu jiżviluppaw fi gruppi ta’ sa 50. -60 nodi, li jispiċċaw b'federazzjonijiet ta 'clusters. Għalhekk, l-għan ewlieni huwa li timmassimizza l-profitti billi titnaqqas l-ispiża tal-iżvilupp u s-sjieda tas-sistema finali.

Ejja nenfasizzaw 4 rekwiżiti ewlenin għas-sistema finali:

  • Сorjentat lejn l-avvenimenti.
    Is-sistema hija dejjem lesta biex tgħaddi mill-fluss ta 'avvenimenti u twettaq l-azzjonijiet meħtieġa;
  • Мiskalabbiltà.
    Blokki individwali jistgħu jiġu skalati kemm vertikalment kif ukoll orizzontalment. Is-sistema kollha għandha tkun kapaċi għal tkabbir orizzontali infinit;
  • Оtolleranza għall-ħsarat.
    Il-livelli kollha u s-servizzi kollha għandhom ikunu jistgħu jirkupraw awtomatikament minn fallimenti;
  • Гħin ta 'rispons garantit.
    Iż-żmien huwa ta 'valur u l-utenti m'għandhomx jistennew wisq.

Ftakar il-fairy tale antik dwar "Il-magna ċkejkna li setgħet"? Sabiex is-sistema ddisinjata toħroġ b'suċċess mill-istadju tal-prototip u tkun progressiva, il-pedament tagħha għandu jissodisfa r-rekwiżiti minimi SMOG.

Punt ieħor huwa miżjud mal-messaġġi bħala għodda infrastrutturali u l-bażi għas-servizzi kollha: faċilità ta 'użu għall-programmaturi.

Orjentat lejn l-avvenimenti

Biex applikazzjoni tikber minn server wieħed għal cluster, l-arkitettura tagħha trid tappoġġja l-akkoppjar maħlul. Il-mudell mhux sinkroniku jissodisfa dan ir-rekwiżit. Fiha, il-mittent u r-riċevitur jieħdu ħsieb it-tagħbija tal-informazzjoni tal-messaġġ u ma joqogħdu jinkwetaw dwar it-trażmissjoni u r-rotta fi ħdan is-sistema.

Skalabbiltà

L-iskalabbiltà u l-effiċjenza tas-sistema huma ħdejn xulxin. Il-komponenti tal-applikazzjoni għandhom ikunu kapaċi jutilizzaw ir-riżorsi kollha disponibbli. Iktar ma nistgħu nużaw il-kapaċità b'mod effiċjenti u l-aħjar metodi ta 'pproċessar tagħna, inqas flus nonfqu fuq it-tagħmir.

Fi ħdan magna waħda, Erlang joħloq ambjent kompetittiv ħafna. Il-bilanċ bejn il-konkorrenza u l-paralleliżmu jista 'jiġi stabbilit billi jintgħażel in-numru ta' ħjut tas-sistema operattiva disponibbli għall-Erlang VM u n-numru ta 'skedaturi li jutilizzaw dawn il-ħjut.
Il-proċessi Erlang ma jaqsmux l-istat u joperaw f'mod li ma jimblokkax. Dan jipprovdi latenza relattivament baxxa u throughput ogħla minn applikazzjonijiet tradizzjonali bbażati fuq l-imblukkar. Scheduler ta 'Erlang jiżgura allokazzjoni ġusta ta' CPU u IO, u n-nuqqas ta 'imblukkar jippermetti li l-applikazzjoni tirrispondi anke waqt l-ogħla tagħbija jew fallimenti.

Fil-livell tal-cluster, il-problema tar-rimi teżisti wkoll. Huwa importanti li l-magni kollha fil-cluster ikunu mgħobbija b'mod ugwali u li n-netwerk ma jkunx mgħobbi żżejjed. Ejja nimmaġinaw sitwazzjoni: it-traffiku tal-utenti jinżel fuq balancers deħlin (haproxy, nginx, eċċ), iqassmu t-talbiet tal-ipproċessar bl-aktar mod ugwali possibbli bejn is-sett ta 'backends disponibbli. Fi ħdan l-infrastruttura tal-applikazzjoni, is-servizz li jimplimenta l-interface meħtieġ huwa biss l-aħħar mil u jeħtieġ li jitlob numru ta 'servizzi oħra biex iwieġeb għat-talba inizjali. It-talbiet interni jeħtieġu wkoll rotta u bilanċ.
Biex timmaniġġja b'mod effettiv il-flussi tad-dejta, il-messaġġi għandhom jipprovdu lill-iżviluppaturi b'interface biex jimmaniġġjaw ir-rotot u l-ibbilanċjar tat-tagħbija. Grazzi għal dan, l-iżviluppaturi se jkunu jistgħu, bl-użu ta 'mudelli ta' mikroservizzi (aggregatur, prokura, katina, fergħa, eċċ), biex isolvu kemm problemi standard kif ukoll dawk li rarament jinqalgħu.

Mil-lat tan-negozju, l-iskalabbiltà hija waħda mill-għodod tal-ġestjoni tar-riskju. Il-ħaġa prinċipali hija li tissodisfa t-talbiet tal-klijenti billi tuża bl-aħjar mod it-tagħmir:

  • Meta l-qawwa tat-tagħmir tiżdied bħala riżultat tal-progress. Mhux se jkun idle minħabba softwer imperfett. Erlang jiskala vertikalment tajjeb u dejjem ikun kapaċi jutilizza l-qlub kollha tas-CPU u l-memorja disponibbli;
  • F'ambjenti sħaba, nistgħu niġġestixxu l-ammont ta 'tagħmir skont it-tagħbija attwali jew prevista u niggarantixxu SLA.

tolleranza għall-ħsarat

Ejja nikkunsidraw żewġ assiomi: "Il-fallimenti huma inaċċettabbli" u "Dejjem se jkun hemm fallimenti." Għal negozju, falliment tas-softwer ifisser telf ta 'flus, u x'inhu agħar, telf ta' reputazzjoni. Bilanċ bejn it-telf possibbli u l-ispiża tal-iżvilupp ta 'softwer tolleranti għall-ħsarat, kompromess jista' spiss jinstab.

Fi żmien qasir, arkitettura li tinkorpora t-tolleranza tal-ħsarat tiffranka l-flus fuq ix-xiri ta 'soluzzjonijiet ta' clustering fuq l-ixkaffa. Huma għaljin u għandhom ukoll bugs.
Fit-tul, arkitettura li tollera l-ħsarat tħallas għaliha nfisha ħafna drabi fl-istadji kollha tal-iżvilupp.
Il-messaġġi fi ħdan il-bażi tal-kodiċi jippermettulek taħdem fid-dettall l-interazzjoni tal-komponenti fis-sistema fl-istadju tal-iżvilupp. Dan jissimplifika l-kompitu tar-rispons u l-ġestjoni tal-fallimenti, peress li l-komponenti kritiċi kollha jimmaniġġjaw il-fallimenti, u s-sistema li tirriżulta taf kif awtomatikament terġa 'lura għan-normal wara falliment mid-disinn.

Reazzjoni

Irrispettivament mill-fallimenti, l-applikazzjoni trid twieġeb għat-talbiet u tissodisfa l-SLA. Ir-realtà hija li n-nies ma jridux jistennew, għalhekk in-negozji jridu jadattaw kif xieraq. Aktar u aktar applikazzjonijiet huma mistennija li jirreaġixxu ħafna.
Applikazzjonijiet li jirrispondu joperaw kważi f'ħin reali. Erlang VM topera fil-modalità artab f'ħin reali. Għal xi oqsma, bħall-kummerċ tal-istokk, il-mediċina, u l-kontroll tat-tagħmir industrijali, il-modalità hard-time reali hija importanti.
Is-sistemi li jirrispondu jtejbu l-UX u jibbenefikaw in-negozju.

Sommarju preliminari

Meta nippjana dan l-artikolu, ridt naqsam l-esperjenza tiegħi tal-ħolqien ta 'sensar tal-messaġġi u l-bini ta' sistemi kumplessi bbażati fuqu. Iżda l-parti teoretika u motivazzjonali rriżulta li kienet pjuttost estensiva.
Fit-tieni parti tal-artikolu, ser nitkellem dwar l-sfumaturi tal-implimentazzjoni tal-punti ta 'skambju, mudelli ta' messaġġi u l-applikazzjoni tagħhom.
Fit-tielet parti se nikkunsidraw kwistjonijiet ġenerali tal-organizzazzjoni tas-servizzi, ir-rotot u l-ibbilanċjar. Ejja nitkellmu dwar in-naħa prattika tal-iskalabbiltà u t-tolleranza tal-ħsarat tas-sistemi.

Tmiem l-ewwel parti.

Фото @lucabravo.

Sors: www.habr.com

Żid kumment