Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud
Kaabo, Emi ni Sergey Elantsev, Mo dagbasoke iwontunwonsi fifuye nẹtiwọki ninu Yandex.Cloud. Ni iṣaaju, Mo ṣe itọsọna idagbasoke ti iwọntunwọnsi L7 fun ọna abawọle Yandex - awọn ẹlẹgbẹ ṣe awada pe ohunkohun ti MO ṣe, o wa ni iwọntunwọnsi. Emi yoo sọ fun awọn oluka Habr bi o ṣe le ṣakoso fifuye ni pẹpẹ awọsanma, ohun ti a rii bi ohun elo to dara julọ fun iyọrisi ibi-afẹde yii, ati bii a ṣe nlọ si kikọ ọpa yii.

Ni akọkọ, jẹ ki a ṣafihan diẹ ninu awọn ofin:

  • VIP (Virtual IP) - adiresi IP iwontunwonsi
  • Olupin, ẹhin, apẹẹrẹ – ẹrọ foju kan nṣiṣẹ ohun elo kan
  • RIP (IP gidi) - adiresi IP olupin
  • Ṣiṣayẹwo ilera - ṣiṣayẹwo imurasilẹ olupin
  • Agbegbe wiwa, AZ - awọn amayederun ti o ya sọtọ ni ile-iṣẹ data kan
  • Ekun - a Euroopu ti o yatọ si AZs

Awọn iwọntunwọnsi fifuye yanju awọn iṣẹ-ṣiṣe akọkọ mẹta: wọn ṣe iwọntunwọnsi funrararẹ, mu ifarada aṣiṣe ti iṣẹ naa pọ si, ati mu iwọn iwọn rẹ rọrun. Ifarada aṣiṣe jẹ idaniloju nipasẹ iṣakoso ijabọ aifọwọyi: iwọntunwọnsi ṣe abojuto ipo ohun elo naa ati yọkuro awọn iṣẹlẹ lati iwọntunwọnsi ti ko kọja ayẹwo igbesi aye. Iwọn wiwọn jẹ idaniloju nipasẹ pinpin aṣọ ti ẹru kọja awọn iṣẹlẹ, bakanna bi imudojuiwọn atokọ ti awọn iṣẹlẹ lori fo. Ti iwọntunwọnsi ko ba jẹ aṣọ ti o to, lẹhinna diẹ ninu awọn iṣẹlẹ yoo gba ẹru ti o kọja opin agbara wọn, ati pe iṣẹ naa yoo di igbẹkẹle diẹ sii.

Oniwọntunwọnsi fifuye nigbagbogbo jẹ ipin nipasẹ Layer Ilana lati awoṣe OSI eyiti o nṣiṣẹ. Iwontunws.funfun Awọsanma nṣiṣẹ ni ipele TCP, eyiti o ni ibamu si ipele kẹrin, L4.

Jẹ ki a lọ siwaju si awotẹlẹ ti faaji iwọntunwọnsi awọsanma. A yoo maa pọ si ipele ti alaye. A pin awọn paati iwọntunwọnsi si awọn kilasi mẹta. Kilasi ọkọ ofurufu atunto jẹ iduro fun ibaraenisepo olumulo ati tọju ipo ibi-afẹde ti eto naa. Ọkọ ofurufu iṣakoso n tọju ipo lọwọlọwọ ti eto naa ati ṣakoso awọn eto lati kilasi ọkọ ofurufu data, eyiti o jẹ iduro taara fun jiṣẹ ijabọ lati ọdọ awọn alabara si awọn iṣẹlẹ rẹ.

Data ofurufu

Ijabọ naa pari lori awọn ẹrọ gbowolori ti a pe ni awọn olulana aala. Lati mu ifarada ẹbi pọ si, ọpọlọpọ iru awọn ẹrọ nṣiṣẹ ni nigbakannaa ni ile-iṣẹ data kan. Nigbamii ti, ijabọ naa lọ si awọn iwọntunwọnsi, eyiti o kede awọn adirẹsi IP eyikeyicast si gbogbo awọn AZ nipasẹ BGP fun awọn alabara. 

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Gbigbe ijabọ lori ECMP - eyi jẹ ilana ipa-ọna ni ibamu si eyiti o le jẹ ọpọlọpọ awọn ipa-ọna ti o dara deede si ibi-afẹde (ninu ọran wa, ibi-afẹde yoo jẹ adirẹsi IP opin irin ajo) ati pe awọn apo-iwe le firanṣẹ pẹlu eyikeyi ninu wọn. A tun ṣe atilẹyin iṣẹ ni ọpọlọpọ awọn agbegbe wiwa ni ibamu si ero atẹle: a polowo adirẹsi kan ni agbegbe kọọkan, ijabọ lọ si agbegbe ti o sunmọ ati pe ko kọja awọn opin rẹ. Nigbamii ni ifiweranṣẹ a yoo wo ni alaye diẹ sii ni ohun ti o ṣẹlẹ si ijabọ.

