Architecture ntawm lub network load balancer hauv Yandex.Cloud

Architecture ntawm lub network load balancer hauv Yandex.Cloud
Nyob zoo, Kuv yog Sergey Elantsev, Kuv tsim network load balancer hauv Yandex.Cloud. Yav dhau los, kuv tau coj txoj kev loj hlob ntawm L7 balancer rau Yandex portal - cov npoj yaig tso dag tias txawm kuv ua dab tsi, nws hloov tawm los ua tus sib npaug. Kuv yuav qhia Habr cov neeg nyeem yuav ua li cas tswj cov khoom thauj hauv huab huab platform, qhov peb pom yog cov cuab yeej zoo tshaj plaws rau kev ua tiav lub hom phiaj no, thiab peb tab tom hloov mus rau kev tsim cov cuab yeej no li cas.

Ua ntej, cia peb qhia qee cov ntsiab lus:

  • VIP (Virtual IP) - balancer IP chaw nyob
  • Server, backend, piv txwv - lub tshuab virtual khiav ib daim ntawv thov
  • RIP (Real IP) - server IP chaw nyob
  • Healthcheck - kuaj xyuas kev npaj txhij ntawm server
  • Availability Zone, AZ - cais infrastructure nyob rau hauv ib tug data center
  • Thaj tsam - ib lub koom haum ntawm txawv AZs

Load balancers daws peb lub luag haujlwm tseem ceeb: lawv ua qhov ntsuas nws tus kheej, txhim kho qhov kev ua txhaum ntawm qhov kev pabcuam, thiab ua kom yooj yim nws qhov ntsuas. Kev ua txhaum cai raug lees paub los ntawm kev tswj hwm tsheb tsis siv neeg: lub ntsuas ntsuas ntsuas lub xeev ntawm daim ntawv thov thiab tsis suav nrog cov xwm txheej los ntawm kev sib npaug uas tsis dhau qhov kev kuaj xyuas lub neej. Scaling yog ua kom ntseeg tau los ntawm kev faib cov khoom sib npaug ntawm cov xwm txheej, nrog rau kev hloov kho cov npe ntawm cov xwm txheej ntawm ya. Yog tias qhov ntsuas tsis sib xws tsis txaus, qee qhov piv txwv yuav tau txais ib qho kev thauj khoom uas tshaj lawv lub peev xwm txwv, thiab cov kev pabcuam yuav tsis tshua muaj kev ntseeg siab.

Ib qho load balancer feem ntau raug cais los ntawm cov txheej txheem txheej txheem los ntawm OSI qauv uas nws khiav. Huab Balancer ua haujlwm ntawm TCP theem, uas sib haum rau txheej plaub, L4.

Cia peb mus rau qhov kev nthuav dav ntawm Huab balancer architecture. Peb yuav maj mam nce qib ntawm kev nthuav dav. Peb faib cov khoom sib npaug rau hauv peb chav kawm. Cov chav kawm dav hlau config yog lub luag haujlwm rau cov neeg siv kev sib cuam tshuam thiab khaws cov hom phiaj ntawm lub cev. Lub dav hlau tswj tuav lub xeev tam sim no ntawm lub kaw lus thiab tswj cov tshuab los ntawm cov ntaub ntawv dav hlau chav kawm, uas yog lub luag haujlwm ncaj qha rau kev xa tsheb los ntawm cov neeg siv khoom mus rau koj qhov xwm txheej.

Cov ntaub ntawv dav hlau

