Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud
Ndewo, m bụ Sergey Elantsev, m ịzụlite netwọk ibu balancer na Yandex.Cloud. Na mbụ, m na-eduga mmepe nke L7 balancer maka Yandex portal - ndị ọrụ ibe na-achị ọchị na n'agbanyeghị ihe m na-eme, ọ na-apụta na ọ bụ onye nhazi. M ga-agwa ndị na-agụ Habr ka esi ejikwa ibu dị n'elu ikpo okwu igwe ojii, ihe anyị na-ahụ dị ka ngwá ọrụ dị mma maka imezu ihe mgbaru ọsọ a, na otú anyị si aga n'ihu ịmepụta ngwá ọrụ a.

Nke mbụ, ka anyị webata okwu ụfọdụ:

  • VIP (Virtual IP) - adreesị IP nkwụnye ego
  • Ihe nkesa, azụ azụ, ọmụmaatụ - igwe mebere na-arụ ngwa
  • RIP (Ezigbo IP) - adreesị IP nkesa
  • Nyocha ahụike - ịlele ịdị njikere nkesa
  • Mpaghara nnweta, AZ - akụrụngwa dịpụrụ adịpụ na etiti data
  • Mpaghara - njikọ nke AZ dị iche iche

Ndị na-ahụ maka ibu ibu na-edozi ọrụ atọ bụ isi: ha na-arụzi nguzozi n'onwe ya, na-eme ka nnabata ọrụ ahụ dị mfe, na-eme ka ọ dị mfe. A na-ahụta nnabata mmejọ site na njikwa okporo ụzọ akpaka: onye na-ahụ maka nhazi na-enyocha ọnọdụ ngwa ahụ ma wepụ ihe atụ site na ịhazigharị nke na-agaghị agafe nlele ndụ ndụ. A na-ahụta nlegharị anya site na ikesa ibu ahụ n'otu oge, yana imelite ndepụta nke oge na ofufe. Ọ bụrụ na nhazi ahụ ezughị oke, ụfọdụ n'ime oge ga-enweta ibu nke karịrị oke ikike ha, ọrụ ahụ agaghịkwa enwe ntụkwasị obi.

A na-ekewakarị ihe nzizi ibu site na oyi akwa protocol site na ụdị OSI nke ọ na-agba na ya. The Cloud Balancer na-arụ ọrụ na ọkwa TCP, nke kwekọrọ na oyi akwa nke anọ, L4.

Ka anyị gaa n'ihu na nleba anya nke nhazi nhazi igwe ojii. Anyị ga-eji nwayọọ nwayọọ na-abawanye ọkwa nke nkọwa. Anyị na-ekewa ihe nkwụnye ego n'ime klas atọ. Klas nhazi ụgbọ elu na-ahụ maka mmekọrịta onye ọrụ na-echekwa ọnọdụ ebumnuche nke sistemụ. Ụgbọ elu ahụ na-achịkwa na-echekwa ọnọdụ sistemụ ugbu a ma na-ejikwa sistemụ sitere na klas ụgbọ elu data, bụ ndị na-ahụ maka ịnyefe okporo ụzọ site n'aka ndị ahịa gaa na ọnọdụ gị.

Ụgbọ elu data

Okporo ụzọ na-ejedebe na ngwaọrụ dị oke ọnụ nke a na-akpọ ndị na-anya ụgbọ ala. Ka iwelie nnabata mmejọ, ọtụtụ ngwaọrụ dị otú ahụ na-arụ ọrụ n'otu oge n'otu ebe data. Na-esote, okporo ụzọ na-aga na ndị na-ahụ maka nhazi, nke na-akpọsa adreesị IP ọ bụla nke AZ niile site na BGP maka ndị ahịa. 

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

A na-ebufe okporo ụzọ n'elu ECMP - nke a bụ usoro ntụgharị nke enwere ike inwe ọtụtụ ụzọ dị mma maka ebumnuche (n'ọnọdụ anyị, ebumnuche a ga-abụ adreesị IP ebe aga) na enwere ike iziga ngwugwu na nke ọ bụla n'ime ha. Anyị na-akwado ọrụ na mpaghara dị iche iche dị ka atụmatụ ndị a si dị: anyị na-akpọsa adreesị na mpaghara ọ bụla, okporo ụzọ na-aga na nke kacha nso ma ghara ịgafe oke ya. E mesịa na post anyị ga-eleba anya n'ụzọ zuru ezu na ihe na-eme okporo ụzọ.

