Avakirina blokên serîlêdanên belavkirî. Nêzîkî sifir

Avakirina blokên serîlêdanên belavkirî. Nêzîkî sifir

Dinya ranaweste. Pêşkeftin kêşeyên teknolojîk ên nû diafirîne. Li gorî hewcedariyên guheztinê, mîmariya pergalên agahdariyê divê pêş bikeve. Îro em ê li ser mîmariya bûyer-rêveberî, hevdemî, hevdemî, asynkronî, û çawa hûn dikarin bi van hemîyan re li Erlang bi aramî bijîn biaxivin.

Pîrozbahiyê

Li gorî mezinahiya pergala sêwirandî û hewcedariyên wê ve girêdayî, em, pêşdebiran, rêbaza danûstendina agahdariya di pergalê de hilbijêrin. Di pir rewşan de, ji bo organîzekirina danûstendina karûbaran, vebijarkek xebatê dibe ku nexşeyek bi brokerek re be, mînakî, li ser bingeha RabbitMQ an kafka. Lê carinan herikîna bûyeran, SLA û asta kontrola li ser pergalê wusa ne ku peyamên amade ne ji bo me ne guncaw in. Bê guman, hûn dikarin pergalê hinekî tevlihev bikin bi berpirsiyariya qata veguheztinê û avakirina komê, mînakî ZeroMQ an nanomsg bikar bînin. Lê heke pergal bi têra xwe berbelav û kapasîteyên komek Erlang standard hebe, wê hingê mijara danasîna saziyek pêvek lêkolînek berfireh û rastdariya aborî hewce dike.

Mijara serîlêdanên belavbûyî yên reaktîf pir berfireh e. Ji bo ku di forma gotarê de bimîne, mijara nîqaşa îro dê tenê hawîrdorên homojen ên ku li ser Erlang/Elixir hatine çêkirin bin. Ekosîstema Erlang/OTP destûrê dide te ku hûn mîmariya reaktîf bi hindiktirîn hewildanê bicîh bikin. Lê di her rewşê de, em ê hewceyê qatek peyamberê bikin.

Bingeha teorîk

Sêwirandin bi diyarkirina armanc û astengan dest pê dike. Armanca sereke ne di warê pêşveçûnê de ji bo pêşveçûnê ye. Pêdivî ye ku em amûrek ewledar û berbelav li ser bingeha ku em bikarin biafirînin û ya herî girîng, sepanên nûjen ên astên cihêreng bi dest bixin: ji serîlêdanên yek-server ku ji temaşevanên piçûk re xizmet dikin dest pê bikin, ku paşê dikarin di nav komên heya 50-an de pêşve bibin. -60 girêk, bi federasyonên komê diqede. Ji ber vê yekê, armanca sereke ew e ku bi kêmkirina lêçûna pêşkeftinê û xwedaniya pergala paşîn zêdekirina berjewendiyan e.

Ka em 4 hewcedariyên sereke ji bo pergala paşîn ronî bikin:

  • Сbûyer-oriented.
    Pergal her dem amade ye ku di herikîna bûyeran re derbas bibe û kiryarên pêwîst pêk bîne;
  • Мscalability.
    Blokên ferdî dikarin hem vertîkal û hem jî horizontî werin pîvandin. Pêdivî ye ku hemî pergalê bikaribe mezinbûna horizontî ya bêdawî be;
  • Оtolerans xelet.
    Pêdivî ye ku hemî ast û hemî karûbar bixweber ji têkçûnên xwe xilas bibin;
  • Гdema bersiva garantîkirî.
    Dem bi nirx e û divê bikarhêner pir dirêj li bendê nebin.

Çîroka kevin a li ser "Motorê piçûk ku dikaribû" tê bîra we? Ji bo ku pergala sêwirandî bi serfirazî ji qonaxa prototîpê derkeve û pêşverû be, divê bingeha wê hewcedariyên herî kêm pêk bîne. SMOG.

Xalek din li peyamberdanê wekî amûrek binesaziyê û bingehek ji bo hemî karûbaran tê zêde kirin: karanîna hêsan ji bo bernamenûsan.

Event-oriented

Ji bo ku serîlêdanek ji serverek yekane berbi komekê mezin bibe, mîmariya wê pêdivî ye ku pevgirêdana bêserûber piştgirî bike. Modela asynchronous vê hewcedariyê pêk tîne. Di wê de, şander û wergir ji barkirina agahdariya peyamê re eleqedar dibin û ji veguheztin û rêveçûna di nav pergalê de metirsî nakin.

Scalability

Scalability û karbidestiya pergalê li kêleka hev in. Divê pêkhateyên serîlêdanê bikaribin hemî çavkaniyên berdest bikar bînin. Çiqas bi bandortir em dikarin kapasîteyê bikar bînin û rêbazên meyên pêvajoyê yên çêtirîn çêtirîn, ew qas kêmtir drav li ser amûran xerc dikin.

