Mga bloke sa pagtukod sa gipang-apod-apod nga mga aplikasyon. Zero nga gibanabana

Mga bloke sa pagtukod sa gipang-apod-apod nga mga aplikasyon. Zero nga gibanabana

Ang kalibutan wala mohunong. Ang pag-uswag nagmugna og bag-ong mga hagit sa teknolohiya. Pinauyon sa nagbag-o nga mga kinahanglanon, ang arkitektura sa mga sistema sa kasayuran kinahanglan nga molambo. Karon maghisgot kami bahin sa arkitektura nga gipadagan sa panghitabo, concurrency, concurrency, asynchrony, ug kung giunsa nimo pagpuyo nga malinawon sa tanan niini sa Erlang.

Pasiuna

Depende sa gidak-on sa gidisenyo nga sistema ug sa mga kinahanglanon alang niini, kami, ang mga developers, mopili sa paagi sa pagbayloay sa impormasyon sa sistema. Sa kadaghanan nga mga kaso, aron maorganisar ang interaksyon sa mga serbisyo, ang usa ka kapilian sa pagtrabaho mahimo nga usa ka laraw sa usa ka broker, pananglitan, base sa RabbitMQ o kafka. Apan usahay ang dagan sa mga panghitabo, SLA ug lebel sa pagkontrol sa sistema ingon nga ang andam nga hinimo nga mensahe dili angay alang kanamo. Siyempre, mahimo nimong komplikado ang sistema sa gamay pinaagi sa pagkuha sa responsibilidad alang sa layer sa transportasyon ug pagporma sa cluster, pananglitan gamit ang ZeroMQ o nanomsg. Apan kung ang sistema adunay igo nga throughput ug mga kapabilidad sa usa ka standard nga Erlang cluster, nan ang isyu sa pagpaila sa usa ka dugang nga entidad nanginahanglan detalyado nga pagtuon ug katarungan sa ekonomiya.

Ang hilisgutan sa reaktibo nga gipang-apod-apod nga mga aplikasyon kay lapad kaayo. Aron magpabilin sa sulod sa pormat sa artikulo, ang hilisgutan sa panaghisgot karon mao lamang ang homogenous nga palibot nga gitukod sa Erlang/Elixir. Ang Erlang/OTP ecosystem nagtugot kanimo sa pagpatuman sa usa ka reaktibo nga arkitektura nga adunay pinakagamay nga paningkamot. Apan sa bisan unsa nga kaso, kinahanglan namon ang usa ka layer sa pagmemensahe.

Teoretikal nga basehan

Ang disenyo nagsugod sa pagtino sa mga tumong ug mga limitasyon. Ang panguna nga katuyoan wala sa lugar sa pag-uswag alang sa kauswagan. Kinahanglan namon nga makakuha usa ka luwas ug mabag-o nga himan nga gibase sa kung diin kami makahimo ug, labi ka hinungdanon, makapalambo sa mga modernong aplikasyon sa lainlaing lebel: sugod sa mga aplikasyon sa single-server nga nagserbisyo sa gamay nga mamiminaw, nga mahimo’g sa ulahi mahimong mga pungpong hangtod sa 50 -60 nodes, nga natapos sa cluster federations. Sa ingon, ang panguna nga katuyoan mao ang pagpadako sa ganansya pinaagi sa pagkunhod sa gasto sa pag-uswag ug pagpanag-iya sa katapusan nga sistema.

Atong ipasiugda ang 4 nga nag-unang mga kinahanglanon alang sa katapusan nga sistema:

  • Π‘oriented sa panghitabo.
    Ang sistema kanunay nga andam sa pag-agi sa dagan sa mga panghitabo ug paghimo sa gikinahanglan nga mga aksyon;
  • Мscalability.
    Ang tagsa-tagsa nga mga bloke mahimong i-scale pareho sa vertical ug horizontally. Ang tibuok sistema kinahanglan nga makahimo sa walay kinutuban nga pinahigda nga pagtubo;
  • Оpagtugot sa sayop.
    Ang tanan nga lebel ug tanan nga mga serbisyo kinahanglan nga awtomatik nga makabawi gikan sa mga kapakyasan;
  • Π“garantiya nga oras sa pagtubag.
    Ang oras bililhon ug ang mga tiggamit kinahanglan dili maghulat ug dugay.