Cov tsheb khiav mus txog ntawm cov khoom kim heev hu ua ciam teb routers. Txhawm rau ua kom muaj kev ua txhaum cai, ntau yam khoom siv no ua haujlwm ib txhij hauv ib lub chaw khaws ntaub ntawv. Tom ntej no, cov tsheb mus rau kev sib npaug, uas tshaj tawm cov chaw nyob IP rau txhua tus AZs ntawm BGP rau cov neeg siv khoom. 

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Tsheb thauj mus los tau dhau ECMP - qhov no yog lub tswv yim routing raws li uas tuaj yeem muaj ob peb txoj hauv kev zoo sib npaug rau lub hom phiaj (hauv peb qhov xwm txheej, lub hom phiaj yuav yog qhov chaw nyob IP chaw nyob) thiab pob ntawv tuaj yeem xa mus rau ib qho ntawm lawv. Peb kuj txhawb kev ua haujlwm hauv ntau thaj chaw muaj nyob raws li cov qauv hauv qab no: peb tshaj tawm qhov chaw nyob hauv txhua cheeb tsam, kev khiav mus rau qhov ze tshaj plaws thiab tsis mus dhau qhov txwv. Tom qab hauv tsab ntawv tshaj tawm peb yuav saib ntau yam ntxiv ntawm qhov tshwm sim rau kev tsheb khiav.

Config dav hlau

 
Cov ntsiab lus tseem ceeb ntawm lub dav hlau config yog API, los ntawm kev ua haujlwm yooj yim nrog cov khoom sib npaug: tsim, tshem tawm, hloov qhov muaj pes tsawg leeg ntawm cov xwm txheej, tau txais cov txiaj ntsig kev noj qab haus huv, thiab lwm yam. Ntawm ib sab, qhov no yog REST API, thiab ntawm qhov Lwm yam, peb hauv Huab feem ntau siv lub moj khaum gRPC, yog li peb "txhais" REST rau gRPC thiab tom qab ntawd siv gRPC nkaus xwb. Txhua qhov kev thov ua rau kev tsim cov haujlwm ua haujlwm asynchronous idempotent uas tau ua tiav ntawm ib lub pas dej ntawm Yandex.Cloud cov neeg ua haujlwm. Cov hauj lwm raug sau ua ib txoj hauv kev uas lawv tuaj yeem raug ncua txhua lub sijhawm thiab rov pib dua. Qhov no ua kom muaj scalability, repeatability thiab txiav tawm ntawm kev ua haujlwm.

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Raws li qhov tshwm sim, txoj haujlwm los ntawm API yuav ua rau kev thov rau tus tswj kev pabcuam kev sib npaug, uas tau sau rau hauv Go. Nws tuaj yeem ntxiv thiab tshem tawm cov khoom sib npaug, hloov cov ntsiab lus ntawm backends thiab chaw. 

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Cov kev pabcuam khaws nws lub xeev hauv Yandex Database, cov ntaub ntawv tswj hwm kev faib tawm uas koj yuav siv tau sai sai. Hauv Yandex.Cloud, zoo li peb twb hais, lub tswv yim khoom noj dev siv: yog tias peb tus kheej siv peb cov kev pabcuam, ces peb cov neeg siv khoom kuj yuav zoo siab siv lawv. Yandex Database yog ib qho piv txwv ntawm kev siv lub tswv yim zoo li no. Peb khaws tag nrho peb cov ntaub ntawv hauv YDB, thiab peb tsis tas yuav xav txog kev tswj hwm thiab ntsuas cov ntaub ntawv: cov teeb meem no tau daws rau peb, peb siv cov ntaub ntawv los ua kev pabcuam.

Cia peb rov qab mus rau tus tswj kev sib npaug. Nws txoj haujlwm yog txhawm rau txuag cov ntaub ntawv hais txog tus ntsuas ntsuas thiab xa ib txoj haujlwm los xyuas qhov kev npaj ntawm lub tshuab virtual mus rau tus tswj xyuas kev noj qab haus huv.

Healthcheck controller

