Lub tsev blocks ntawm kev faib daim ntawv thov. Zero approximation

Lub tsev blocks ntawm kev faib daim ntawv thov. Zero approximation

Lub ntiaj teb no tsis nyob twj ywm. Kev nce qib tsim cov kev sib tw thev naus laus zis tshiab. Raws li kev hloov pauv, cov qauv ntawm cov ntaub ntawv xov xwm yuav tsum hloov zuj zus. Niaj hnub no peb yuav tham txog kev tshwm sim-tsav architecture, concurrency, concurrency, asynchrony, thiab yuav ua li cas koj thiaj li nyob kaj siab lug nrog tag nrho cov no nyob rau hauv Erlang.

Taw qhia

Nyob ntawm seb qhov loj ntawm cov qauv tsim thiab cov kev xav tau rau nws, peb, cov neeg tsim khoom, xaiv txoj kev sib pauv cov ntaub ntawv hauv qhov system. Feem ntau, txhawm rau txhim kho kev sib cuam tshuam ntawm cov kev pabcuam, kev xaiv ua haujlwm yuav yog lub tswv yim nrog tus broker, piv txwv li, raws li RabbitMQ lossis kafka. Tab sis qee zaum qhov ntws ntawm cov xwm txheej, SLA thiab qib kev tswj hwm ntawm lub kaw lus yog qhov uas cov lus npaj npaj tsis haum rau peb. Tau kawg, koj tuaj yeem ua rau lub kaw lus nyuaj me ntsis los ntawm kev ua lub luag haujlwm rau cov txheej txheem thauj thiab pawg tsim, piv txwv li siv ZeroMQ lossis nanomsg. Tab sis yog tias lub kaw lus muaj peev xwm txaus thiab muaj peev xwm ntawm tus txheej txheem Erlang pawg, tom qab ntawd qhov teeb meem ntawm kev qhia txog ib qho chaw ntxiv yuav tsum tau kawm kom ntxaws thiab kev ncaj ncees nyiaj txiag.

Lub ntsiab lus ntawm reactive faib daim ntawv thov yog dav heev. Txhawm rau khaws cia nyob rau hauv hom ntawv ntawm tsab xov xwm, cov ntsiab lus ntawm kev sib tham niaj hnub no tsuas yog ib puag ncig homogeneous ua rau Erlang / Elixir. Lub Erlang / OTP ecosystem tso cai rau koj los ua kom muaj kev sib koom ua ke nrog kev siv zog tsawg kawg nkaus. Tab sis nyob rau hauv txhua rooj plaub, peb yuav xav tau ib tug messaging txheej.

Theoretical hauv paus

Kev tsim qauv pib nrog kev txhais cov hom phiaj thiab kev txwv. Lub hom phiaj tseem ceeb tsis yog nyob rau hauv cheeb tsam ntawm kev loj hlob rau lub hom phiaj ntawm txoj kev loj hlob. Peb yuav tsum tau txais cov cuab yeej ruaj ntseg thiab ntsuas tau raws li qhov peb tuaj yeem tsim thiab, qhov tseem ceeb tshaj plaws, txhim kho cov ntawv thov niaj hnub ntawm ntau qib: pib los ntawm ib daim ntawv thov server pabcuam rau cov neeg tuaj saib me me, tom qab ntawd tuaj yeem tsim ua pawg txog li 50. -60 nodes, xaus nrog pawg koom haum. Yog li, lub hom phiaj tseem ceeb yog kom tau txais txiaj ntsig zoo tshaj plaws los ntawm kev txo tus nqi ntawm kev txhim kho thiab kev ua tswv cuab ntawm qhov kawg system.

Cia peb hais txog 4 lub ntsiab lus tseem ceeb rau qhov kawg system:

  • Π‘kev tshwm sim-oriented.
    Lub kaw lus yeej ib txwm npaj kom dhau los ntawm kev khiav ntawm cov xwm txheej thiab ua qhov tsim nyog ua;
  • Мscalability.
    Cov blocks ntawm tus kheej tuaj yeem ntsuas ob qho tib si ntsug thiab kab rov tav. Tag nrho cov kab ke yuav tsum muaj peev xwm ntawm txoj kev loj hlob tsis kawg;
  • Оtxhaum cai.
    Txhua qib thiab txhua qhov kev pabcuam yuav tsum tuaj yeem rov qab los ntawm kev ua tsis tiav;
  • Π“guaranteed lub sij hawm teb.
    Lub sijhawm muaj txiaj ntsig thiab cov neeg siv yuav tsum tsis txhob tos ntev.