Ofurufu atunto

 
Ẹya bọtini ti ọkọ ofurufu atunto jẹ API, nipasẹ eyiti awọn iṣẹ ipilẹ pẹlu awọn iwọntunwọnsi ṣe: ṣiṣẹda, piparẹ, yiyipada akopọ ti awọn iṣẹlẹ, gbigba awọn abajade ilera, ati bẹbẹ lọ Ni apa kan, eyi jẹ API REST, ati lori miiran, awa ninu Awọsanma nigbagbogbo lo ilana gRPC, nitorinaa a “tumọ” REST si gRPC ati lẹhinna lo gRPC nikan. Eyikeyi ibeere nyorisi ṣiṣẹda lẹsẹsẹ ti awọn iṣẹ-ṣiṣe idempotent asynchronous ti o ṣe lori adagun-odo ti o wọpọ ti awọn oṣiṣẹ Yandex.Cloud. Awọn iṣẹ ṣiṣe ni a kọ ni ọna ti wọn le daduro ni eyikeyi akoko ati lẹhinna tun bẹrẹ. Eleyi idaniloju scalability, repeatability ati gedu ti mosi.

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Bi abajade, iṣẹ-ṣiṣe lati API yoo ṣe ibeere si oluṣakoso iṣẹ iwọntunwọnsi, eyiti a kọ ni Go. O le ṣafikun ati yọ awọn iwọntunwọnsi kuro, yi akopọ ti awọn ẹhin ati awọn eto pada. 

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Iṣẹ naa tọju ipo rẹ ni aaye data Yandex, ibi ipamọ data iṣakoso pinpin ti iwọ yoo ni anfani lati lo laipẹ. Ni Yandex.Cloud, bi a ti tẹlẹ so fun, Agbekale ounje aja kan: ti a ba lo awọn iṣẹ wa, lẹhinna awọn onibara wa yoo tun ni idunnu lati lo wọn. Aaye data Yandex jẹ apẹẹrẹ ti imuse ti iru ero kan. A tọju gbogbo data wa ni YDB, ati pe a ko ni lati ronu nipa mimu ati iwọn data data: awọn iṣoro wọnyi ti yanju fun wa, a lo ibi ipamọ data bi iṣẹ kan.

Jẹ ki a pada si oludari iwọntunwọnsi. Iṣẹ-ṣiṣe rẹ ni lati ṣafipamọ alaye nipa iwọntunwọnsi ati firanṣẹ iṣẹ-ṣiṣe kan lati ṣayẹwo imurasilẹ ti ẹrọ foju si oluṣakoso ayẹwo ilera.

Healthcheck oludari

O gba awọn ibeere lati yi awọn ofin ayẹwo pada, fi wọn pamọ sinu YDB, pin awọn iṣẹ ṣiṣe laarin awọn apa healtcheck ati ṣajọpọ awọn abajade, eyiti o wa ni fipamọ si ibi ipamọ data ati firanṣẹ si oluṣakoso loadbalancer. O, lapapọ, firanṣẹ ibeere kan lati yi akopọ ti iṣupọ ninu ọkọ ofurufu data pada si node loadbalancer, eyiti Emi yoo jiroro ni isalẹ.

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Jẹ ki a sọrọ diẹ sii nipa awọn ayẹwo ilera. Wọn le pin si awọn kilasi pupọ. Audits ni orisirisi aseyori àwárí mu. Awọn sọwedowo TCP nilo lati fi idi asopọ kan mulẹ ni aṣeyọri laarin iye akoko ti o wa titi. Awọn sọwedowo HTTP nilo asopọ aṣeyọri mejeeji ati esi pẹlu koodu ipo 200 kan.