Nws tau txais kev thov kom hloov cov cai tswj xyuas, txuag lawv hauv YDB, faib cov haujlwm ntawm healtcheck nodes thiab sib sau ua ke cov txiaj ntsig, uas tom qab ntawd khaws cia rau hauv cov ntaub ntawv thiab xa mus rau tus tswj loadbalancer. Nws, nyob rau hauv lem, xa ib daim ntawv thov kom hloov cov muaj pes tsawg leeg ntawm pawg nyob rau hauv cov ntaub ntawv dav hlau mus rau lub loadbalancer-node, uas kuv yuav tham hauv qab no.

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Cia peb tham ntxiv txog kev kuaj mob. Lawv tuaj yeem muab faib ua ob peb chav kawm. Kev kuaj xyuas muaj cov txheej txheem ua tiav sib txawv. TCP cov tshev yuav tsum ua tiav qhov kev sib txuas hauv lub sijhawm teem tseg. HTTP checks xav tau ob qho tib si kev sib txuas ua tiav thiab cov lus teb nrog 200 tus lej raws li txoj cai.

Tsis tas li ntawd, cov tshev mis txawv nyob rau hauv chav kawm ntawm kev ua - lawv yog active thiab passive. Passive checks tsuas yog saib xyuas dab tsi tshwm sim nrog kev khiav tsheb yam tsis tau ua tshwj xeeb. Qhov no tsis ua haujlwm zoo heev ntawm L4 vim tias nws nyob ntawm cov laj thawj ntawm cov txheej txheem siab dua: ntawm L4 tsis muaj ntaub ntawv hais txog kev ua haujlwm ntev npaum li cas lossis seb qhov kev sib txuas ua tiav zoo lossis phem. Active checks xav kom tus balancer xa cov lus thov mus rau txhua tus neeg rau zaub mov piv txwv.

Feem ntau load balancers ua lub neej kuaj xyuas lawv tus kheej. Ntawm Huab, peb tau txiav txim siab cais cov ntu no ntawm lub kaw lus kom nce scalability. Txoj hauv kev no yuav ua rau peb nce tus naj npawb ntawm cov khoom sib npaug thaum tswj xyuas tus naj npawb ntawm cov ntawv thov kev noj qab haus huv rau cov kev pabcuam. Kev kuaj xyuas yog ua los ntawm kev kuaj xyuas kev noj qab haus huv sib cais, hla cov phiaj xwm kuaj xyuas raug muab faib thiab rov ua dua. Koj tsis tuaj yeem ua cov tshev los ntawm ib tus tswv tsev, vim nws yuav ua tsis tiav. Tom qab ntawd peb yuav tsis tau txais lub xeev ntawm cov xwm txheej uas nws tau kuaj. Peb ua cov tshuaj xyuas ntawm ib qho ntawm qhov tsawg kawg yog peb qhov kev kuaj mob. Peb faib cov hom phiaj ntawm kev txheeb xyuas ntawm cov nodes uas siv cov hashing algorithms zoo ib yam.

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Kev sib cais thiab kev kuaj xyuas kev noj qab haus huv tuaj yeem ua rau muaj teeb meem. Yog tias qhov kev kuaj xyuas kev noj qab haus huv tau thov rau qhov piv txwv, hla qhov sib npaug (uas tsis yog tam sim no ua haujlwm rau kev khiav tsheb), ces qhov xwm txheej txawv txawv tshwm sim: cov peev txheej zoo li muaj sia nyob, tab sis cov tsheb yuav tsis ncav cuag nws. Peb daws qhov teeb meem no li no: peb tau lees tias yuav pib kuaj xyuas kev noj qab haus huv los ntawm kev sib npaug. Hauv lwm lo lus, lub tswv yim rau kev txav pob ntawv nrog kev khiav tsheb los ntawm cov neeg siv khoom thiab los ntawm kev kuaj xyuas kev noj qab haus huv sib txawv me ntsis: nyob rau hauv ob qho tib si, cov pob ntawv yuav ncav cuag cov neeg sib npaug, uas yuav xa lawv mus rau cov peev txheej.