Hazie ụgbọ elu

 
Akụkụ bụ isi nke ụgbọ elu nhazi ahụ bụ API, site na nke a na-arụ ọrụ ndị bụ isi na ndị na-edozi ihe: ịmepụta, ihichapụ, ịgbanwe ihe mejupụtara nke ihe atụ, nweta nsonaazụ ahụike, wdg. N'otu aka, nke a bụ API REST, na na ndị ọzọ, anyị nọ na ígwé ojii na-ejikarị gRPC kpuchie ya, yabụ anyị na-atụgharị REST ka ọ bụrụ gRPC wee jiri naanị gRPC. Arịrịọ ọ bụla na-eduga n'ịmepụta usoro asynchronous idempotent nke a na-eme n'otu ọdọ mmiri nke ndị ọrụ Yandex.Cloud. A na-ede ihe aga-eme n'ụzọ ga-enwe ike kwụsịtụ n'oge ọ bụla wee malitegharịa. Nke a na-eme ka scalability, repeatability na ndekọ nke ọrụ.

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

N'ihi ya, ọrụ sitere na API ga-arịọ onye na-ahụ maka ọrụ nkwụnye ego arịrịọ, nke edere na Go. Ọ nwere ike ịgbakwunye ma wepụ ihe nkwụnye ego, gbanwee nhazi nke backends na ntọala. 

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Ọrụ ahụ na-echekwa steeti ya na Yandex Database, nchekwa data ekesara ekesara nke ị ga-enwe ike iji n'oge na-adịghị anya. Na Yandex.Cloud, dị ka anyị na mbụ gwara, Echiche nri nkịta na-emetụta: ọ bụrụ na anyị onwe anyị na-eji ọrụ anyị, mgbe ahụ ndị ahịa anyị ga-enwekwa obi ụtọ iji ha. Yandex Database bụ ihe atụ nke mmejuputa echiche dị otú ahụ. Anyị na-echekwa data anyị niile na YDB, na anyị ekwesịghị iche echiche maka ịnọgide na-enwe ma na-edozi nchekwa data: a na-edozi nsogbu ndị a maka anyị, anyị na-eji nchekwa data dị ka ọrụ.

Ka anyị laghachi na onye na-ahụ maka nhazi. Ọrụ ya bụ ichekwa ozi gbasara onye na-ahụ maka ihe na-edozi ma ziga ọrụ iji lelee ịdị njikere nke igwe mebere na onye na-ahụ maka nyocha ahụike.

Njikwa nlele ahụike

Ọ na-anata arịrịọ ka ọ gbanwee iwu nlele, chekwaa ya na YDB, kesaa ọrụ n'etiti oghere healtcheck ma na-achịkọta nsonaazụ ya, nke echekwara na nchekwa data wee zigara onye njikwa loadbalancer. Ya, n'aka nke ya, na-eziga arịrịọ iji gbanwee ihe mejupụtara nke ụyọkọ na ụgbọ elu data na loadbalancer-node, nke m ga-atụle n'okpuru ebe a.

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Ka anyị kwuokwuo gbasara nlele ahụike. Enwere ike kewaa ha n'ọtụtụ klas. Audits nwere ụkpụrụ ịga nke ọma dị iche iche. Nyocha TCP kwesịrị ịmalite njikọ nke ọma n'ime oge a kapịrị ọnụ. Nyocha HTTP chọrọ ma njikọ ga-aga nke ọma yana nzaghachi nwere koodu ọkwa 200.

Ọzọkwa, ndenye ego dị iche na klas nke ime ihe - ha na-arụsi ọrụ ike ma na-agafe agafe. Nyocha na-agafe agafe na-enyocha ihe na-eme na okporo ụzọ n'emeghị ihe ọ bụla pụrụ iche. Nke a anaghị arụ ọrụ nke ọma na L4 n'ihi na ọ dabere n'echiche nke ụkpụrụ usoro ọkwa dị elu: na L4 enweghị ozi gbasara ogologo oge ọrụ ahụ were ma ọ bụ ma njikọ njikọ ahụ dị mma ma ọ bụ ihe ọjọọ. Nlele nyocha na-arụ ọrụ chọrọ ka onye na-edozi ihe ka o ziga arịrịọ na ihe atụ nkesa ọ bụla.