Nco ntsoov cov lus qub qub txog "Lub cav me me uas tuaj yeem"? Txhawm rau kom cov txheej txheem tsim los ua tiav qhov kev tawm ntawm cov qauv qauv thiab ua kom muaj kev vam meej, nws lub hauv paus yuav tsum ua kom tau raws li qhov tsawg kawg nkaus SMOG.

Ib qho ntxiv yog ntxiv rau kev xa xov raws li cov cuab yeej tsim kho vaj tse thiab lub hauv paus rau txhua qhov kev pabcuam: yooj yim siv rau cov programmers.

Kev tshwm sim-oriented

Rau ib daim ntawv thov kom loj hlob los ntawm ib tus neeg rau zaub mov mus rau ib pawg, nws cov architecture yuav tsum txhawb kev sib txuas xoob. Tus qauv asynchronous ua tau raws li qhov yuav tsum tau ua. Nyob rau hauv nws, tus neeg xa khoom thiab tus neeg txais kev saib xyuas txog cov ntaub ntawv thauj khoom ntawm cov lus thiab tsis txhob txhawj txog kev sib kis thiab kev sib txuas hauv qhov system.

Scalability

Scalability thiab system efficiency yog ib sab ntawm ib leeg. Cov khoom siv yuav tsum muaj peev xwm siv tau tag nrho cov peev txheej muaj. Qhov ua tau zoo dua peb tuaj yeem siv lub peev xwm thiab qhov ua tau zoo dua peb txoj kev ua, qhov nyiaj tsawg peb siv rau cov khoom siv.

Hauv ib lub tshuab, Erlang tsim ib qho chaw sib tw heev. Qhov sib npaug ntawm qhov sib npaug thiab qhov sib npaug tuaj yeem raug teeb tsa los ntawm kev xaiv cov xov tooj ntawm cov kab ke ua haujlwm muaj rau Erlang VM thiab tus naj npawb ntawm cov sijhawm teem sijhawm uas siv cov xov no.
Cov txheej txheem Erlang tsis qhia lub xeev thiab ua haujlwm hauv hom tsis thaiv. Qhov no muab qhov qis latency thiab ntau dua qhov kev xa tawm ntau dua li cov ntawv thov kev thaiv cov tsoos. Erlang tus teem sijhawm ua kom muaj kev ncaj ncees ntawm CPU thiab IO, thiab qhov tsis muaj kev thaiv kev tso cai rau daim ntawv thov teb txawm tias thaum lub sijhawm ua haujlwm siab lossis ua tsis tiav.

Nyob rau theem pawg, qhov teeb meem ntawm kev pov tseg kuj muaj. Nws yog ib qho tseem ceeb uas txhua lub tshuab hauv pawg sib npaug sib npaug thiab tias lub network tsis dhau. Cia peb xav txog qhov xwm txheej: cov neeg siv tsheb thauj mus los ntawm cov khoom sib npaug tuaj (haproxy, nginx, thiab lwm yam), lawv faib cov kev thov ua kom sib npaug li qhov ua tau ntawm cov txheej txheem muaj backends. Nyob rau hauv daim ntawv thov infrastructure, cov kev pab cuam siv lub interface uas yuav tsum tau tsuas yog lub xeem mais thiab yuav tsum tau thov ib tug xov tooj ntawm lwm cov kev pab cuam los teb rau thawj daim ntawv thov. Kev thov sab hauv kuj tseem xav tau kev sib tw thiab sib npaug.
Txhawm rau tswj cov ntaub ntawv ntws tau zoo, kev xa xov yuav tsum muab cov neeg tsim khoom nrog kev sib txuas los tswj kev sib tw thiab thauj khoom sib npaug. Ua tsaug rau qhov no, cov neeg tsim khoom yuav muaj peev xwm, siv cov qauv kev pabcuam microservice (aggregator, proxy, saw, ceg, thiab lwm yam), los daws cov teeb meem txheem thiab cov uas tsis tshua muaj tshwm sim.