Qhov txawv yog tias cov neeg thov kev thov rau VIP, thaum kuaj xyuas kev noj qab haus huv thov rau txhua tus neeg RIP. Ib qho teeb meem nthuav tshwm sim ntawm no: peb muab sijhawm rau peb cov neeg siv los tsim cov peev txheej hauv grey IP tes hauj lwm. Cia peb xav txog tias muaj ob tus tswv huab sib txawv uas tau zais lawv cov kev pabcuam tom qab cov neeg sib npaug. Txhua tus ntawm lawv muaj cov peev txheej hauv 10.0.0.1/24 subnet, nrog rau tib qhov chaw nyob. Koj yuav tsum muaj peev xwm paub qhov txawv ntawm lawv, thiab ntawm no koj yuav tsum dhia mus rau hauv cov qauv ntawm Yandex.Cloud virtual network. Nws yog qhov zoo dua kom paub cov ntsiab lus ntxiv hauv video from about: huab cua, nws yog ib qho tseem ceeb rau peb tam sim no uas lub network muaj ntau txheej thiab muaj qhov tunnels uas tuaj yeem paub qhov txawv ntawm subnet id.

Healthcheck nodes hu rau balancers siv thiaj li hu ua quasi-IPv6 chaw nyob. Qhov chaw nyob quasi yog IPv6 chaw nyob nrog IPv4 chaw nyob thiab tus neeg siv subnet id embedded hauv nws. Cov tsheb mus txog qhov sib npaug, uas rho tawm qhov chaw nyob IPv4 los ntawm nws, hloov IPv6 nrog IPv4 thiab xa cov pob ntawv mus rau tus neeg siv lub network.

Txoj kev rov qab mus rau tib txoj kev: tus balancer pom tias lub hom phiaj yog grey network los ntawm cov kws kuaj mob, thiab hloov IPv4 rau IPv6.

VPP - lub plawv ntawm cov ntaub ntawv dav hlau

Qhov sib npaug yog siv los siv Vector Packet Processing (VPP) thev naus laus zis, lub hauv paus los ntawm Cisco rau kev ua haujlwm ntawm kev sib txuas hauv network. Nyob rau hauv peb cov ntaub ntawv, lub moj khaum ua hauj lwm nyob rau sab saum toj ntawm tus neeg siv-chaw network ntaus ntawv tswj tsev qiv ntawv - Cov ntaub ntawv Plane Development Kit (DPDK). Qhov no ua kom muaj kev ua haujlwm siab ntawm pob ntawv: kev cuam tshuam tsawg dua tshwm sim hauv cov ntsiav, thiab tsis muaj cov ntsiab lus hloov pauv ntawm qhov chaw kernel thiab chaw siv. 

VPP mus ntxiv thiab nyem ntau qhov kev ua tau zoo tawm ntawm qhov system los ntawm kev sib txuas cov pob khoom rau hauv cov khoom siv. Qhov kev ua tau zoo tau los ntawm kev siv cov caches ntawm cov txheej txheem niaj hnub no. Ob leeg cov ntaub ntawv caches tau siv (cov pob ntawv tau ua tiav hauv "vectors", cov ntaub ntawv nyob ze rau ib leeg) thiab cov lus qhia caches: hauv VPP, kev ua cov pob ntawv ua raws li daim duab, cov nodes uas muaj cov haujlwm ua haujlwm tib yam.

Piv txwv li, kev ua tiav ntawm IP pob ntawv hauv VPP tshwm sim hauv qhov kev txiav txim hauv qab no: ua ntej, cov pob ntawv headers raug parsed nyob rau hauv lub parsing node, thiab ces lawv raug xa mus rau lub node, uas xa mus rau cov pob ntawv ntxiv raws li routing tables.

Ib me ntsis hardcore. Cov kws sau ntawv ntawm VPP tsis zam kev cuam tshuam hauv kev siv cov txheej txheem caches, yog li cov cai raug rau kev ua cov vector ntawm cov pob ntawv muaj phau ntawv vectorization: muaj lub voj voog ua haujlwm uas qhov xwm txheej zoo li "peb muaj plaub pob ntawv hauv kab" ua tiav, ces tib yam rau ob, ces - rau ib. Prefetch cov lus qhia feem ntau yog siv los thauj cov ntaub ntawv rau hauv caches kom nrawm nkag mus rau lawv hauv kev rov ua dua tom ntej.