Di nav makîneyek yekane de, Erlang hawîrdorek pir pêşbazî diafirîne. Hevsengiya di navbera hevdemî û paralelîzmê de dikare bi hilbijartina hejmara têlên pergala xebitandinê yên ku ji Erlang VM-ê re peyda dibin û hejmara plansazkerên ku van mijaran bikar tînin were danîn.
Pêvajoyên Erlang dewletê parve nakin û di moda ne-astengkirinê de dixebitin. Ev ji serîlêdanên kevneşopî yên bingehîn ên astengkirinê derengiya nisbeten kêm û berbi bilindtir peyda dike. Plansazkerê Erlang veqetandina adil a CPU û IO piştrast dike, û nebûna astengkirinê dihêle ku serîlêdan di dema barkirinên pez an têkçûn de jî bersivê bide.

Di asta komê de, pirsgirêka avêtinê jî heye. Girîng e ku hemî makîneyên di komê de bi rengek yeksan werin barkirin û tora zêde neyê barkirin. Ka em rewşek xeyal bikin: seyrûsefera bikarhêner li ser hevsengên hatina (haproxy, nginx, hwd) diqewime, ew daxwazên pêvajoyê bi qasî ku pêkan di navbera komek paşdengên berdest de belav dikin. Di nav binesaziya serîlêdanê de, karûbarê ku pêwendiya pêdivî bicîh tîne tenê mîleya paşîn e û dê hewce bike ku hejmarek karûbarên din daxwaz bike da ku bersivê bide daxwaza destpêkê. Daxwazên hundurîn jî rê û hevsengiyê hewce dike.
Ji bo birêvebirina bibandor herikîna daneyan, pêdivî ye ku mesaj ji pêşdebiran re têkiliyek peyda bike da ku rêvekirin û hevsengiya barkirinê birêve bibin. Bi saya vê yekê, pêşdebiran dê bi karanîna nimûneyên mîkroxizmetê (aggregator, proxy, zincîr, şax, hwd.), hem pirsgirêkên standard û hem jî yên ku kêm derdikevin çareser bikin.

Ji nêrînek karsaziyê, scalability yek ji amûrên rêveberiya xetereyê ye. Ya sereke ev e ku meriv daxwazên xerîdar bi karanîna çêtirîn amûran têr bike:

  • Dema ku hêza amûran di encama pêşveçûnê de zêde dibe. Ew ê ji ber nermalava bêkêmasî bêkar nemîne. Erlang vertîkal baş dipîve û dê her gav bikaribe hemî bingehên CPU û bîra berdest bikar bîne;
  • Di hawîrdorên ewr de, em dikarin mîqdara alavan li gorî barkirina heyî an pêşbînkirî rêve bibin û SLA garantî bikin.

tolerans xelet

Werin em du axioms bifikirin: "Têkçûn nayên qebûlkirin" û "Dê her gav têkçûn hebin." Ji bo karsaziyek, têkçûna nermalavê tê wateya windakirina drav, û ya xirabtir, windakirina navûdengê. Hevsengiya di navbera windahiyên gengaz û lêçûna pêşkeftina nermalava toleransê de, pir caran dikare lihevkirinek were dîtin.

Di demek kurt de, mîmariyek ku tolerasyona xeletiyê di nav xwe de vedihewîne drav dide kirîna çareseriyên kombûnê yên bêserûber. Ew biha ne û kêzikên wan jî hene.
Di demek dirêj de, mîmariyek xelet-tolerant di hemî qonaxên pêşkeftinê de gelek caran ji bo xwe dide.
Mesajên di nav bingeha kodê de dihêle hûn di qonaxa pêşkeftinê de pêwendiya pêkhateyên di hundurê pergalê de bi hûrgulî bixebitin. Ev peywira bersivdan û birêvebirina têkçûnan hêsan dike, ji ber ku hemî pêkhateyên krîtîk têkçûnan hildibijêrin, û pergala encam dizane ku meriv çawa bixweber vedigere rewşa normal piştî têkçûnek ji hêla sêwiranê ve.

Responsiveness

Tevî têkçûnan, divê serîlêdan bersivê bide daxwazan û bi SLA re hevdîtin bike. Rastî ev e ku mirov naxwazin li bendê bin, ji ber vê yekê divê karsazî li gorî xwe biguncînin. Zêdetir û bêtir serlêdan têne hêvî kirin ku pir bersivdar bin.
Serlêdanên bersivdar di demek rast de dixebitin. Erlang VM di moda rast-dema nerm de dixebite. Ji bo hin deveran, wekî bazirganiya stock, derman, û kontrolkirina alavên pîşesaziyê, moda rast-ê ya dijwar girîng e.
Pergalên bersivdar UX çêtir dikin û ji karsaziyê sûd werdigirin.

Kurteya pêşîn

Dema ku vê gotarê plansaz dikim, min xwest ku ezmûna xwe ya afirandina brokerek peyamberê û avakirina pergalên tevlihev li ser bingeha wê parve bikim. Lê beşa teorîk û motîvasyonî pir berfireh derket holê.
Di beşa duyemîn a gotarê de, ez ê li ser nuwazeyên pêkanîna xalên danûstendinê, şêwazên şandina peyaman û serîlêdana wan biaxivim.
Di beşa sêyemîn de em ê mijarên giştî yên birêxistinkirina karûbaran, rêkirin û hevsengiyê binirxînin. Werin em li ser aliyê pratîkî yên mezinbûn û tolerasyona xeletiya pergalê biaxivin.

Dawiya beşa yekem.

photo @lucabravo.

Source: www.habr.com

Add a comment