Paapaa, awọn sọwedowo yatọ ni kilasi iṣe - wọn ṣiṣẹ ati palolo. Awọn sọwedowo palolo nirọrun ṣe atẹle ohun ti n ṣẹlẹ pẹlu ijabọ laisi gbigbe eyikeyi igbese pataki. Eyi ko ṣiṣẹ daradara pupọ lori L4 nitori pe o da lori ọgbọn ti awọn ilana ipele ti o ga julọ: lori L4 ko si alaye nipa bii iṣẹ ṣiṣe naa ṣe pẹ to tabi boya ipari asopọ naa dara tabi buburu. Awọn sọwedowo ti nṣiṣe lọwọ nilo iwọntunwọnsi lati fi awọn ibeere ranṣẹ si apẹẹrẹ olupin kọọkan.

Pupọ awọn iwọntunwọnsi fifuye ṣe awọn sọwedowo igbesi aye funrararẹ. Ni Cloud, a pinnu lati ya awọn ẹya wọnyi ti eto naa lati mu iwọn iwọn pọ si. Ọna yii yoo gba wa laaye lati mu nọmba awọn iwọntunwọnsi pọ si lakoko mimu nọmba awọn ibeere ayẹwo ilera si iṣẹ naa. Awọn sọwedowo ni a ṣe nipasẹ awọn apa ayẹwo ilera ọtọtọ, kọja eyiti awọn ibi-afẹde ṣayẹwo ti pin ati tun ṣe. O ko le ṣe awọn sọwedowo lati ọdọ agbalejo kan, nitori o le kuna. Lẹhinna a kii yoo gba ipo ti awọn iṣẹlẹ ti o ṣayẹwo. A ṣe awọn sọwedowo lori eyikeyi awọn iṣẹlẹ lati o kere ju awọn apa ayẹwo ilera mẹta. A pin awọn idi ti awọn sọwedowo laarin awọn apa lilo awọn algoridimu hashing dédé.

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Iyapa iwọntunwọnsi ati ayẹwo ilera le ja si awọn iṣoro. Ti oju-ọna ayẹwo ilera ṣe awọn ibeere si apẹẹrẹ, titọpa iwọntunwọnsi (eyiti kii ṣe lọwọlọwọ ijabọ), lẹhinna ipo ajeji kan dide: orisun naa dabi ẹni pe o wa laaye, ṣugbọn ijabọ kii yoo de ọdọ rẹ. A yanju iṣoro yii ni ọna yii: a ni iṣeduro lati bẹrẹ ijabọ ayẹwo ilera nipasẹ awọn iwọntunwọnsi. Ni awọn ọrọ miiran, ero fun gbigbe awọn apo-iwe pẹlu ijabọ lati ọdọ awọn alabara ati lati awọn sọwedowo ilera yatọ ni iwonba: ni awọn ọran mejeeji, awọn apo-iwe yoo de ọdọ awọn iwọntunwọnsi, eyiti yoo fi wọn ranṣẹ si awọn orisun ibi-afẹde.

Iyatọ naa ni pe awọn alabara ṣe awọn ibeere si VIP, lakoko ti awọn sọwedowo ilera ṣe awọn ibeere si RIP kọọkan. Iṣoro ti o nifẹ si dide nibi: a fun awọn olumulo wa ni aye lati ṣẹda awọn orisun ni awọn nẹtiwọọki IP grẹy. Jẹ ki a fojuinu pe awọn oniwun awọsanma oriṣiriṣi meji wa ti o ti fi awọn iṣẹ wọn pamọ lẹhin awọn iwọntunwọnsi. Ọkọọkan wọn ni awọn orisun ni subnet 10.0.0.1/24, pẹlu awọn adirẹsi kanna. O nilo lati ni anfani lati ṣe iyatọ wọn bakan, ati nibi o nilo lati besomi sinu eto ti nẹtiwọọki foju Yandex.Cloud. O dara lati wa awọn alaye diẹ sii ninu fidio lati nipa: awọsanma iṣẹlẹ, o ṣe pataki fun wa ni bayi pe nẹtiwọọki jẹ ọpọ-siwa ati pe o ni awọn tunnels ti o le ṣe iyatọ nipasẹ id subnet.

Ṣiṣayẹwo awọn apa ilera olubasọrọ awọn iwọntunwọnsi nipa lilo awọn adirẹsi quasi-IPv6 ti a npe ni. Adirẹsi-kuasi jẹ adirẹsi IPv6 kan pẹlu adirẹsi IPv4 kan ati idanimọ olumulo subnet ti a fi sinu rẹ. Ijabọ naa de ọdọ iwọntunwọnsi, eyiti o yọ adiresi orisun IPv4 kuro lati ọdọ rẹ, rọpo IPv6 pẹlu IPv4 ati fi apo-iwe ranṣẹ si nẹtiwọọki olumulo.