Ọtụtụ ndị na-ebu ibu na-eme nyocha ndụ ndụ n'onwe ha. Na Cloud, anyị kpebiri ikewapụ akụkụ ndị a nke usoro iji mee ka scalability dịkwuo elu. Ụzọ a ga-enyere anyị aka ịbawanye ọnụ ọgụgụ ndị na-emezi ihe ka anyị na-ejigide ọnụ ọgụgụ nke arịrịọ nlele ahụike na ọrụ ahụ. A na-eme nlele site na ọnụ ọnụ nlele ahụike dị iche iche, nke a na-echicha ma megharịa ebumnuche nlele. Ị nweghị ike ịme nyocha n'aka otu onye ọbịa, n'ihi na ọ nwere ike ịda. Mgbe ahụ, anyị agaghị enweta ọnọdụ nke ikpe ndị o nyochara. Anyị na-eme nyocha nke ọ bụla n'ime ihe omume ndị a site na opekata mpe atọ nyocha ahụike. Anyị na-emebi ebumnuche nlele n'etiti ọnụ site na iji algọridim hashing na-agbanwe agbanwe.

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Ikewa nhazi na nyocha ahụike nwere ike ibute nsogbu. Ọ bụrụ na ọnụ ọgụgụ ahụike na-arịọ arịrịọ maka ihe atụ, na-agafe onye nhazi (nke na-adịghị arụ ọrụ okporo ụzọ ugbu a), mgbe ahụ, ọnọdụ dị ịtụnanya na-ebilite: akụ ahụ yiri ka ọ dị ndụ, mana okporo ụzọ agaghị eru ya. Anyị na-edozi nsogbu a n'ụzọ dị otú a: anyị na-ekwe nkwa ibido okporo ụzọ nyocha ahụike site na ndị na-edozi ihe. N'ikwu ya n'ụzọ ọzọ, atụmatụ maka ịkwaga ngwugwu na okporo ụzọ sitere n'aka ndị ahịa na site na nlekọta ahụike dị iche iche: n'ọnọdụ abụọ ahụ, ngwugwu ahụ ga-eru ndị na-edozi ihe, nke ga-enyefe ha na ihe ndị a chọrọ.

Ihe dị iche bụ na ndị ahịa na-arịọ arịrịọ na VIP, ebe nlele ahụike na-arịọ RIP onye ọ bụla. Nsogbu na-adọrọ mmasị na-ebilite ebe a: anyị na-enye ndị ọrụ anyị ohere ịmepụta ihe onwunwe na netwọk IP isi awọ. Ka anyị were ya na enwere ndị nwe igwe ojii abụọ dị iche iche bụ ndị zoro ọrụ ha n'azụ ndị na-emezi ihe. Onye ọ bụla n'ime ha nwere akụrụngwa na 10.0.0.1/24 subnet, nwere otu adreesị. Ịkwesịrị ka ị nwee ike ịmata ọdịiche dị n'etiti ha, ebe a ịkwesịrị ịbanye n'ime usoro nke netwọọdụ mebere Yandex.Cloud. Ọ ka mma ịchọta nkọwa ndị ọzọ na vidiyo sitere na gbasara: ihe omume Cloud, Ọ dị anyị mkpa ugbu a na netwọk ahụ nwere multi-layered ma nwee tunnels nke nwere ike ịmata ọdịiche dị na subnet id.

Ọnụ ego nlele ahụike na-akpọtụrụ ndị na-ahụ maka nhazi n'iji ihe akpọrọ quasi-IPv6 adreesị. Adreesị dị iche iche bụ adreesị IPv6 nwere adreesị IPv4 yana ID subnet onye ọrụ agbakwunyere n'ime ya. Okporo ụzọ na-erute nguzozi, nke na-ewepụta adreesị ihe onwunwe IPv4 na ya, dochie IPv6 na IPv4 ma ziga ngwugwu ahụ na netwọk onye ọrụ.