Hinumdumi ang karaang fairy tale mahitungod sa "Ang gamay nga makina nga mahimo"? Aron ang gidisenyo nga sistema malampuson nga makagawas sa prototype nga yugto ug mahimong progresibo, ang pundasyon niini kinahanglan nga makab-ot ang minimum nga mga kinahanglanon SMOG.

Usa pa ka punto ang gidugang sa pagmemensahe ingon usa ka himan sa imprastraktura ug ang sukaranan sa tanan nga mga serbisyo: kadali sa paggamit alang sa mga programmer.

Gipunting sa panghitabo

Alang sa usa ka aplikasyon nga motubo gikan sa usa ka server ngadto sa usa ka cluster, ang arkitektura niini kinahanglan nga mosuporta sa loose coupling. Ang asynchronous nga modelo nagtagbo niini nga kinahanglanon. Diha niini, ang nagpadala ug tigdawat nag-atiman sa impormasyon nga load sa mensahe ug dili mabalaka mahitungod sa transmission ug routing sulod sa sistema.

Scalability

Ang scalability ug ang kaepektibo sa sistema sunod sa usag usa. Ang mga sangkap sa aplikasyon kinahanglan nga magamit ang tanan nga magamit nga mga kapanguhaan. Kon mas episyente ang atong magamit nga kapasidad ug mas maayo ang atong mga pamaagi sa pagproseso, mas gamay ang kwarta nga atong magasto sa kagamitan.

Sulod sa usa ka makina, ang Erlang nagmugna usa ka labi ka kompetisyon nga palibot. Ang balanse tali sa concurrency ug parallelism mahimong itakda pinaagi sa pagpili sa gidaghanon sa mga operating system thread nga anaa sa Erlang VM ug ang gidaghanon sa mga scheduler nga naggamit niini nga mga thread.
Ang mga proseso sa Erlang wala magbahin sa estado ug naglihok sa non-blocking mode. Naghatag kini og medyo ubos nga latency ug mas taas nga throughput kay sa tradisyonal nga blocking-based nga mga aplikasyon. Gisiguro sa scheduler ni Erlang ang patas nga alokasyon sa CPU ug IO, ug ang pagkawala sa pag-block nagtugot sa aplikasyon sa pagtubag bisan sa mga peak load o mga kapakyasan.

Sa lebel sa cluster, anaa usab ang problema sa paglabay. Mahinungdanon nga ang tanan nga mga makina sa cluster parehas nga gikarga ug nga ang network dili ma-overload. Atong mahanduraw ang usa ka sitwasyon: ang trapiko sa tiggamit mitugpa sa umaabot nga mga balanse (haproxy, nginx, etc), sila nag-apod-apod sa mga hangyo sa pagproseso nga parehas kutob sa mahimo tali sa set sa magamit nga mga backend. Sulod sa imprastraktura sa aplikasyon, ang serbisyo nga nagpatuman sa gikinahanglan nga interface mao ra ang katapusang milya ug kinahanglan nga mohangyo sa daghang uban pang mga serbisyo aron matubag ang una nga hangyo. Ang internal nga mga hangyo nagkinahanglan usab og routing ug pagbalanse.
Aron epektibong madumala ang mga dagan sa datos, ang pagmemensahe kinahanglang maghatag sa mga developers og interface aron pagdumala sa routing ug load balancing. Salamat niini, ang mga developers makahimo, gamit ang microservice patterns (aggregator, proxy, chain, branch, etc), sa pagsulbad sa mga standard nga mga problema ug sa mga panagsa ra motungha.