n_left_from = frame->n_vectors;
while (n_left_from > 0)
{
    vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next);
    // ...
    while (n_left_from >= 4 && n_left_to_next >= 2)
    {
        // processing multiple packets at once
        u32 next0 = SAMPLE_NEXT_INTERFACE_OUTPUT;
        u32 next1 = SAMPLE_NEXT_INTERFACE_OUTPUT;
        // ...
        /* Prefetch next iteration. */
        {
            vlib_buffer_t *p2, *p3;

            p2 = vlib_get_buffer (vm, from[2]);
            p3 = vlib_get_buffer (vm, from[3]);

            vlib_prefetch_buffer_header (p2, LOAD);
            vlib_prefetch_buffer_header (p3, LOAD);

            CLIB_PREFETCH (p2->data, CLIB_CACHE_LINE_BYTES, STORE);
            CLIB_PREFETCH (p3->data, CLIB_CACHE_LINE_BYTES, STORE);
        }
        // actually process data
        /* verify speculative enqueues, maybe switch current next frame */
        vlib_validate_buffer_enqueue_x2 (vm, node, next_index,
                to_next, n_left_to_next,
                bi0, bi1, next0, next1);
    }

    while (n_left_from > 0 && n_left_to_next > 0)
    {
        // processing packets by one
    }

    // processed batch
    vlib_put_next_frame (vm, node, next_index, n_left_to_next);
}

Yog li, Healthchecks tham dhau IPv6 rau VPP, uas hloov lawv mus rau IPv4. Qhov no yog ua los ntawm ib qho ntawm cov duab, uas peb hu ua algorithmic NAT. Rau kev rov qab tsheb (thiab hloov dua siab tshiab los ntawm IPv6 rau IPv4) muaj tib lub algorithmic NAT node.

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Cov tsheb ncaj qha los ntawm cov neeg siv khoom sib npaug mus dhau ntawm cov duab kos, uas ua qhov ntsuas nws tus kheej. 

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Thawj qhov yog cov ntu nplaum. Nws khaws cov hash ntawm 5-tug rau cov kev sib tham uas tau tsim. 5-tuple suav nrog qhov chaw nyob thiab chaw nres nkoj ntawm tus neeg siv khoom los ntawm cov ntaub ntawv xa mus, qhov chaw nyob thiab chaw nres nkoj ntawm cov peev txheej muaj rau kev txais tsheb khiav, nrog rau cov txheej txheem network. 

Lub 5-tuple hash pab peb ua qhov kev suav tsawg dua hauv cov kev sib txuas txuas ntxiv tom ntej, nrog rau kev tswj hwm cov peev txheej hloov pauv tom qab qhov sib npaug. Thaum ib pob ntawv uas tsis muaj kev sib ntsib tuaj txog ntawm lub ntsuas ntsuas, nws raug xa mus rau qhov sib thooj hashing node. Qhov no yog qhov sib npaug tshwm sim los ntawm kev siv hashing zoo ib yam: peb xaiv cov peev txheej los ntawm cov npe uas muaj "nyob" cov peev txheej. Tom ntej no, cov pob ntawv raug xa mus rau NAT node, uas tau hloov qhov chaw nyob qhov chaw nyob thiab rov xam cov checksums. Raws li koj tuaj yeem pom, peb ua raws li cov kev cai ntawm VPP - nyiam nyiam, pab pawg suav zoo sib xws los ua kom cov txiaj ntsig ntawm processor caches.

Sib npaug hashing

Vim li cas peb xaiv nws thiab nws yog dab tsi? Ua ntej, cia peb xav txog cov haujlwm dhau los - xaiv cov peev txheej los ntawm cov npe. 

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Nrog tsis sib haum hashing, tus hash ntawm cov khoom xa tuaj yog xam, thiab cov peev txheej raug xaiv los ntawm cov npe los ntawm qhov seem ntawm kev faib cov hash los ntawm cov peev txheej. Ntev npaum li daim ntawv tseem tsis hloov pauv, cov tswv yim no ua haujlwm zoo: peb ib txwm xa cov pob ntawv nrog tib 5-tuple rau tib qhov piv txwv. Yog tias, piv txwv li, qee qhov peev txheej tsis teb rau kev kuaj xyuas kev noj qab haus huv, tom qab ntawd rau ib feem tseem ceeb ntawm hashes qhov kev xaiv yuav hloov. Tus neeg siv khoom qhov kev sib txuas TCP yuav tawg: ib pob ntawv uas yav dhau los tau mus txog piv txwv A yuav pib mus txog qhov piv txwv B, uas tsis paub txog qhov kev sib kho rau pob ntawv no.