Los ntawm kev pom kev lag luam, scalability yog ib qho ntawm cov cuab yeej tswj kev pheej hmoo. Qhov tseem ceeb tshaj plaws yog ua kom tau raws li cov neeg siv khoom thov los ntawm kev siv cov khoom siv zoo:

  • Thaum lub zog ntawm cov khoom siv nce ntxiv raws li kev nce qib. Nws yuav tsis ua haujlwm vim yog software tsis zoo. Erlang scales vertically zoo thiab yuav ib txwm muaj peev xwm siv tag nrho CPU cores thiab muaj lub cim xeeb;
  • Hauv huab ib puag ncig, peb tuaj yeem tswj hwm cov khoom siv raws li qhov tam sim no lossis kwv yees thauj khoom thiab lav SLA.

txhaum cai

Cia peb xav txog ob lub ntsiab lus: "Kev ua tsis tiav yog qhov tsis lees txais" thiab "Yuav muaj kev ua tsis tiav." Rau kev lag luam, software tsis ua haujlwm txhais tau tias poob nyiaj, thiab qhov phem dua, poob lub koob npe nrov. Kev sib npaug ntawm qhov ua tau poob thiab tus nqi ntawm kev tsim cov software ua txhaum cai, feem ntau tuaj yeem pom muaj kev cuam tshuam.

Hauv lub sijhawm luv luv, ib qho kev tsim qauv uas suav nrog kev ua siab ntev tiv thaiv cov nyiaj ntawm kev yuav khoom tawm ntawm cov txee-txuas cov kev daws teeb meem. Lawv kim heev thiab lawv kuj muaj kab.
Nyob rau hauv lub sij hawm ntev, ib tug txhaum-tolerant architecture them rau nws tus kheej ntau zaus nyob rau hauv tag nrho cov theem ntawm txoj kev loj hlob.
Kev xa xov nyob rau hauv lub hauv paus code tso cai rau koj mus ua hauj lwm nyob rau hauv kom meej kev sib cuam tshuam ntawm cov Cheebtsam nyob rau hauv lub system nyob rau hauv txoj kev loj hlob theem. Qhov no ua kom yooj yim rau kev ua haujlwm ntawm kev teb thiab tswj kev ua tsis tiav, txij li txhua qhov tseem ceeb ntawm cov khoom siv ua haujlwm tsis ua haujlwm, thiab cov txiaj ntsig tau paub yuav ua li cas rov qab mus rau qhov qub tom qab kev ua tsis tiav los ntawm kev tsim.

Teb

Txawm hais tias ua tsis tiav, daim ntawv thov yuav tsum teb cov lus thov thiab ua tau raws li SLA. Qhov tseeb yog tias tib neeg tsis xav tos, yog li kev lag luam yuav tsum hloov kho kom haum. Ntau thiab ntau daim ntawv thov xav tias yuav teb tau zoo heev.
Cov ntawv thov teb ua haujlwm nyob ze lub sijhawm. Erlang VM ua haujlwm hauv hom mos ntawm lub sijhawm. Rau qee qhov chaw, xws li kev lag luam Tshuag, tshuaj, thiab kev tswj cov cuab yeej siv, kev siv lub sijhawm nyuaj yog qhov tseem ceeb.
Cov kab ke ua haujlwm txhim kho UX thiab muaj txiaj ntsig zoo rau kev lag luam.

Lus piav me ntsis

Thaum npaj cov kab lus no, kuv xav qhia kuv qhov kev paub ntawm kev tsim cov neeg xa xov xwm thiab tsim cov txheej txheem nyuaj raws li nws. Tab sis qhov theoretical thiab motivational ib feem tau dhau los ua qhov dav heev.
Hauv ntu thib ob ntawm tsab xov xwm, Kuv yuav tham txog cov nuances ntawm kev siv cov ntsiab lus sib pauv, cov qauv xa ntawv thiab lawv daim ntawv thov.
Hauv qhov thib peb peb yuav txiav txim siab txog cov teeb meem dav dav ntawm kev teeb tsa cov kev pabcuam, routing thiab sib npaug. Cia peb tham txog cov tswv yim sab ntawm scalability thiab fault kam rau ua ntawm systems.

Xaus ntawm thawj ntu.

Photography @lucabravo.

Tau qhov twg los: www.hab.com

Ntxiv ib saib