Okporo ụzọ ntụgharị na-aga n'otu ụzọ ahụ: onye na-edozi ahụ na-ahụ na ebe ọ na-aga bụ netwọk isi awọ sitere na ndị na-ahụ maka ahụike, na-atụgharị IPv4 na IPv6.

VPP - obi nke ụgbọ elu data

A na-eji teknụzụ Vector Packet Processing (VPP) emejuputa ihe nhazi ahụ, usoro sitere na Cisco maka nhazi ogbe nke okporo ụzọ netwọkụ. N'ọnọdụ anyị, usoro ahụ na-arụ ọrụ n'elu ọba akwụkwọ njikwa ngwaọrụ netwọk onye ọrụ - Data Plane Development Kit (DPDK). Nke a na-eme ka arụmọrụ nhazi nke ngwugwu dị elu: nkwụsịtụ ole na ole na-eme na kernel, ọ nweghịkwa mgbanwe dị n'etiti oghere kernel na ohere onye ọrụ. 

VPP na-aga n'ihu ma na-ewepụ arụmọrụ karịa na sistemụ site na ijikọta ngwugwu n'ime batches. Uru arụmọrụ na-abịa site na iji cache eme ihe ike na ndị nhazi ọgbara ọhụrụ. A na-eji ihe nchekwa data abụọ (a na-edozi ngwugwu na "vectors", data dị nso na ibe ya) na cache ntụziaka: na VPP, nhazi ngwugwu na-esote eserese, oghere nke nwere ọrụ ndị na-arụ otu ọrụ ahụ.

Dịka ọmụmaatụ, nhazi nke ngwugwu IP na VPP na-eme n'usoro a: nke mbụ, a na-atụgharị isi ihe ndị na-emepụta ihe na nkwụsịtụ nkwụsị, mgbe ahụ, a na-eziga ha na ọnụ, nke na-ebugharị ngwugwu ndị ahụ n'ihu dị ka tebụl ntụgharị.

Obere hardcore. Ndị na-ede akwụkwọ VPP anaghị anabata nkwenye n'iji cache processor, yabụ ụdị koodu maka nhazi vector nke ngwugwu nwere vectorization ntuziaka: enwere loop nhazi nke ọnọdụ dịka “anyị nwere ngwugwu anọ na kwụ n'ahịrị”, mgbe ahụ otu maka abụọ, mgbe ahụ - maka otu. A na-ejikarị ntuziaka prefetch na-ebunye data n'ime cache iji mee ka ịnweta ha dị ngwa n'usoro ọzọ.

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);
}

Yabụ, Healthchecks na-ekwu okwu banyere IPv6 na VPP, nke na-atụgharị ha ka ọ bụrụ IPv4. A na-eme nke a site na ọnụ na eserese, nke anyị na-akpọ algorithmic NAT. Maka ntụgharị okporo ụzọ (na ntụgharị site na IPv6 gaa na IPv4) enwere otu algorithmic NAT node.

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Traffic okporo ụzọ sitere na ndị ahịa na-agbazinye ego na-aga site na ọnụ ọgụgụ eserese, nke na-eme nhazi n'onwe ya. 

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Ọnụ ụzọ mbụ bụ oge nnyapade. Ọ na-echekwa hash nke 5-tuple n'ihi na guzosie ike sessions. 5-tuple gụnyere adreesị na ọdụ ụgbọ mmiri nke onye ahịa na-ebufe ozi, adreesị na ọdụ ụgbọ mmiri dị maka ịnweta okporo ụzọ, yana usoro netwọk. 

Hash 5-tuple na-enyere anyị aka ịrụ obere mgbako n'ime oghere hashing na-esote, yana njikwa ndepụta akụrụngwa ka mma n'azụ onye nhazi. Mgbe ngwugwu nke na-enweghị nnọkọ bịarutere na onye na-edozi ihe, a na-eziga ya na ọnụ ọnụ hashing na-agbanwe agbanwe. Nke a bụ ebe a na-eme nhazi site na iji hashing na-agbanwe agbanwe: anyị na-ahọrọ akụrụngwa site na ndepụta akụrụngwa "dị ndụ". Na-esote, a na-eziga ngwugwu ndị ahụ na oghere NAT, nke na-edochi adreesị ebe a na-aga ma na-atụgharị ego nlele. Dị ka ị pụrụ ịhụ, anyị na-agbaso iwu nke VPP - amasị-amasị, na-achịkọta yiri mgbako na-abawanye arụmọrụ nke processor cache.