Gikan sa usa ka punto sa negosyo, ang scalability usa sa mga himan sa pagdumala sa peligro. Ang nag-unang butang mao ang pagtagbaw sa mga hangyo sa kustomer pinaagi sa labing maayo nga paggamit sa mga ekipo:

  • Sa diha nga ang gahum sa mga ekipo nagdugang ingon nga resulta sa pag-uswag. Dili kini idle tungod sa dili hingpit nga software. Ang Erlang timbangan nga patindog nga maayo ug kanunay nga magamit ang tanan nga mga core sa CPU ug magamit nga memorya;
  • Sa cloud environment, mahimo natong madumala ang gidaghanon sa mga ekipo depende sa kasamtangan o gitagna nga load ug garantiya ang SLA.

pagtugot sa sayop

Atong tagdon ang duha ka axiom: "Ang mga kapakyasan dili madawat" ug "Adunay kanunay nga mga kapakyasan." Alang sa usa ka negosyo, ang pagkapakyas sa software nagpasabut nga pagkawala sa salapi, ug ang labi ka daotan, pagkawala sa dungog. Ang pagbalanse tali sa posible nga mga kapildihan ug ang gasto sa pagpalambo sa fault-tolerant nga software, usa ka kompromiso ang kasagarang makit-an.

Sa hamubo nga termino, ang usa ka arkitektura nga naglakip sa fault tolerance makatipig salapi sa pagpalit sa mga solusyon sa clustering nga wala sa estante. Sila mga mahal ug sila usab adunay mga bug.
Sa taas nga termino, ang usa ka fault-tolerant nga arkitektura nagbayad alang sa iyang kaugalingon sa daghang mga higayon sa tanan nga mga yugto sa pag-uswag.
Ang pagmemensahe sa sulod sa code base nagtugot kanimo sa pagtrabaho sa detalye sa interaksyon sa mga sangkap sa sulod sa sistema sa yugto sa pag-uswag. Gipasimple niini ang tahas sa pagtubag ug pagdumala sa mga kapakyasan, tungod kay ang tanan nga kritikal nga mga sangkap nagdumala sa mga kapakyasan, ug ang resulta nga sistema nahibal-an kung giunsa ang awtomatikong pagbalik sa normal pagkahuman sa usa ka kapakyasan pinaagi sa disenyo.

Pagkamatubagon

Bisan unsa pa ang mga kapakyasan, ang aplikasyon kinahanglan nga motubag sa mga hangyo ug makigtagbo sa SLA. Ang tinuod mao nga ang mga tawo dili gusto nga maghulat, mao nga ang mga negosyo kinahanglan nga mopahiangay sumala niana. Daghang mga aplikasyon ang gilauman nga labi ka matubag.
Ang mga responsive nga aplikasyon naglihok sa hapit tinuod nga oras. Ang Erlang VM naglihok sa humok nga real-time nga mode. Alang sa pipila ka mga lugar, sama sa stock trading, tambal, ug pagkontrol sa kagamitan sa industriya, ang lisud nga real-time nga mode hinungdanon.
Ang mga responsive nga sistema nagpauswag sa UX ug nakabenepisyo sa negosyo.

Pasiuna nga katingbanan

Kung nagplano niini nga artikulo, gusto nakong ipaambit ang akong kasinatian sa paghimo og usa ka messaging broker ug pagtukod og mga komplikadong sistema base niini. Apan ang teoretikal ug makapadasig nga bahin nahimo nga labi ka halapad.
Sa ikaduha nga bahin sa artikulo, maghisgot ako bahin sa mga nuances sa pagpatuman sa mga punto sa pagbinayloay, mga pattern sa pagmemensahe ug ang ilang aplikasyon.
Sa ikatulo nga bahin atong tagdon ang mga kinatibuk-ang isyu sa pag-organisar sa mga serbisyo, ruta ug pagbalanse. Hisgutan nato ang praktikal nga bahin sa scalability ug fault tolerance sa mga sistema.

Katapusan sa unang bahin.

litrato @lucabravo.

Source: www.habr.com

Idugang sa usa ka comment