Ib txwm hashing daws qhov teeb meem piav qhia. Txoj hauv kev yooj yim tshaj plaws los piav txog lub tswv yim no yog qhov no: xav txog tias koj muaj lub nplhaib uas koj faib cov peev txheej los ntawm hash (piv txwv li, los ntawm IP: chaw nres nkoj). Xaiv ib qho peev txheej yog tig lub log los ntawm lub kaum sab xis, uas yog txiav txim siab los ntawm qhov hash ntawm pob ntawv.

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Qhov no txo ​​qis kev faib tsheb thauj mus los thaum muaj cov peev txheej hloov pauv. Kev rho tawm ib qho peev txheej tsuas yog cuam tshuam rau ib feem ntawm lub nplhaib sib xws uas cov peev txheej tau nyob. Ntxiv cov peev txheej kuj hloov pauv qhov kev faib tawm, tab sis peb muaj cov ntu ntu ntu, uas tso cai rau peb tsis txhob hloov cov kev sib tham uas twb tau tsim lawm rau cov peev txheej tshiab.

Peb tau saib dab tsi tshwm sim rau kev khiav tsheb ncaj qha ntawm qhov sib npaug thiab cov peev txheej. Tam sim no cia saib cov tsheb khiav rov qab. Nws ua raws tib tus qauv raws li kev txheeb xyuas tsheb - los ntawm algorithmic NAT, uas yog, los ntawm kev thim rov qab NAT 44 rau cov neeg siv tsheb thiab dhau ntawm NAT 46 rau kev kuaj xyuas kev noj qab haus huv. Peb ua raws li peb tus kheej cov tswv yim: peb koom ua ke kev kuaj xyuas kev noj qab haus huv thiab cov neeg siv tiag tiag.

Loadbalancer-node thiab cov khoom sib dhos

Cov khoom sib npaug thiab cov peev txheej hauv VPP tau tshaj tawm los ntawm cov kev pabcuam hauv zos - loadbalancer-node. Nws tso npe rau cov kwj ntawm cov xwm txheej los ntawm loadbalancer-controller thiab muaj peev xwm npaj qhov sib txawv ntawm VPP lub xeev tam sim no thiab lub xeev lub hom phiaj tau txais los ntawm tus maub los. Peb tau txais lub kaw lus kaw: cov xwm txheej los ntawm API tuaj rau tus tswj kev sib npaug, uas muab cov haujlwm rau tus tswj xyuas kev noj qab haus huv los xyuas "kev ua neej nyob" ntawm cov peev txheej. Uas, nyob rau hauv lem, muab cov dej num rau lub healthcheck-node thiab aggregates cov kev tshwm sim, tom qab uas nws xa lawv rov qab mus rau lub balancer maub los. Loadbalancer-node sau npe rau cov xwm txheej los ntawm tus tswj hwm thiab hloov lub xeev ntawm VPP. Hauv cov txheej txheem zoo li no, txhua qhov kev pabcuam tsuas yog paub txog qhov tsim nyog ntawm cov kev pabcuam nyob sib ze. Tus naj npawb ntawm kev sib txuas yog txwv thiab peb muaj peev xwm ua haujlwm thiab ntsuas cov ntu sib txawv ntawm nws tus kheej.

Architecture ntawm lub network load balancer hauv Yandex.Cloud

Cov teeb meem dab tsi raug zam?