Hashing na-agbanwe agbanwe

Gịnị mere anyị ji họrọ ya na ihe ọ bụ ọbụna? Nke mbụ, ka anyị tụlee ọrụ gara aga - ịhọrọ akụrụngwa site na listi ahụ. 

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Site na hashing na-ekwekọghị ekwekọ, a na-agbakọ hash nke ngwugwu na-abata, a na-ahọrọ akụrụngwa site na ndepụta site na nke fọdụrụ nke kewara hash a site na ọnụọgụ ego. Ọ bụrụhaala na ndepụta ahụ na-agbanwe agbanwe, atụmatụ a na-arụ ọrụ nke ọma: anyị na-eziga ngwugwu na otu 5-tuple na otu ihe atụ. Ọ bụrụ, dịka ọmụmaatụ, ụfọdụ akụrụngwa kwụsịrị ịzaghachi na nlele ahụike, mgbe ahụ maka akụkụ dị mkpa nke hashes nhọrọ ga-agbanwe. A ga-agbaji njikọ TCP nke onye ahịa: ngwugwu nke eruteburu ihe atụ A nwere ike ịmalite iru ihe atụ B, nke na-amachaghị na nnọkọ maka ngwugwu a.

Hashing na-agbanwe agbanwe na-edozi nsogbu a kọwara. Ụzọ kachasị mfe iji kọwaa echiche a bụ nke a: were ya na ị nwere mgbanaka nke ị na-ekesa ihe onwunwe site na hash (dịka ọmụmaatụ, site na IP: ọdụ ụgbọ mmiri). Ịhọrọ akụrụngwa na-atụgharị wheel site na akụkụ, nke a na-ekpebi site na hash nke ngwugwu ahụ.

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Nke a na-ebelata nkesa okporo ụzọ mgbe nhazi akụrụngwa gbanwere. Ihichapụ akụrụngwa ga-emetụta naanị akụkụ nke mgbanaka hashing na-agbanwe agbanwe ebe akụrụngwa ahụ dị. Ịgbakwunye akụrụngwa na-agbanwekwa nkesa, mana anyị nwere ọnụ ọnụ sessions na-adịgide adịgide, nke na-enye anyị ohere ịghara ịgbanwe oge etinyerelarị na akụrụngwa ọhụrụ.

Anyị lere anya ihe na-eme na-eduzi okporo ụzọ n'etiti onye na-eme ihe na ihe onwunwe. Ugbu a, ka anyị lelee okporo ụzọ nloghachi. Ọ na-agbaso otu ụkpụrụ ahụ dị ka nlele okporo ụzọ - site na algorithmic NAT, ya bụ, site na ntụgharị NAT 44 maka okporo ụzọ ndị ahịa yana site na NAT 46 maka okporo ụzọ nyocha ahụike. Anyị na-agbaso atụmatụ nke anyị: anyị na-ejikọta okporo ụzọ nyocha ahụike yana ezigbo okporo ụzọ onye ọrụ.

Loadbalancer-ọnụ na ihe ndị gbakọtara

Ngwakọta nke ndị na-edozi ihe na ihe onwunwe na VPP na-akọ site na ọrụ mpaghara - loadbalancer-node. Ọ na-edebanye aha na iyi nke ihe omume sitere na loadbalancer-controller ma nwee ike ịkọ ọdịiche dị n'etiti steeti VPP dị ugbu a na ọnọdụ ebumnuche enwetara n'aka onye njikwa. Anyị na-enweta usoro mechiri emechi: ihe omume sitere na API na-abịakwute onye na-ahụ maka nhazi, nke na-ekenye ndị na-ahụ maka nlekọta ahụike ọrụ iji lelee "ịdị ndụ" nke akụrụngwa. Nke ahụ, n'aka nke ya, na-ekenye ọrụ na ahụike-node ma na-achịkọta nsonaazụ ya, mgbe nke ahụ gasịrị, ọ na-ezigaghachi ha na onye na-ahụ maka nhazi. Loadbalancer-node na-edebanye aha na mmemme sitere na njikwa wee gbanwee ọnọdụ VPP. Na usoro dị otú ahụ, ọrụ ọ bụla maara naanị ihe dị mkpa gbasara ọrụ ndị agbata obi. Ọnụ ọgụgụ nke njikọ dị oke ma anyị nwere ikike iji rụọ ọrụ na tụọ akụkụ dị iche iche n'adabereghị.