Iyipada ijabọ n lọ ni ọna kanna: iwọntunwọnsi rii pe opin irin ajo jẹ nẹtiwọọki grẹy lati ọdọ awọn olutọju ilera, ati iyipada IPv4 si IPv6.

VPP - okan ti ọkọ ofurufu data

Oniwontunwonsi ti wa ni imuse nipa lilo Vector Packet Processing (VPP) ọna ẹrọ, a ilana lati Sisiko fun ipele processing ti nẹtiwọki ijabọ. Ninu ọran wa, ilana naa n ṣiṣẹ lori oke ile ikawe iṣakoso ẹrọ nẹtiwọọki olumulo-aaye - Data Plane Development Kit (DPDK). Eyi ṣe idaniloju iṣẹ ṣiṣe soso giga: awọn idilọwọ pupọ diẹ waye ninu ekuro, ati pe ko si awọn iyipada ọrọ laarin aaye ekuro ati aaye olumulo. 

VPP lọ paapaa siwaju ati fun pọ iṣẹ ṣiṣe diẹ sii lati inu eto nipasẹ apapọ awọn idii sinu awọn ipele. Awọn anfani iṣẹ wa lati lilo ibinu ti awọn kaṣe lori awọn ilana ode oni. Mejeeji data caches ti wa ni lilo (awọn apo-iwe ti wa ni ilọsiwaju ni "vectors", awọn data ti wa ni isunmọ si kọọkan miiran) ati ẹkọ caches: ni VPP, packet processing wọnyi a awonya, awọn apa ti eyi ti o ni awọn iṣẹ ti o ṣe iṣẹ-ṣiṣe kanna.

Fun apẹẹrẹ, sisẹ awọn apo-iwe IP ni VPP waye ni ilana atẹle: akọkọ, awọn akọle apo-iwe ti wa ni ṣiṣafihan ni apa ibi-itumọ, lẹhinna wọn firanṣẹ si ipade, eyiti o gbe awọn apo-iwe siwaju siwaju ni ibamu si awọn tabili itọnisọna.

Ogbontarigi kekere kan. Awọn onkọwe ti VPP ko fi aaye gba awọn adehun ni lilo awọn caches ero isise, nitorinaa koodu aṣoju fun sisẹ fekito ti awọn apo-iwe ni vectorization Afowoyi: loop processing kan wa ninu eyiti ipo kan bii “a ni awọn apo-iwe mẹrin ni isinyi” ti ni ilọsiwaju, lẹhinna kanna fun meji, lẹhinna - fun ọkan. Awọn itọnisọna Prefetch nigbagbogbo ni a lo lati gbe data sinu awọn caches lati yara wọle si wọn ni awọn aṣetunṣe ti o tẹle.

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

Nitorinaa, Healthchecks sọrọ lori IPv6 si VPP, eyiti o yi wọn pada si IPv4. Eyi ni a ṣe nipasẹ ipade kan ninu awọn aworan, eyiti a pe ni algorithmic NAT. Fun ijabọ iyipada (ati iyipada lati IPv6 si IPv4) ọna algorithmic NAT kanna wa.

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Awọn ijabọ taara lati ọdọ awọn alabara iwọntunwọnsi lọ nipasẹ awọn apa ayaworan, eyiti o ṣe iwọntunwọnsi funrararẹ. 

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Ipade akọkọ jẹ awọn akoko alalepo. O tọjú awọn hash ti 5-tuple fun awọn akoko iṣeto. 5-tuple pẹlu adirẹsi ati ibudo ti alabara lati eyiti alaye ti gbejade, adirẹsi ati awọn ebute oko oju omi ti o wa fun gbigba ijabọ, bakanna bi ilana nẹtiwọọki naa. 

Hash 5-tuple n ṣe iranlọwọ fun wa lati ṣe iṣiro kere si ni ipade hashing dédé ti o tẹle, bakanna bi awọn ayipada atokọ awọn orisun ti o dara julọ ṣe iyipada lẹhin iwọntunwọnsi. Nigbati soso kan fun eyiti ko si igba de ibi iwọntunwọnsi, a firanṣẹ si ipade hashing dédé. Eyi ni ibiti iwọntunwọnsi waye nipa lilo hashing dédé: a yan orisun kan lati atokọ ti awọn orisun “ifiwe” ti o wa. Nigbamii ti, awọn apo-iwe naa ni a firanṣẹ si ipade NAT, eyiti o rọpo adirẹsi ibi-ajo gangan ati ṣe atunto awọn sọwedowo. Bii o ti le rii, a tẹle awọn ofin ti VPP - fẹran lati ṣe akojọpọ iru awọn iṣiro lati mu iṣẹ ṣiṣe ti awọn caches ero isise pọ si.