Tag nrho peb cov kev pabcuam hauv lub dav hlau tswj tau sau rau hauv Go thiab muaj qhov ntsuas zoo thiab kev ntseeg tau zoo. Go muaj ntau lub tsev qiv ntawv qhib rau lub tsev faib khoom. Peb nquag siv GRPC, tag nrho cov khoom muaj qhov qhib qhov kev siv ntawm kev tshawb nrhiav kev pabcuam - peb cov kev pabcuam saib xyuas ib leeg kev ua tau zoo, tuaj yeem hloov lawv cov kev sib xyaw ua ke, thiab peb txuas qhov no nrog GRPC ntsuas. Rau kev ntsuas, peb kuj siv qhov qhib qhov kev daws teeb meem. Hauv cov ntaub ntawv dav hlau, peb tau txais kev ua tau zoo thiab muaj peev txheej loj: nws tau dhau los ua ib qho nyuaj rau kev sib sau ua ke uas peb tuaj yeem tso siab rau kev ua tau zoo ntawm VPP, tsis yog daim npav hlau hlau.

Teeb meem thiab kev daws teeb meem

Dab tsi ua tsis tau zoo? Go muaj kev tswj hwm kev nco tsis siv neeg, tab sis nco txog tseem tshwm sim. Txoj hauv kev yooj yim tshaj los daws lawv yog khiav goroutines thiab nco ntsoov txiav lawv. Takeaway: Saib koj cov kev pab cuam Go' nco noj. Feem ntau qhov qhia tau zoo yog tus naj npawb ntawm goroutines. Muaj ib qho ntxiv hauv zaj dab neeg no: hauv Go nws yooj yim kom tau txais cov ntaub ntawv runtime - nco noj, tus naj npawb ntawm kev khiav goroutines, thiab ntau lwm yam tsis.

Tsis tas li ntawd, Go yuav tsis yog qhov kev xaiv zoo tshaj plaws rau kev sim ua haujlwm. Lawv yog cov verbose heev, thiab tus qauv mus kom ze ntawm "khiav txhua yam hauv CI hauv ib pawg" tsis haum rau lawv. Qhov tseeb yog tias cov kev ntsuam xyuas ua haujlwm muaj peev xwm xav tau ntau dua thiab ua rau lub sijhawm tiag tiag. Vim li no, kev ntsuam xyuas yuav ua tsis tiav vim CPU tsis khoom nrog kev sim ntsuas. Xaus: Yog tias ua tau, ua "hnyav" kev xeem sib cais los ntawm chav ntsuas. 

Microservice kev tshwm sim architecture yog qhov nyuaj dua li lub monolith: sau cov cav ntawm ntau lub tshuab sib txawv tsis yooj yim heev. Xaus: yog tias koj ua microservices, tam sim ntawd xav txog kev taug qab.

Peb cov phiaj xwm

Peb yuav tsim ib qho kev sib npaug sab hauv, tus IPv6 tus nqi sib npaug, ntxiv kev txhawb nqa rau Kubernetes cov ntawv sau, txuas ntxiv mus rau peb cov kev pabcuam (tam sim no tsuas yog kuaj xyuas-node thiab kuaj xyuas kev noj qab haus huv-ctrl), ntxiv cov kev kuaj mob tshiab, thiab tseem siv cov kev kuaj xyuas ntse. Peb tab tom txiav txim siab ua kom peb cov kev pabcuam muaj kev ywj pheej ntau dua - kom lawv sib txuas lus tsis ncaj qha rau ib leeg, tab sis siv cov kab lus. Ib qho kev pabcuam SQS-tshaj tau tsis ntev los no tau tshwm sim hauv Huab Yandex Message Queue.

Tsis ntev los no, kev tshaj tawm pej xeem ntawm Yandex Load Balancer tau tshwm sim. Tshawb nrhiav cov ntaub ntawv rau cov kev pabcuam, tswj cov khoom sib npaug hauv txoj hauv kev yooj yim rau koj thiab ua rau muaj kev zam txim rau koj cov haujlwm!

Tau qhov twg los: www.hab.com

Ntxiv ib saib