Nhazi nke ihe nkwụnye ego netwọkụ na Yandex.Cloud

Olee nsogbu ndị e zere?

Edere ọrụ anyị niile dị na ụgbọ elu njikwa na Go ma nwee ezigbo njiri mara na njirimara ntụkwasị obi. Go nwere ọtụtụ ọba akwụkwọ mepere emepe maka iwu sistemu ekesa. Anyị na-eji GRPC na-arụsi ọrụ ike, ihe niile mejupụtara mmejuputa nchoputa ọrụ mepere emepe - ọrụ anyị na-enyocha arụmọrụ onye ọ bụla, nwere ike ịgbanwe ihe mejupụtara ya nke ọma, anyị jikọtara nke a na nhazi GRPC. Maka metrik, anyị na-ejikwa ihe ngwọta mepere emepe. N'ime ụgbọ elu data, anyị nwetara arụmọrụ dị mma na nnukwu nchekwa akụ: ọ tụgharịrị bụrụ ihe siri ike ikpokọta nkwụsi ike nke anyị nwere ike ịdabere na arụmọrụ nke VPP kama kaadị netwọk ígwè.

Nsogbu na Ngwọta

Gịnị na-adịghị arụ ọrụ nke ọma? Go nwere njikwa ebe nchekwa na-akpaghị aka, mana ọgbaghara ebe nchekwa ka na-eme. Ụzọ kachasị mfe iji mesoo ha bụ ịgba ọsọ goroutines ma cheta ịkwụsị ha. Iwepụ: Lelee oriri ebe nchekwa mmemme Go gị. Ọtụtụ mgbe, ihe ngosi dị mma bụ ọnụ ọgụgụ goroutines. Enwere gbakwunyere na akụkọ a: na Go, ọ dị mfe ịnweta data oge ọ bụla - oriri ebe nchekwa, ọnụọgụ goroutines na-agba ọsọ na ọtụtụ paramita ndị ọzọ.

Ọzọkwa, Go nwere ike ọ gaghị abụ nhọrọ kacha mma maka ule arụ ọrụ. Ha bụ nnọọ verbose, na ọkọlọtọ ụzọ nke "na-agba ọsọ ihe niile na CI na ogbe" adịghị adabara ha nke ukwuu. Nke bụ́ eziokwu bụ na ule arụrụ arụ na-achọkarị ihe onwunwe ma na-akpata ezigbo oge. N'ihi nke a, ule nwere ike daa n'ihi na CPU na-arụsi ọrụ ike na ule otu. Nchikota: Ọ bụrụ na ọ ga-ekwe omume, mee ule "dị arọ" iche na ule otu. 

Ihe owuwu ihe omume Microservice dị mgbagwoju anya karịa monolith: ịnakọta ndekọ n'ọtụtụ igwe dị iche iche adịghị adabara. Mkpebi: ọ bụrụ na ị na-eme microservices, ozugbo chere maka ịchọta.

Atụmatụ anyị

Anyị ga-ewepụta ihe nleba anya n'ime, onye na-ahụ maka IPv6, tinye nkwado maka scripts Kubernetes, gaa n'ihu na-emebi ọrụ anyị (ugbu a ọ bụ naanị nyocha ahụike-node na ahụike-ctrl), tinye mgbakwunye ahụike ọhụrụ, wee mejuputa mkpokọta ndenye ego. Anyị na-atụle ohere nke ime ka ọrụ anyị ọbụna karịa onwe - nke mere na ha na-ekwurịta okwu ozugbo na onye ọ bụla ọzọ, ma na-eji a ozi kwụ n'ahịrị. Ọrụ dakọtara na SQS egosila n'oge na-adịbeghị anya na igwe ojii Yandex Message Queue.

N'oge na-adịbeghị anya, ntọhapụ ọha nke Yandex Load Balancer mere. Nyochaa akwụkwọ na ọrụ, jikwaa balancers n'ụzọ dị mma maka gị na welie mmejọ ndidi nke gị oru ngo!

isi: www.habr.com

Tinye a comment