Zvivakwa zvekuvaka zvezvikumbiro zvakagoverwa. Zero approximation

Zvivakwa zvekuvaka zvezvikumbiro zvakagoverwa. Zero approximation

Nyika haina kumira zvakanaka. Kufambira mberi kunogadzira matambudziko matsva etekinoroji. Zvinoenderana nekuchinja kwezvinodiwa, dhizaini yeruzivo masisitimu inofanirwa kushanduka. Nhasi tichataura pamusoro pezvivakwa zvinofambiswa nechiitiko, concurrency, concurrency, asynchrony, uye kuti ungararama sei murunyararo nezvose izvi muErlang.

Nhanganyaya

Zvichienderana nehukuru hwehurongwa hwakagadzirwa uye zvinodiwa pairi, isu, vanogadzira, tinosarudza nzira yekuchinjana ruzivo muhurongwa. Muzviitiko zvakawanda, kuronga kupindirana kwemasevhisi, sarudzo yekushanda inogona kunge iri chirongwa chine broker, semuenzaniso, zvichibva paRabbitMQ kana kafka. Asi dzimwe nguva kuyerera kwezviitiko, SLA uye nhanho yekutonga pamusoro pehurongwa hwakadaro zvekuti meseji yakagadzirira-yakagadzirirwa haina kukodzera isu. Ehe, iwe unogona kuomesera sisitimu zvishoma nekutora mutoro wekutakura layer uye kuumbwa kwemasumbu, semuenzaniso uchishandisa ZeroMQ kana nanomsg. Asi kana iyo sisitimu iine zvakakwana kuburikidza nekugona kweyakajairwa Erlang cluster, saka nyaya yekuunza chimwe chinhu chinoda kudzidza kwakadzama uye kururamisira kwehupfumi.

Musoro we reactive distributed applications wakapamhama. Kuchengeta mukati mechimiro chechinyorwa, nyaya yenhaurirano yanhasi inongove yenzvimbo dzakafanana dzakavakwa paErlang/Elixir. Iyo Erlang/OTP ecosystem inokutendera iwe kuti ushandise reactive dhizaini nehushoma hwekuedza. Asi chero zvakadaro, isu tichada meseji layer.

Theoretical hwaro

Dhizaini inotanga nekutsanangura zvinangwa uye zvipingaidzo. Chinangwa chikuru hachisi munzvimbo yebudiriro nekuda kwebudiriro. Isu tinofanirwa kuwana chishandiso chakachengeteka uye chinotyisa pahwaro hwatinogona kugadzira uye, zvakanyanya kukosha, kuvandudza mashandisirwo emazuva ano emazinga akasiyana: kutanga kubva kune-single-server application inoshumira vateereri vashoma, iyo inogona gare gare kukura kuita masumbu anosvika makumi mashanu. -50 nodes, inopera nemasangano emasumbu. Nekudaro, chinangwa chikuru ndechekuwedzera purofiti nekudzikisira mutengo wekusimudzira uye muridzi weiyo yekupedzisira system.

Ngatiratidze 4 zvakakosha zvinodiwa kune yekupedzisira system:

  • Π‘chiitiko-chinorerekera.
    Iyo sisitimu inogara yakagadzirira kupfuura nekuyerera kwezviitiko uye kuita zviito zvinodiwa;
  • Мscalability.
    Mabhuroko ega ega anogona kuyerwa zvese zvakadzika uye zvakachinjika. Iyo yose sisitimu inofanirwa kuve inokwanisa kusingaperi yakachinjika kukura;
  • Оkukanganisa kushivirira.
    Ese mazinga uye ese masevhisi anofanirwa kukwanisa kupora otomatiki kubva mukukundikana;
  • Π“yakavimbiswa nguva yekupindura.
    Nguva yakakosha uye vashandisi havafanire kumirira kwenguva yakareba.

Rangarira ngano yekare nezve "Injini diki yaigona"? Kuti iyo yakagadzirirwa sisitimu ibudirire kubuda muchikamu cheiyo prototype uye ienderere mberi, hwaro hwayo hunofanirwa kusangana nezvinodiwa zvishoma SMOG.

Imwezve pfungwa inowedzerwa kukutumira mameseji sechishandiso chezvivakwa uye hwaro hwese masevhisi: nyore kushandisa kune vanogadzira zvirongwa.

Zvakanangana nechiitiko

Kuti application ikure kubva kune imwechete sevha kuenda kune cluster, dhizaini yayo inofanirwa kutsigira yakasununguka coupling. Iyo asynchronous modhi inosangana nezvinodiwa izvi. Mariri, mutumi uye anogamuchira anotarisira nezve ruzivo rwemeseji uye usanetseka nezve kutapurirana uye nzira mukati meiyo system.

Kukwanisika

Scalability uye mashandiro ehurongwa ari padivi peumwe neumwe. Zvishandiso zvekushandisa zvinofanirwa kukwanisa kushandisa zvese zviripo zviwanikwa. Kunyanya kwatinokwanisa kushandisa kugona uye nekuwedzera kwakaringana nzira dzedu dzekugadzirisa, mari shoma yatinoshandisa pamidziyo.

