Ihe owuwu ụlọ nke ngwa ekesa. Mkpebi efu

Ihe owuwu ụlọ nke ngwa ekesa. Mkpebi efu

Ụwa anaghị eguzo otu ebe. Ọganihu na-emepụta ihe ịma aka nkà na ụzụ ọhụrụ. N'ikwekọ na mgbanwe chọrọ, ihe owuwu nke sistemụ ozi ga-amalite. Taa, anyị ga-ekwu maka ihe omume na-achị ụlọ, concurrency, concurrency, asynchrony, na otu ị ga-esi ebi n'udo na ihe a niile na Erlang.

Okwu Mmalite

Dabere na nha nke usoro a haziri na ihe ndị a chọrọ maka ya, anyị, ndị mmepe, na-ahọrọ usoro mgbanwe ozi na usoro. N'ọtụtụ ọnọdụ, iji hazie mmekọrịta nke ọrụ, nhọrọ ọrụ nwere ike ịbụ atụmatụ na onye na-ere ahịa, dịka ọmụmaatụ, dabere na RabbitMQ ma ọ bụ kafka. Ma mgbe ụfọdụ, usoro ihe omume, SLA na ọkwa nchịkwa nke sistemụ ahụ na-eme ka ozi emebere adịghị adabara anyị. N'ezie, ị nwere ike ime ka usoro ahụ sie ike ntakịrị site na iburu ọrụ maka oyi akwa njem na nhazi ụyọkọ, dịka ọmụmaatụ iji ZeroMQ ma ọ bụ nanomsg. Ma ọ bụrụ na usoro ahụ nwere oke mmepụta na ikike nke ụyọkọ Erlang ọkọlọtọ, mgbe ahụ okwu nke iwebata ihe mgbakwunye chọrọ nyocha zuru ezu na nkwenye akụ na ụba.

Isiokwu nke ngwa ekesa reactive bụ nnọọ sara mbara. Iji dobe n'ụdị akụkọ a, isiokwu nke mkparịta ụka taa ga-abụ naanị gburugburu ebe obibi jikọtara ọnụ nke e wuru na Erlang/Elixir. Ihe gburugburu ebe obibi Erlang/OTP na-enye gị ohere iji obere mbọ mejuputa ihe arụrụ arụ ọrụ. Mana n'ọnọdụ ọ bụla, anyị ga-achọ oyi akwa ozi.

Usoro ihe ndabere

Nhazi na-amalite site na ịkọwa ebumnuche na mgbochi. Ebumnuche bụ isi abụghị na mpaghara mmepe maka mmepe. Anyị kwesịrị ịnweta ngwá ọrụ dị nchebe na nke nwere ike ịdabere na ya nke anyị nwere ike ịmepụta na, nke kachasị mkpa, ịmepụta ngwa ọgbara ọhụrụ nke ọkwa dị iche iche: malite na ngwa nke otu ihe nkesa na-eje ozi na obere ndị na-ege ntị, nke nwere ike ịmalite n'ime ụyọkọ ruru 50. -60 ọnụ, na-ejedebe na ụyọkọ federations. Ya mere, isi ihe mgbaru ọsọ bụ ịbawanye uru site n'ibelata ọnụ ahịa mmepe na nwe nke usoro ikpeazụ.

Ka anyị pụta ìhè 4 isi ihe achọrọ maka usoro ikpeazụ:

  • Сmere emume.
    Usoro ahụ na-adị njikere mgbe niile ịgafe usoro ihe omume ma rụọ ọrụ ndị dị mkpa;
  • Мscalability.
    Enwere ike ịgbakọ ngọngọ nke onye ọ bụla na kwụ ọtọ ma kwụ ọtọ. Usoro dum ga-enwe ike inwe uto kehoraizin na-enweghị ngwụcha;
  • Оnnabata mmejọ.
    Ọkwa niile na ọrụ niile kwesịrị inwe ike ịgbake ozugbo site na ọdịda;
  • Гekwe nkwa oge nzaghachi.
    Oge bara uru na ndị ọrụ ekwesịghị ichere ogologo oge.

Cheta akụkọ ifo ochie banyere "Obere injin nke nwere ike"? Ka usoro a haziri wee pụọ nke ọma na ọkwa prototype wee na-aga n'ihu, ntọala ya ga-enwerịrị ihe kacha nta chọrọ SMOG.

A na-agbakwunye otu isi ihe na ozi dị ka ngwá ọrụ akụrụngwa yana ndabere maka ọrụ niile: mfe iji maka ndị mmemme.

dabere na mmemme

Ka ngwa na-eto site na otu nkesa gaa na ụyọkọ, nhazi ya ga-akwadorịrị njikọ na-adịghị mma. Ụdị asynchronous na-emezu ihe a chọrọ. N'ime ya, onye na-ezipụ na onye nnata na-eche banyere ibu ozi nke ozi ahụ ma echegbula onwe ya maka nnyefe na ntụgharị n'ime usoro.

Ohere

Scalability na sistemụ arụmọrụ na-esote ibe ha. Ngwa ngwa ga-enwerịrị ike iji akụrụngwa niile dị. Ka anyị na-arụ ọrụ nke ọma na anyị nwere ike iji ikike na usoro nhazi anyị kachasị mma, obere ego anyị na-eji na akụrụngwa.