hashing deede

Kini idi ti a yan ati kini paapaa? Ni akọkọ, jẹ ki a gbero iṣẹ-ṣiṣe ti tẹlẹ - yiyan orisun kan lati atokọ naa. 

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Pẹlu hashing aisedede, hash ti apo ti nwọle jẹ iṣiro, ati pe a yan orisun kan lati inu atokọ nipasẹ iyoku ti pinpin hash yii nipasẹ nọmba awọn orisun. Niwọn igba ti atokọ naa ko yipada, ero yii ṣiṣẹ daradara: a firanṣẹ awọn apo-iwe nigbagbogbo pẹlu 5-tuple kanna si apẹẹrẹ kanna. Ti, fun apẹẹrẹ, diẹ ninu awọn orisun dẹkun idahun si awọn sọwedowo ilera, lẹhinna fun apakan pataki ti hashes yiyan yoo yipada. Awọn asopọ TCP ti alabara yoo fọ: apo kan ti o ti de apẹẹrẹ A tẹlẹ le bẹrẹ lati de apẹẹrẹ B, eyiti ko faramọ pẹlu igba fun soso yii.

Hashing deedee yanju iṣoro ti a ṣalaye. Ọna to rọọrun lati ṣe alaye imọran yii ni eyi: fojuinu pe o ni oruka kan si eyiti o pin awọn orisun nipasẹ hash (fun apẹẹrẹ, nipasẹ IP: ibudo). Yiyan orisun kan jẹ titan kẹkẹ nipasẹ igun kan, eyiti o jẹ ipinnu nipasẹ hash ti apo.

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Eyi dinku atunkọ ijabọ nigbati akojọpọ awọn orisun ba yipada. Piparẹ awọn oluşewadi yoo ni ipa nikan ni apakan ti iwọn hashing dédé ninu eyiti ohun elo naa wa. Ṣafikun orisun kan tun yipada pinpin, ṣugbọn a ni ipade awọn akoko alalepo, eyiti o gba wa laaye lati ma yipada awọn akoko ti iṣeto tẹlẹ si awọn orisun tuntun.

A wo ohun ti o ṣẹlẹ si taara ijabọ laarin iwọntunwọnsi ati awọn orisun. Bayi jẹ ki a wo ijabọ ipadabọ. O tẹle ilana kanna bi ijabọ ayẹwo - nipasẹ algorithmic NAT, iyẹn ni, nipasẹ yiyipada NAT 44 fun ijabọ alabara ati nipasẹ NAT 46 fun ijabọ awọn sọwedowo ilera. A faramọ ero tiwa: a ṣọkan awọn ijabọ ilera ati ijabọ olumulo gidi.

Loadbalancer-ipade ati jọ irinše

Awọn akopọ ti awọn iwọntunwọnsi ati awọn orisun ni VPP jẹ ijabọ nipasẹ iṣẹ agbegbe - loadbalancer-node . O ṣe alabapin si ṣiṣan ti awọn iṣẹlẹ lati ọdọ oluṣakoso loadbalancer ati pe o ni anfani lati gbero iyatọ laarin ipo VPP lọwọlọwọ ati ipo ibi-afẹde ti a gba lati ọdọ oludari. A gba eto pipade: awọn iṣẹlẹ lati API wa si oluṣakoso iwọntunwọnsi, eyiti o fi awọn iṣẹ ṣiṣe si olutọju ilera lati ṣayẹwo “igbesi aye” ti awọn orisun. Iyẹn, ni ọna, fi awọn iṣẹ-ṣiṣe si ibi-itọju ilera ati ṣajọpọ awọn abajade, lẹhin eyi o firanṣẹ wọn pada si oludari iwọntunwọnsi. Loadbalancer-node ṣe alabapin si awọn iṣẹlẹ lati ọdọ oludari ati yi ipo VPP pada. Ni iru eto, kọọkan iṣẹ mọ nikan ohun ti o jẹ pataki nipa adugbo awọn iṣẹ. Nọmba awọn asopọ jẹ opin ati pe a ni agbara lati ṣiṣẹ ati iwọn awọn abala oriṣiriṣi ni ominira.