Mukati memuchina mumwe chete, Erlang inogadzira nzvimbo inokwikwidza zvakanyanya. Chiyero pakati pe concurrency uye parallelism chinogona kusetwa nekusarudza nhamba yeanoshanda sisitimu tambo dziripo kuErlang VM uye huwandu hwevanoronga vanoshandisa idzi tambo.
Erlang maitiro haagoverane nyika uye anoshanda mune isiri-yekuvhara maitiro. Izvi zvinopa yakaderera latency uye yakakwira throughput pane yechinyakare blocking-based application. Erlang's scheduler inovimbisa kugovaniswa kwakaringana kweCPU neIO, uye kusavapo kwekuvharira kunobvumira iyo application kupindura kunyangwe panguva yepamusoro mitoro kana kutadza.

Pachikamu checluster, dambudziko rekurasa riripo zvakare. Izvo zvakakosha kuti michina yese iri musumbu inotakurwa zvakaenzana uye kuti network haina kuwandisa. Ngatifungei mamiriro ezvinhu: traffic yevashandisi inodzika pane anouya mabharanzi (haproxy, nginx, nezvimwewo), ivo vanogovera zvikumbiro zvekugadzirisa zvakaenzana sezvinobvira pakati peseti yezvinowanikwa kumashure. Mukati mezvivakwa zvekushandisa, sevhisi yekushandisa inodiwa interface ingori mamaira yekupedzisira uye inoda kukumbira akati wandei mamwe masevhisi kupindura kuchikumbiro chekutanga. Zvikumbiro zvemukati zvinodawo kufambiswa uye kuenzanisa.
Kuti unyatso kubata kuyerera kwedata, kutumira mameseji kunofanirwa kupa vanogadzira chimiro chekugadzirisa nzira uye kuyera kuyera. Nekuda kweizvi, vanogadzira vanozokwanisa, vachishandisa microservice mapatani (aggregator, proxy, cheni, bazi, nezvimwewo), kugadzirisa ese ari maviri matambudziko uye ayo asingawanzo kumuka.

Kubva pakuona kwebhizinesi, scalability ndeimwe yezvishandiso zvekuchengetedza njodzi. Chinhu chikuru ndechekugutsa zvikumbiro zvevatengi nekushandisa zvakanyanya michina:

  • Apo simba remidziyo rinowedzera semugumisiro wekufambira mberi. Izvo hazvizove zvisina basa nekuda kwesoftware isina kukwana. Erlang anoyera akamira zvakanaka uye anogara achikwanisa kushandisa ese maCPU cores uye iripo ndangariro;
  • Munzvimbo dzemakore, isu tinokwanisa kubata huwandu hwemidziyo zvichienderana neyazvino kana kufanotaura mutoro uye vimbiso yeSLA.

kukanganisa kushivirira

Ngatitarisei zvirevo zviviri: β€œKukundikana hakugamuchirwi” uye β€œKuchagara kuine kukundikana.” Kune bhizinesi, kutadza kwesoftware kunoreva kurasikirwa nemari, uye zvakanyanya kuipa, kurasikirwa kwemukurumbira. Kuenzanisa pakati pekurasikirwa kunogona kuitika uye mutengo wekugadzira-software inoshivirira, chibvumirano chinogona kuwanikwa kazhinji.

Munguva pfupi, chivakwa chinosanganisira kushivirira kukanganisa chinochengetedza mari pakutenga off-the-sherufu clustering solutions. Dzinodhura uye dzinewo tsikidzi.
Nekufamba kwenguva, chivakwa chinoshivirira chinokanganisa chinozvibhadharira kakawanda pamatanho ese ebudiriro.
Kutumira meseji mukati meiyo kodhi base inobvumidza iwe kuti ushande zvakadzama kupindirana kwezvikamu mukati meiyo sisitimu padanho rekusimudzira. Izvi zvinorerutsa basa rekupindura uye kugadzirisa kutadza, sezvo zvese zvakakosha zvinobata kutadza, uye inoguma sisitimu inoziva nzira yekuzvidzorera kune yakajairwa mushure mekutadza nekugadzira.

Kupindura

Pasinei nekutadza, chikumbiro chinofanira kupindura kune zvikumbiro uye kusangana neSLA. Chokwadi ndechekuti vanhu havadi kumirira, saka mabhizinesi anofanira kuchinjika zvinoenderana. Zvikumbiro zvakawanda zvinotarisirwa kuve zvinopindura zvakanyanya.
Anopindura maapplication anoshanda munguva iri pedyo chaiyo. Erlang VM inoshanda mune yakapfava chaiyo-nguva modhi. Kune dzimwe nzvimbo, dzakadai sekutengesa masheya, mushonga, uye kutonga kwemidziyo yemaindasitiri, yakaoma chaiyo-nguva modhi yakakosha.
Anopindura masisitimu anovandudza UX uye anobatsira bhizinesi.

Pfupiso yekutanga

Pakuronga chinyorwa ichi, ndaida kugovera ruzivo rwangu rwekugadzira mameseji broker uye kuvaka masisitimu akaomarara akavakirwa pairi. Asi iyo theoretical uye yekukurudzira chikamu chakazove chakanyanya kuwanda.
Muchikamu chechipiri chechinyorwa, ini ndichataura nezve nuances yekushandisa mapoinzi ekutsinhana, mameseji maitiro uye mashandisiro avo.
Muchikamu chechitatu tichatarisa nyaya dzakajairika dzekuronga masevhisi, nzira uye kuenzanisa. Ngatitaurei nezve iro rinoshanda divi re scalability uye kukanganisa kushivirira kwemasystem.

Kupera kwechikamu chekutanga.

mufananidzo @lucabravo.

Source: www.habr.com

Voeg