N'ime otu igwe, Erlang na-emepụta gburugburu asọmpi dị ukwuu. Enwere ike ịtọ nguzozi n'etiti concurrency na myirịta site n'ịhọrọ ọnụọgụ nke eriri sistemụ dị na Erlang VM yana ọnụ ọgụgụ ndị nhazi oge na-eji eriri ndị a.
Usoro Erlang anaghị ekekọrịta steeti ma na-arụ ọrụ na ọnọdụ anaghị egbochi. Nke a na-enye nkwụsị dịtụ ala yana ntinye dị elu karịa ngwa dabere na igbochi ọdịnala. Onye nhazi Erlang na-eme ka oke nke CPU na IO dị mma, na enweghị mgbochi na-enye ohere ka ngwa ahụ zaghachi ọbụlagodi n'oge oke ibu ma ọ bụ ọdịda.

N'ọkwa ụyọkọ, nsogbu mkpofu dịkwa. Ọ dị mkpa na igwe niile dị n'ụyọkọ ahụ na-eju ya nke ọma yana na netwọk anaghị ebufe ya. Ka anyị chee echiche banyere ọnọdụ: okporo ụzọ onye ọrụ na-agbada na ndị na-abata (haproxy, nginx, wdg), ha na-ekesa arịrịọ maka nhazi dịka o kwere mee n'etiti ihe ndabere dịnụ. N'ime akụrụngwa ngwa, ọrụ na-emejuputa interface achọrọ bụ naanị maịl ikpeazụ na ọ ga-achọ ịrịọ ọtụtụ ọrụ ndị ọzọ iji zaghachi arịrịọ mbụ. Arịrịọ nke ime na-achọkwa ụzọ na nhazi.
Iji jikwaa ọsọ data nke ọma, izi ozi ga-enyerịrị ndị mmepe ihe interface iji jikwaa ntugharị na nhazi ibu. N'ihi nke a, ndị mmepe ga-enwe ike, na-eji usoro microservice (aggregator, proxy, chain, branch, etc), iji dozie ma nsogbu ọkọlọtọ na ndị na-adịghị adịkarị.

Site na echiche azụmahịa, scalability bụ otu n'ime ngwaọrụ njikwa ihe egwu. Ihe bụ isi bụ imeju arịrịọ ndị ahịa site na iji akụrụngwa kachasị mma:

  • Mgbe ike nke akụrụngwa na-abawanye n'ihi ọganihu. Ọ gaghị adịkwa n'ọrụ n'ihi ngwanrọ ezughị oke. Erlang nwere akpịrịkpa kwụ ọtọ ma ga-enwe ike iji cores CPU niile yana ebe nchekwa dị;
  • Na gburugburu igwe ojii, anyị nwere ike ijikwa ọnụọgụ akụrụngwa dabere na ibu dị ugbu a ma ọ bụ buru amụma yana SLA na-ekwe nkwa.

nnabata mmejọ

Ka anyị tụlee axioms abụọ: “A dịghị anakwere ọdịda adịghị anabata” na “A ga-enwe ọdịda mgbe nile.” Maka azụmahịa, ọdịda ngwanrọ pụtara enweghị ego, na nke ka njọ, enweghị aha. Ịhazi n'etiti mfu enwere ike na ọnụ ahịa nke ịmepụta ngwanrọ na-anabata mmejọ, enwere ike ịhụ nkwekọrịta mgbe mgbe.

N'oge na-adịghị anya, ihe owuwu nke na-agụnye nnabata mmejọ na-echekwa ego n'ịzụta ngwọta nchịkọta na-anọghị na shelf. Ha dị oke ọnụ ma ha nwekwara ahụhụ.
N'ime ogologo oge, ihe owuwu na-anabataghị mmejọ na-akwụ ụgwọ onwe ya ọtụtụ oge n'oge niile nke mmepe.
Izi ozi n'ime koodu ntọala na-enye gị ohere ịrụ ọrụ n'ụzọ zuru ezu na mmekọrịta nke akụrụngwa dị n'ime usoro ahụ na ọkwa mmepe. Nke a na-eme ka ọrụ dị mfe nke ịzaghachi na ijikwa ọdịda, ebe ọ bụ na ihe niile dị oke egwu na-edozi ọdịda, na usoro nke na-esi na ya maara otú e si alaghachi na nkịtị mgbe ọdịda site na imewe.

Nzaghachi

N'agbanyeghị ọdịda, ngwa ahụ ga-azarịrị arịrịọ wee zute SLA. Nke bụ eziokwu bụ na ndị mmadụ achọghị ichere, n'ihi ya, azụmahịa ga-emegharị ya. A na-atụ anya ka ngwa ndị ọzọ na-anabata nke ọma.
Ngwa na-anabata na-arụ ọrụ ozugbo ozugbo. Erlang VM na-arụ ọrụ n'ụdị ezigbo oge dị nro. Maka mpaghara ụfọdụ, dị ka ịzụ ahịa ngwaahịa, ọgwụ, na njikwa akụrụngwa mmepụta ihe, ụdị oge siri ike dị mkpa.
Sistemu anabatara na-emezi UX ma na-erite uru azụmaahịa.

Mbido nchịkọta

Mgbe m na-eme atụmatụ akụkọ a, achọrọ m ịkọrọ ahụmahụ m nke ịmepụta onye na-ere ahịa ozi na ịmepụta usoro mgbagwoju anya dabere na ya. Mana akụkụ nke usoro mmụta na mkpali tụgharịrị buru oke ibu.
N'akụkụ nke abụọ nke isiokwu ahụ, m ga-ekwu maka nuances nke mmejuputa mgbanwe mgbanwe, usoro izi ozi na ngwa ha.
N'akụkụ nke atọ, anyị ga-atụle ihe gbasara izugbe nke ịhazi ọrụ, nhazi na nhazi. Ka anyị kwuo banyere akụkụ bara uru nke scalability na mmegide nke usoro.

Ọgwụgwụ nke akụkụ nke mbụ.

Photography @lucabravo.

isi: www.habr.com

Tinye a comment