Iṣagbekalẹ ti iwọntunwọnsi fifuye nẹtiwọọki ni Yandex.Cloud

Àwọn ọ̀ràn wo ni wọ́n yẹra fún?

Gbogbo awọn iṣẹ wa ninu ọkọ ofurufu iṣakoso ni a kọ ni Go ati pe o ni iwọn ti o dara ati awọn abuda igbẹkẹle. Go ni ọpọlọpọ awọn ile-ikawe orisun ṣiṣi fun kikọ awọn eto pinpin. A nlo GRPC ni itara, gbogbo awọn paati ni imuse orisun ṣiṣi ti iṣawari iṣẹ - awọn iṣẹ wa ṣe abojuto iṣẹ ara ẹni, le yi akopọ wọn pada ni agbara, ati pe a so eyi pọ pẹlu iwọntunwọnsi GRPC. Fun awọn metiriki, a tun lo ojutu orisun ṣiṣi. Ninu ọkọ ofurufu data, a ni iṣẹ ṣiṣe ti o tọ ati ifiṣura awọn orisun nla: o wa ni ṣoro pupọ lati ṣajọ iduro kan nibiti a le gbarale iṣẹ ti VPP, dipo kaadi nẹtiwọọki irin.

Awọn iṣoro ati awọn solusan

Kini ko ṣiṣẹ daradara bẹ? Go ni iṣakoso iranti aifọwọyi, ṣugbọn awọn n jo iranti tun n ṣẹlẹ. Ọna to rọọrun lati ṣe pẹlu wọn ni lati ṣiṣẹ awọn gorutines ati ranti lati fopin si wọn. Gbigba kuro: Wo agbara iranti awọn eto Go rẹ. Nigbagbogbo Atọka ti o dara ni nọmba awọn gorutines. Afikun kan wa ninu itan yii: ni Go o rọrun lati gba data asiko-ṣiṣe - agbara iranti, nọmba awọn gorutines ti nṣiṣẹ, ati ọpọlọpọ awọn aye miiran.

Paapaa, Go le ma jẹ yiyan ti o dara julọ fun awọn idanwo iṣẹ. Wọn jẹ ọrọ-ọrọ pupọ, ati pe ọna boṣewa ti “ṣiṣẹ ohun gbogbo ni CI ni ipele kan” ko dara pupọ fun wọn. Otitọ ni pe awọn idanwo iṣẹ ṣiṣe jẹ ibeere awọn orisun diẹ sii ati fa awọn akoko akoko gidi. Nitori eyi, awọn idanwo le kuna nitori Sipiyu nšišẹ pẹlu awọn idanwo ẹyọkan. Ipari: Ti o ba ṣeeṣe, ṣe awọn idanwo “eru” lọtọ lati awọn idanwo ẹyọkan. 

Faaji iṣẹlẹ Microservice jẹ eka sii ju monolith kan: gbigba awọn akọọlẹ lori awọn dosinni ti awọn ẹrọ oriṣiriṣi ko rọrun pupọ. Ipari: ti o ba ṣe awọn iṣẹ microservices, ronu lẹsẹkẹsẹ nipa wiwa kakiri.

Eto wa

A yoo ṣe ifilọlẹ iwọntunwọnsi inu, iwọntunwọnsi IPv6 kan, ṣafikun atilẹyin fun awọn iwe afọwọkọ Kubernetes, tẹsiwaju lati shard awọn iṣẹ wa (layiyi nikan sọwedowo ilera-node ati healthcheck-ctrl ti jẹ sharded), ṣafikun awọn sọwedowo ilera tuntun, ati tun ṣe imuse akojọpọ smart ti awọn sọwedowo. A n ṣe akiyesi iṣeeṣe ti ṣiṣe awọn iṣẹ wa paapaa ominira diẹ sii - nitorinaa wọn kii ṣe ibaraẹnisọrọ taara pẹlu ara wọn, ṣugbọn lilo isinyi ifiranṣẹ kan. Iṣẹ ibaramu SQS kan ti han laipẹ ninu Awọsanma Ifiranṣẹ Yandex.

Laipe, itusilẹ gbangba ti Yandex Load Balancer waye. Ye iwe aṣẹ si iṣẹ naa, ṣakoso awọn iwọntunwọnsi ni ọna ti o rọrun fun ọ ati mu ifarada aṣiṣe ti awọn iṣẹ akanṣe rẹ pọ si!

orisun: www.habr.com

Fi ọrọìwòye kun