Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Ang Netflix mao ang nanguna sa merkado sa telebisyon sa Internet - ang kompanya nga nagmugna ug aktibo nga nagpalambo niini nga bahin. Nailhan ang Netflix dili lamang sa daghang katalogo sa mga salida ug serye sa TV nga magamit gikan sa halos matag suok sa planeta ug bisan unsang aparato nga adunay usa ka display, apan alang usab sa kasaligan nga imprastraktura ug talagsaon nga kultura sa engineering.

Usa ka tin-aw nga pananglitan sa pamaagi sa Netflix sa pagpalambo ug pagsuporta sa mga komplikadong sistema gipresentar sa DevOops 2019 Sergey Fedorov - Direktor sa Pag-uswag sa Netflix. Graduate sa Faculty sa Computational Mathematics ug Mathematics sa Nizhny Novgorod State University. Lobachevsky, Sergey usa sa unang mga inhenyero sa Open Connect - CDN team sa Netflix. Nagtukod siya og mga sistema alang sa pag-monitor ug pag-analisar sa datos sa video, naglunsad og usa ka popular nga serbisyo alang sa pagtimbang-timbang sa gikusgon sa koneksyon sa Internet FAST.com, ug sa miaging pipila ka tuig nagtrabaho sa pag-optimize sa mga hangyo sa Internet aron ang aplikasyon sa Netflix molihok sa labing madali nga panahon alang sa mga tiggamit.

Ang taho nakadawat sa labing maayo nga mga pagsusi gikan sa mga partisipante sa komperensya, ug kami nag-andam ug usa ka bersyon sa teksto para kanimo.

Sa iyang taho, si Sergei misulti sa detalye

  • bahin sa kung unsa ang makaapekto sa paglangan sa mga hangyo sa Internet tali sa kliyente ug server;
  • unsaon pagpakunhod niini nga paglangan;
  • unsaon pagdesinyo, pagmentinar ug pagmonitor sa mga sistema nga makatugot sa sayop;
  • unsaon pagkab-ot ang mga resulta sa mubo nga panahon, ug adunay gamay nga risgo sa negosyo;
  • unsaon pag-analisar sa mga resulta ug pagkat-on gikan sa mga sayop.

Ang mga tubag niini nga mga pangutana gikinahanglan dili lamang niadtong nagtrabaho sa dagkong mga korporasyon.

Ang gipresentar nga mga prinsipyo ug mga teknik kinahanglan mahibal-an ug buhaton sa tanan nga nagpalambo ug nagsuporta sa mga produkto sa Internet.

Sunod mao ang pagsaysay gikan sa panglantaw sa mamumulong.

Ang kamahinungdanon sa internet speed

Ang katulin sa mga hangyo sa Internet direktang may kalabutan sa negosyo. Hunahunaa ang industriya sa pagpamalit: Amazon kaniadtong 2009 misultinga ang paglangan sa 100ms moresulta sa pagkawala sa 1% sa halin.

Nagkadaghan ang mga mobile device, gisundan sa mga mobile site ug aplikasyon. Kung ang imong panid magdugay sa 3 segundos aron makarga, mawala kanimo ang katunga sa imong mga tiggamit. UBAN Hulyo 2018 Giisip sa Google ang katulin sa pagkarga sa imong panid sa mga resulta sa pagpangita: kung mas paspas ang panid, mas taas ang posisyon niini sa Google.

Ang katulin sa koneksyon hinungdanon usab sa mga institusyong pinansyal kung diin kritikal ang latency. Sa 2015, Hibernia Networks nahuman usa ka $400 milyon nga cable tali sa New York ug London aron makunhuran ang latency tali sa mga lungsod sa 6ms. Hunahunaa ang $66 milyon alang sa 1 ms nga pagkunhod sa latency!

Sumala sa panukiduki, ang katulin sa koneksyon nga labaw sa 5 Mbit/s dili na direktang makaapekto sa gikusgon sa pagkarga sa kasagarang website. Bisan pa, adunay usa ka linear nga relasyon tali sa latency sa koneksyon ug katulin sa pagkarga sa panid:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Bisan pa, ang Netflix dili kasagaran nga produkto. Ang epekto sa latency ug katulin sa tiggamit usa ka aktibo nga lugar sa pag-analisar ug pag-uswag. Adunay pagkarga sa aplikasyon ug pagpili sa sulud nga nagdepende sa latency, apan ang pagkarga sa mga static nga elemento ug streaming nagdepende usab sa katulin sa koneksyon. Ang pag-analisar ug pag-optimize sa mga hinungdan nga hinungdan nga nakaimpluwensya sa kasinatian sa gumagamit usa ka aktibo nga lugar sa pag-uswag alang sa daghang mga koponan sa Netflix. Usa sa mga tumong mao ang pagpakunhod sa latency sa mga hangyo tali sa Netflix device ug sa cloud infrastructure.

Sa report mag-focus kami ilabi na sa pagkunhod sa latency gamit ang pananglitan sa imprastraktura sa Netflix. Atong tagdon gikan sa usa ka praktikal nga punto sa panglantaw kon sa unsang paagi sa pagduol sa mga proseso sa disenyo, kalamboan ug operasyon sa mga komplikado nga-apod-apod nga mga sistema ug mogahin og panahon sa kabag-ohan ug mga resulta, kay sa pag-diagnose sa mga problema sa operasyon ug mga pagkaguba.

Sulod sa Netflix

Liboan ka lainlaing mga aparato ang nagsuporta sa mga aplikasyon sa Netflix. Gipalambo sila sa upat ka lain-laing mga team, nga naghimo sa bulag nga mga bersyon sa kliyente alang sa Android, iOS, TV ug web browser. Ug naggasto kami daghang paningkamot sa pagpaayo ug pag-personalize sa kasinatian sa gumagamit. Aron mahimo kini, nagpadagan kami gatusan ka mga pagsulay sa A/B nga managsama.

Ang pag-personalize gisuportahan sa gatusan ka mga microservice sa AWS cloud, nga naghatag og personalized nga data sa user, query dispatch, telemetry, Big Data ug Encoding. Ang pagtan-aw sa trapiko ingon niini:

Link sa video nga adunay demonstrasyon (6:04-6:23)

Sa wala mao ang entry point, ug dayon ang trapiko giapod-apod sa pipila ka gatos nga microservices nga gisuportahan sa lainlaing mga backend team.

Ang laing importanteng bahin sa among imprastraktura mao ang Open Connect CDN, nga naghatod ug static content ngadto sa end user - mga video, hulagway, client code, ug uban pa. Ang CDN nahimutang sa custom servers (OCA - Open Connect Appliance). Sa sulod adunay mga han-ay sa SSD ug HDD drive nga nagdagan nga na-optimize nga FreeBSD, nga adunay NGINX ug usa ka hugpong sa mga serbisyo. Kami nagdesinyo ug nag-optimize sa mga sangkap sa hardware ug software aron ang ingon nga CDN server makapadala ug daghang datos kutob sa mahimo sa mga tiggamit.

Ang "wall" niini nga mga server sa Internet traffic exchange point (Internet eXchange - IX) ingon niini:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Ang Internet Exchange naghatag og abilidad sa mga Internet service providers ug content providers nga β€œmagkonektar” sa usag usa aron mas direktang magbayloay og data sa Internet. Adunay gibana-bana nga 70-80 nga mga punto sa Internet Exchange sa tibuuk kalibutan diin ang among mga server na-install, ug kami independente nga nag-install ug nagmentinar niini:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Dugang pa, naghatag usab kami og mga server direkta sa mga Internet providers, nga ilang gi-install sa ilang network, nga nagpauswag sa lokalisasyon sa trapiko sa Netflix ug ang kalidad sa streaming alang sa mga tiggamit:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Usa ka hugpong sa mga serbisyo sa AWS ang responsable sa pagpadala sa mga hangyo sa video gikan sa mga kliyente ngadto sa mga server sa CDN, ingon man usab sa pag-configure sa mga server mismo - pag-update sa sulod, code sa programa, mga setting, ug uban pa. Alang sa ulahi, nagtukod usab kami usa ka backbone network nga nagkonektar sa mga server sa mga punto sa Internet Exchange sa AWS. Ang backbone network usa ka global nga network sa fiber optic nga mga kable ug mga router nga mahimo natong idisenyo ug i-configure base sa atong mga panginahanglan.

Pinaagi sa Mga banabana sa Sandvine, ang among imprastraktura sa CDN naghatod ug gibana-bana nga β…› sa trapiko sa Internet sa kalibutan panahon sa peak hours ug β…“ sa trapiko sa North America, diin ang Netflix na ang pinakadugay. Makapaikag nga mga numero, apan alang kanako usa sa labing kahibulongan nga mga nahimo mao nga ang tibuuk nga sistema sa CDN gipalambo ug gipadayon sa usa ka grupo nga wala’y 150 ka tawo.

Sa sinugdan, ang imprastraktura sa CDN gidisenyo aron maghatud sa datos sa video. Bisan pa, sa paglabay sa panahon nahibal-an namon nga magamit usab namon kini aron ma-optimize ang dinamikong mga hangyo gikan sa mga kliyente sa AWS cloud.

Mahitungod sa pagpadali sa Internet

Karon, ang Netflix adunay 3 nga mga rehiyon sa AWS, ug ang latency sa mga hangyo sa panganod magdepende kung unsa ka layo ang kustomer gikan sa labing duol nga rehiyon. Sa parehas nga oras, kami adunay daghang mga server sa CDN nga gigamit sa paghatud sa static nga sulud. Aduna bay bisan unsang paagi sa paggamit niini nga balangkas aron mapadali ang dinamikong mga pangutana? Bisan pa, sa kasubo, imposible nga ma-cache kini nga mga hangyo - Ang mga API gi-personalize ug ang matag resulta talagsaon.

Maghimo kita ug proxy sa CDN server ug magsugod sa pagpadala ug trapiko pinaagi niini. Mas paspas ba kini?

Materyal

Atong hinumdoman kung giunsa ang mga protocol sa network molihok. Karon, kadaghanan sa trapiko sa Internet naggamit sa HTTPs, nga nagdepende sa ubos nga layer nga protocol TCP ug TLS. Aron ang usa ka kliyente makakonektar sa server, kini usa ka handshake, ug aron makatukod og usa ka luwas nga koneksyon, ang kliyente kinahanglan nga magbayloay og mga mensahe sa server sa tulo ka beses ug labing menos usa pa ka higayon sa pagbalhin sa datos. Uban sa latency kada round trip (RTT) nga 100 ms, magkinahanglan kini og 400 ms aron makadawat sa unang gamay nga datos:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Kung atong ibutang ang mga sertipiko sa CDN server, nan ang oras sa handshake tali sa kliyente ug sa server mahimong makunhuran pag-ayo kung ang CDN mas duol. Ibutang nato nga ang latency sa CDN server kay 30ms. Unya magkinahanglan og 220 ms aron madawat ang unang bit:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Apan ang mga bentaha wala matapos didto. Sa higayon nga maestablisar na ang usa ka koneksyon, ang TCP mopataas sa congestion window (ang gidaghanon sa impormasyon nga mapasa niini sa maong koneksyon nga magkaparehas). Kung nawala ang usa ka pakete sa datos, nan ang mga klasiko nga pagpatuman sa TCP protocol (sama sa TCP New Reno) makunhuran ang bukas nga "window" sa katunga. Ang pagtubo sa congestion window, ug ang katulin sa pagbawi niini gikan sa pagkawala pag-usab nagdepende sa paglangan (RTT) sa server. Kung kini nga koneksyon moadto lamang sa CDN server, kini nga pagkaayo mas paspas. Sa parehas nga oras, ang pagkawala sa packet usa ka sukaranan nga panghitabo, labi na alang sa mga wireless network.

Ang bandwidth sa internet mahimong makunhuran, labi na sa mga oras sa peak, tungod sa trapiko gikan sa mga tiggamit, nga mahimong mosangput sa paghuot sa trapiko. Bisan pa, wala’y paagi sa Internet nga hatagan ug prayoridad ang pipila nga mga hangyo kaysa sa uban. Pananglitan, hatagan og prayoridad ang gagmay ug latency-sensitive nga mga hangyo kay sa "bug-at" nga mga stream sa datos nga nagkarga sa network. Bisan pa, sa among kaso, ang pagbaton sa among kaugalingon nga backbone network nagtugot kanamo sa pagbuhat niini sa bahin sa agianan sa hangyo - taliwala sa CDN ug sa panganod, ug mahimo namon nga hingpit nga ma-configure kini. Mahimo nimong masiguro nga ang gagmay ug latency-sensitive nga mga pakete ang gihatagan og prayoridad, ug ang dagkong mga agos sa datos moadto sa ulahi. Ang mas duol sa CDN sa kliyente, mas dako ang kahusayan.

Ang mga protocol sa lebel sa aplikasyon (OSI Level 7) adunay epekto usab sa latency. Ang mga bag-ong protocol sama sa HTTP/2 nag-optimize sa paghimo sa parallel nga mga hangyo. Bisan pa, kami adunay mga kliyente sa Netflix nga adunay mga daan nga aparato nga wala nagsuporta sa bag-ong mga protocol. Dili tanan nga mga kliyente mahimong ma-update o maayo nga ma-configure. Sa samang higayon, tali sa CDN proxy ug sa panganod adunay bug-os nga kontrol ug ang abilidad sa paggamit sa bag-o, labing maayo nga mga protocol ug mga setting. Ang dili epektibo nga bahin sa daan nga mga protocol maglihok lamang tali sa kliyente ug sa CDN server. Dugang pa, makahimo kami og multiplex nga mga hangyo sa usa ka natukod na nga koneksyon tali sa CDN ug sa panganod, pagpaayo sa paggamit sa koneksyon sa lebel sa TCP:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Atong sukdon

Bisan pa sa kamatuoran nga ang teorya nagsaad og mga pag-uswag, dili dayon kami magdali sa paglansad sa sistema sa produksiyon. Hinuon, kinahanglan una natong pamatud-an nga ang ideya molihok sa praktis. Aron mahimo kini kinahanglan nimo nga tubagon ang daghang mga pangutana:

  • Dali: mas paspas ba ang proxy?
  • Kasaligan: Kanunay ba kini mabungkag?
  • Komplikado: unsaon pag-integrate sa mga aplikasyon?
  • gasto sa: Pila ang gasto sa pag-deploy og dugang nga imprastraktura?

Atong tagdon sa detalye ang atong pamaagi sa pagtimbang-timbang sa unang punto. Ang uban giatiman sa parehas nga paagi.

Aron analisahon ang katulin sa mga hangyo, gusto namon nga makakuha mga datos alang sa tanan nga mga tiggamit, nga wala’y paggasto og daghang oras sa pag-uswag ug wala’y paglapas sa produksiyon. Adunay daghang mga pamaagi alang niini:

  1. RUM, o passive request nga pagsukod. Gisukod namo ang oras sa pagpatuman sa kasamtangang mga hangyo gikan sa mga tiggamit ug gisiguro ang tibuok nga sakop sa user. Ang disbentaha mao nga ang signal dili kaayo lig-on tungod sa daghang mga hinungdan, pananglitan, tungod sa lainlaing mga gidak-on sa hangyo, oras sa pagproseso sa server ug kliyente. Dugang pa, dili nimo masulayan ang usa ka bag-ong configuration nga walay epekto sa produksyon.
  2. Mga pagsulay sa laboratoryo. Espesyal nga mga server ug imprastraktura nga nagsundog sa mga kliyente. Uban sa ilang tabang atong gihimo ang gikinahanglan nga mga pagsulay. Niining paagiha makuha namon ang hingpit nga kontrol sa mga resulta sa pagsukod ug usa ka tin-aw nga signal. Apan walay kompleto nga coverage sa mga device ug mga lokasyon sa user (ilabi na sa tibuok kalibutan nga serbisyo ug suporta alang sa liboan nga mga modelo sa device).

Sa unsang paagi nimo makombinar ang mga bentaha sa duha ka paagi?

Ang among team nakakaplag ug solusyon. Nagsulat kami usa ka gamay nga piraso sa code - usa ka sample - nga among gitukod sa among aplikasyon. Gitugotan kami sa mga pagsusi sa paghimo sa hingpit nga kontrolado nga mga pagsulay sa network gikan sa among mga aparato. Kini molihok sama niini:

  1. Wala madugay pagkahuman sa pagkarga sa aplikasyon ug pagkompleto sa inisyal nga kalihokan, among gipadagan ang among mga pagsusi.
  2. Naghangyo ang kliyente sa server ug nakadawat usa ka "resipe" alang sa pagsulay. Ang resipe usa ka lista sa mga URL diin kinahanglan buhaton ang (mga) hangyo sa HTTP. Dugang pa, ang resipe nag-configure sa mga parameter sa hangyo: mga paglangan tali sa mga hangyo, gidaghanon sa gihangyo nga datos, HTTP(s) mga ulohan, ug uban pa. Sa parehas nga oras, mahimo naton sulayan ang daghang lainlaing mga resipe nga managsama - kung nangayo usa ka pag-configure, random namon nga gitino kung unsang resipe ang i-isyu.
  3. Gipili ang oras sa paglansad sa pagsusi aron dili magkasumpaki sa aktibo nga paggamit sa mga kapanguhaan sa network sa kliyente. Sa panguna, ang oras gipili kung ang kliyente dili aktibo.
  4. Human madawat ang resipe, ang kliyente mohimo og mga hangyo sa matag usa sa mga URL, nga managsama. Ang hangyo sa matag usa sa mga adres mahimong gisubli - ang gitawag nga. "pulso". Sa una nga pulso, among gisukod kung unsa kadugay ang pag-establisar og koneksyon ug pag-download sa datos. Sa ikaduhang pulso, among gisukod ang oras nga gikinahanglan aron makarga ang datos sa natukod na nga koneksyon. Sa wala pa ang ikatulo, mahimo namon nga magbutang usa ka paglangan ug sukdon ang katulin sa pag-establisar og usa ka koneksyon, ug uban pa.

    Atol sa pagsulay, gisukod namon ang tanan nga mga parameter nga makuha sa aparato:

    • oras sa paghangyo sa DNS;
    • oras sa pag-setup sa koneksyon sa TCP;
    • oras sa pag-setup sa koneksyon sa TLS;
    • panahon sa pagdawat sa unang byte sa data;
    • kinatibuk-ang oras sa pagkarga;
    • kodigo sa resulta sa kahimtang.
  5. Pagkahuman sa tanan nga mga pulso, ang sample nagkarga sa tanan nga mga pagsukod alang sa pagtuki.

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Ang mga yawe nga punto mao ang gamay nga pagsalig sa lohika sa kliyente, pagproseso sa datos sa server ug ang pagsukod sa parehas nga mga hangyo. Sa ingon, mahimo namon nga ilain ug masulayan ang impluwensya sa lainlaing mga hinungdan nga nakaapekto sa pasundayag sa pangutana, lainlain kini sulod sa usa ka resipe, ug makakuha mga resulta gikan sa tinuod nga mga kliyente.

Kini nga imprastraktura napamatud-an nga mapuslanon alang sa labaw pa sa pag-usisa sa performance sa pangutana. Sa pagkakaron kami adunay 14 ka aktibo nga mga resipe, labaw pa sa 6000 nga mga sample kada segundo, nga nakadawat og datos gikan sa tanang suok sa yuta ug bug-os nga coverage sa device. Kung gipalit sa Netflix ang parehas nga serbisyo gikan sa usa ka ikatulo nga partido, mogasto kini milyon-milyon nga dolyar sa usa ka tuig, nga adunay labi ka grabe nga sakup.

Teorya sa pagsulay sa praktis: prototype

Uban sa ingon nga sistema, nakahimo kami sa pagtimbang-timbang sa pagka-epektibo sa mga proxy sa CDN kung gihangyo ang latency. Karon kinahanglan nimo:

  • paghimo og proxy prototype;
  • ibutang ang prototype sa usa ka CDN;
  • pagtino kung unsaon pagdirekta ang mga kliyente sa usa ka proxy sa usa ka piho nga server sa CDN;
  • Itandi ang performance sa mga hangyo sa AWS nga walay proxy.

Ang tahas mao ang pagtimbang-timbang sa pagka-epektibo sa gisugyot nga solusyon sa labing madali nga panahon. Gipili namo ang Go aron ipatuman ang prototype tungod sa pagkaanaa sa maayong mga librarya sa networking. Sa matag server sa CDN, among gi-install ang prototype nga proxy isip usa ka static binary aron mamenosan ang mga dependency ug pasimplehon ang integrasyon. Sa inisyal nga implementasyon, migamit kami ug standard nga mga component kutob sa mahimo ug ginagmay nga mga kausaban para sa HTTP/2 connection pooling ug paghangyo og multiplexing.

Aron mabalanse tali sa mga rehiyon sa AWS, migamit kami og geographic DNS database, ang sama nga gigamit sa pagbalanse sa mga kliyente. Para makapili ug CDN server para sa kliyente, gigamit namo ang TCP Anycast para sa mga server sa Internet Exchange (IX). Niini nga opsyon, migamit kami og usa ka IP address para sa tanang CDN server, ug ang kliyente idirekta ngadto sa CDN server nga adunay pinakagamay nga IP hops. Sa mga server sa CDN nga gi-install sa mga Internet provider (ISP), wala kami kontrol sa router aron ma-configure ang TCP Anycast, mao nga gigamit namon parehas nga lohika, nga nagtultol sa mga kustomer ngadto sa mga Internet providers alang sa video streaming.

Busa, kami adunay tulo ka matang sa mga agianan sa paghangyo: ngadto sa panganod pinaagi sa bukas nga Internet, pinaagi sa CDN server sa IX, o pinaagi sa CDN server nga nahimutang sa Internet provider. Ang among katuyoan mao ang pagsabut kung unsang paagiha ang mas maayo, ug unsa ang kaayohan sa usa ka proxy, kung itandi kung giunsa ang mga hangyo gipadala sa produksiyon. Aron mahimo kini, gigamit namon ang usa ka sampling system sama sa mosunod:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Ang matag usa sa mga agianan mahimong lahi nga target, ug among gitan-aw ang oras nga among nakuha. Alang sa pagtuki, gihiusa namo ang mga resulta sa proxy ngadto sa usa ka grupo (pilia ang pinakamaayong panahon tali sa IX ug ISP nga mga proxy), ug itandi kini sa panahon sa mga hangyo ngadto sa panganod nga walay proxy:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Sama sa imong nakita, ang mga resulta nagkasagol - sa kadaghanan nga mga kaso ang proxy naghatag usa ka maayo nga pagpadali, apan adunay usab igo nga gidaghanon sa mga kliyente nga ang kahimtang mograbe pag-ayo.

Ingon usa ka sangputanan, nakahimo kami daghang hinungdanon nga mga butang:

  1. Among gi-assess ang gipaabot nga performance sa mga hangyo gikan sa mga kliyente ngadto sa cloud pinaagi sa CDN proxy.
  2. Nakadawat kami og datos gikan sa tinuod nga mga kliyente, gikan sa tanang matang sa mga himan.
  3. Nakaamgo kami nga ang teorya dili 100% nga gikumpirma ug ang una nga tanyag nga adunay usa ka proxy sa CDN dili molihok alang kanamo.
  4. Wala kami nagpameligro - wala namo giusab ang mga configuration sa produksyon alang sa mga kliyente.
  5. Walay naguba.

Prototype 2.0

Busa, balik sa drawing board ug balika ang proseso pag-usab.

Ang ideya mao nga imbis nga mogamit usa ka 100% nga proxy, mahibal-an namon ang labing paspas nga agianan alang sa matag kliyente, ug magpadala kami mga hangyo didto - nga mao, buhaton namon ang gitawag nga pagmaneho sa kliyente.

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Unsaon pag-implementar niini? Dili kami makagamit sa lohika sa bahin sa server, tungod kay ... Ang tumong mao ang pagkonektar niini nga server. Kinahanglan adunay usa ka paagi aron mahimo kini sa kliyente. Ug labing maayo, buhata kini sa usa ka minimum nga kantidad sa komplikado nga lohika, aron dili masulbad ang isyu sa panagsama sa daghang mga platform sa kliyente.

Ang tubag mao ang paggamit sa DNS. Sa among kaso, kami adunay kaugalingon nga imprastraktura sa DNS, ug mahimo kaming magbutang usa ka domain zone diin ang among mga server mahimong awtoritarian. Kini molihok sama niini:

  1. Naghangyo ang kliyente sa DNS server gamit ang host, pananglitan api.netflix.xom.
  2. Ang hangyo moabut sa among DNS server
  3. Nahibal-an sa DNS server kung unsang agianan ang labing paspas alang niini nga kliyente ug nag-isyu sa katugbang nga IP address.

Ang solusyon adunay dugang nga pagkakomplikado: ang awtoritarian DNS providers dili makakita sa IP address sa kliyente ug mabasa lamang ang IP address sa recursive solver nga gigamit sa kliyente.

Ingon usa ka sangputanan, ang among awtoritaryan nga solver kinahanglan maghimo usa ka desisyon dili para sa usa ka indibidwal nga kliyente, apan alang sa usa ka grupo sa mga kliyente nga gibase sa recursive solver.

Aron masulbad, gigamit namon ang parehas nga mga sampol, gihiusa ang mga resulta sa pagsukod gikan sa mga kliyente alang sa matag usa sa mga recursive nga solusyon ug pagdesisyon kung asa ipadala kini nga grupo kanila - usa ka proxy pinaagi sa IX gamit ang TCP Anycast, pinaagi sa usa ka proxy sa ISP, o direkta sa panganod.

Atong makuha ang mosunod nga sistema:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Ang resulta nga DNS steering model nagtugot kanimo sa pagdirekta sa mga kliyente base sa kasaysayan nga mga obserbasyon sa katulin sa mga koneksyon gikan sa mga kliyente ngadto sa panganod.

Sa makausa pa, ang pangutana kung unsa ka epektibo kini nga pamaagi? Sa pagtubag, atong gamiton pag-usab ang atong probe system. Busa, among gi-configure ang presenter configuration, diin ang usa sa mga target nagsunod sa direksyon gikan sa DNS steering, ang usa diretso sa cloud (kasamtangan nga produksyon).

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Ingon usa ka sangputanan, gitandi namon ang mga resulta ug makakuha usa ka pagtimbang-timbang sa pagkaepektibo:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Ingon nga resulta, nakakat-on kami og pipila ka importante nga mga butang:

  1. Among gi-assess ang gipaabot nga performance sa mga hangyo gikan sa mga kliyente ngadto sa cloud gamit ang DNS Steering.
  2. Nakadawat kami og datos gikan sa tinuod nga mga kliyente, gikan sa tanang matang sa mga himan.
  3. Ang pagkaepektibo sa gisugyot nga ideya napamatud-an.
  4. Wala kami nagpameligro - wala namo giusab ang mga configuration sa produksyon alang sa mga kliyente.
  5. Walay naguba.

Karon bahin sa lisud nga bahin - gilunsad namon kini sa produksiyon

Ang dali nga bahin nahuman na - adunay usa ka nagtrabaho nga prototype. Karon ang lisud nga bahin mao ang paglansad sa usa ka solusyon alang sa tanan nga trapiko sa Netflix, nga nag-deploy sa 150 milyon nga mga tiggamit, liboan nga mga aparato, gatusan nga mga microservice, ug usa ka kanunay nga nagbag-o nga produkto ug imprastraktura. Ang mga server sa Netflix makadawat og milyon-milyon nga mga hangyo matag segundo, ug dali nga mabungkag ang serbisyo sa walay pagtagad nga aksyon. Sa parehas nga oras, gusto namon nga dinamikong ruta ang trapiko pinaagi sa libu-libo nga mga server sa CDN sa Internet, diin adunay usa ka butang nga nagbag-o ug naguba kanunay ug sa labing dili angay nga higayon.

Ug uban niining tanan, ang team adunay 3 ka mga inhenyero nga responsable sa pagpalambo, pagdeploy ug hingpit nga suporta sa sistema.

Busa, magpadayon kita sa paghisgot mahitungod sa malinawon ug himsog nga pagkatulog.

Giunsa pagpadayon ang pag-uswag ug dili igugol ang tanan nimong oras sa suporta? Ang among pamaagi gibase sa 3 nga mga prinsipyo:

  1. Gipamenos namo ang posibleng sukod sa mga pagkaguba (blast radius).
  2. Nag-andam kami alang sa mga sorpresa - gipaabut namon nga adunay maguba, bisan pa sa pagsulay ug personal nga kasinatian.
  3. Nindot nga pagkadaot - kung ang usa ka butang dili molihok sa husto, kinahanglan kini nga awtomatiko, bisan kung dili sa labing episyente nga paagi.

Nahibal-an nga sa among kaso, sa kini nga pamaagi sa problema, makit-an namon ang usa ka yano ug epektibo nga solusyon ug labi nga gipasimple ang suporta sa sistema. Among naamgohan nga makadugang mi og gamay nga piraso sa code ngadto sa kliyente ug mamonitor ang mga sayop sa hangyo sa network tungod sa mga problema sa koneksyon. Sa kaso sa mga kasaypanan sa network, naghimo kami usa ka fallback direkta sa panganod. Kini nga solusyon wala magkinahanglan og mahinungdanong paningkamot alang sa mga grupo sa kliyente, apan makapamenos pag-ayo sa risgo sa wala damha nga pagkaguba ug mga surpresa alang kanamo.

Siyempre, bisan pa sa pagkahulog, bisan pa niana nagsunod kami sa usa ka tin-aw nga disiplina sa panahon sa kalamboan:

  1. Sample nga pagsulay.
  2. A/B testing o Canaries.
  3. Progresibong paglusad.

Uban sa mga sample, ang pamaagi gihulagway - ang mga pagbag-o unang gisulayan gamit ang usa ka customized nga resipe.

Alang sa pagsulay sa canary, kinahanglan namon nga makakuha og parehas nga mga parisan sa mga server diin mahimo namon itandi kung giunsa ang paglihok sa sistema sa wala pa ug pagkahuman sa mga pagbag-o. Aron mahimo kini, gikan sa among daghang mga site sa CDN, nagpili kami mga parisan sa mga server nga nakadawat parehas nga trapiko:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Dayon among i-install ang pagtukod uban ang mga kausaban sa Canary server. Aron matimbangtimbang ang mga resulta, nagpadagan kami usa ka sistema nga nagtandi sa gibana-bana nga 100-150 nga mga sukatan sa usa ka sample sa mga server sa Pagkontrol:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Kung malampuson ang pagsulay sa Canary, dayon gibuhian namon kini sa hinay-hinay, sa mga balud. Wala kami mag-update sa mga server sa matag site sa samang higayon - ang pagkawala sa tibuok site tungod sa mga problema adunay mas dakong epekto sa serbisyo alang sa mga tiggamit kay sa pagkawala sa samang gidaghanon sa mga server sa lain-laing mga lokasyon.

Sa kinatibuk-an, ang pagkaepektibo ug pagkaluwas sa kini nga pamaagi nagdepende sa gidaghanon ug kalidad sa mga nakolekta nga sukatan. Alang sa among sistema sa pagpadali sa pangutana, among gikolekta ang mga sukatan gikan sa tanan nga posible nga mga sangkap:

  • gikan sa mga kliyente - gidaghanon sa mga sesyon ug mga hangyo, fallback rates;
  • proxy - mga estadistika sa gidaghanon ug oras sa mga hangyo;
  • DNS - numero ug resulta sa mga hangyo;
  • cloud edge - numero ug oras sa pagproseso sa mga hangyo sa cloud.

Kining tanan gikolekta ngadto sa usa ka pipeline, ug, depende sa mga panginahanglan, nagdesisyon kami kung unsang mga sukatan ang ipadala sa real-time nga analytics, ug asa sa Elasticsearch o Big Data para sa mas detalyado nga diagnostics.

Among gimonitor

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Sa among kaso, naghimo kami mga pagbag-o sa kritikal nga agianan sa mga hangyo tali sa kliyente ug server. Sa parehas nga oras, ang gidaghanon sa lainlaing mga sangkap sa kliyente, sa server, ug sa dalan pinaagi sa Internet dako kaayo. Ang mga pagbag-o sa kliyente ug server kanunay nga mahitabo - sa panahon sa pagtrabaho sa daghang mga team ug natural nga pagbag-o sa ekosistema. Anaa kami sa tunga-tunga - kung mag-diagnose sa mga problema, adunay usa ka maayo nga higayon nga kami maapil. Busa, kinahanglan natong tin-aw nga masabtan kon unsaon paghubit, pagkolekta ug pag-analisar sa mga sukatan aron dali nga mahimulag ang mga problema.

Sa tinuud, hingpit nga pag-access sa tanan nga mga tipo sa sukatan ug mga pagsala sa tinuud nga oras. Apan adunay daghang mga sukatan, mao nga mitungha ang pangutana sa gasto. Sa among kaso, among gilain ang mga sukatan ug mga himan sa pag-uswag sama sa mosunod:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Aron mahibal-an ug masulayan ang mga problema gigamit namon ang among kaugalingon nga open-source nga real-time nga sistema Atlas ΠΈ Lumen - alang sa visualization. Gitipigan niini ang mga aggregated metrics sa memorya, kasaligan ug gihiusa sa sistema sa pag-alerto. Para sa localization ug diagnostics, aduna kami access sa mga log gikan sa Elasticsearch ug Kibana. Alang sa pag-analisa ug pagmodelo sa istatistika, gigamit namon ang dagkong datos ug visualization sa Tableau.

Morag lisod kaayo kining paagiha sa pagtrabaho. Bisan pa, pinaagi sa pag-organisar sa mga sukatan ug mga himan sa hierarchically, mahimo naton dali nga analisa ang usa ka problema, mahibal-an ang klase sa problema, ug dayon mag-drill sa mga detalyado nga sukatan. Sa kinatibuk-an, mogahin kami og mga 1-2 ka minuto aron mahibal-an ang gigikanan sa pagkaguba. Pagkahuman niini, nagtrabaho kami kauban ang usa ka piho nga grupo sa mga diagnostic - gikan sa napulo ka minuto hangtod sa daghang oras.

Bisan kung ang pagdayagnos gihimo dayon, dili namon gusto nga kini mahitabo kanunay. Sa tinuud, makadawat ra kami usa ka kritikal nga alerto kung adunay hinungdanon nga epekto sa serbisyo. Alang sa among sistema sa pagpadali sa pangutana, kami adunay 2 ra nga alerto nga magpahibalo:

  • Porsiyento sa Fallback sa Kliyente - pagsusi sa pamatasan sa kustomer;
  • porsyento nga mga sayup sa Probe - data sa kalig-on sa mga sangkap sa network.

Kini nga mga kritikal nga alerto nagmonitor kung ang sistema nagtrabaho alang sa kadaghanan sa mga tiggamit. Gitan-aw namon kung pila ang mga kliyente nga gigamit ang fallback kung dili nila makuha ang pagpadali sa hangyo. Nag-average kami nga wala’y 1 nga kritikal nga alerto matag semana, bisan kung adunay usa ka tonelada nga pagbag-o nga nahitabo sa sistema. Nganong igo na kini alang kanato?

  1. Adunay usa ka kliyente nga fallback kung ang among proxy dili molihok.
  2. Adunay usa ka awtomatik nga sistema sa pagmaneho nga motubag sa mga problema.

Dugang nga mga detalye bahin sa ulahi. Ang among sistema sa pagsulay, ug ang sistema alang sa awtomatik nga pagtino sa labing maayo nga agianan alang sa mga hangyo gikan sa kliyente hangtod sa panganod, nagtugot kanamo nga awtomatiko nga makasagubang sa pipila ka mga problema.

Balikan nato ang atong sample configuration ug 3 path category. Gawas pa sa oras sa pagkarga, mahimo naton tan-awon ang kamatuoran sa paghatud mismo. Kung dili posible nga ma-load ang datos, nan pinaagi sa pagtan-aw sa mga resulta sa lainlaing mga agianan mahimo naton mahibal-an kung diin ug kung unsa ang nabuak, ug kung mahimo ba naton kini awtomatiko nga ayohon pinaagi sa pagbag-o sa agianan sa hangyo.

mga panig-ingnan:

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Kini nga proseso mahimong awtomatiko. Iapil kini sa sistema sa manibela. Ug itudlo kini sa pagtubag sa mga problema sa pasundayag ug kasaligan. Kung adunay magsugod sa pagkaguba, reaksyon kung adunay mas maayo nga kapilian. Sa samang higayon, ang usa ka diha-diha nga reaksyon dili kritikal, salamat sa fallback sa mga kliyente.

Busa, ang mga prinsipyo sa suporta sa sistema mahimong maporma sama sa mosunod:

  • pagkunhod sa gidak-on sa pagkaguba;
  • pagkolekta metrics;
  • Awtomatiko namong giayo ang mga pagkaguba kon mahimo namo;
  • kon kini dili mahimo, kami nagpahibalo kanimo;
  • Nagtrabaho kami sa mga dashboard ug triage toolset alang sa dali nga pagtubag.

Mga Leksyon nga Nakat-onan

Dili kini magkinahanglan daghang oras sa pagsulat sa usa ka prototype. Sa among kaso, andam na kini pagkahuman sa 4 ka bulan. Uban niini nakadawat kami bag-ong mga sukatan, ug 10 ka bulan pagkahuman sa pagsugod sa pag-uswag nadawat namon ang una nga trapiko sa produksiyon. Unya ang kapoy ug lisud kaayo nga trabaho nagsugod: anam-anam nga paghimo ug pag-scale sa sistema, pagbalhin sa panguna nga trapiko ug pagkat-on gikan sa mga sayup. Bisan pa, kini nga epektibo nga proseso dili linear - bisan pa sa tanan nga mga paningkamot, ang tanan dili matagna. Mas epektibo ang dali nga pag-uli ug pagtubag sa bag-ong datos.

Pagpadali sa mga hangyo sa internet ug pagkatulog nga malinawon

Base sa among kasinatian, makarekomendar mi sa mosunod:

  1. Ayaw pagsalig sa imong intuition.

    Ang among intuition napakyas kanamo kanunay, bisan pa sa daghang kasinatian sa among mga miyembro sa team. Pananglitan, sayop ang among gitagna sa gipaabot nga pagpadali gikan sa paggamit sa usa ka CDN proxy, o ang kinaiya sa TCP Anycast.

  2. Pagkuhag datos gikan sa produksiyon.

    Importante nga makakuha og access sa labing menos gamay nga kantidad sa datos sa produksiyon sa labing madali nga panahon. Hapit imposible nga makuha ang gidaghanon sa talagsaon nga mga kaso, mga pag-configure, ug mga setting sa mga kondisyon sa laboratoryo. Ang dali nga pag-access sa mga resulta magtugot kanimo nga dali nga mahibal-an ang bahin sa mga potensyal nga problema ug tagdon kini sa arkitektura sa sistema.

  3. Ayaw pagsunod sa tambag ug resulta sa ubang mga tawo - pagkolekta sa imong kaugalingon nga datos.

    Sunda ang mga prinsipyo sa pagkolekta ug pag-analisar sa datos, apan ayaw dawata ang mga resulta ug mga pahayag sa ubang mga tawo. Ikaw ra ang nahibal-an kung unsa ang molihok alang sa imong mga tiggamit. Ang imong mga sistema ug imong mga kustomer mahimong lahi kaayo sa ubang mga kompanya. Maayo na lang, ang mga himan sa pagtuki anaa na karon ug dali gamiton. Ang mga resulta nga imong makuha mahimong dili kung unsa ang giangkon sa Netflix, Facebook, Akamai ug uban pang mga kompanya. Sa among kaso, ang pasundayag sa TLS, HTTP2 o estadistika sa mga hangyo sa DNS lahi sa mga sangputanan sa Facebook, Uber, Akamai - tungod kay kami adunay lainlaing mga aparato, kliyente ug agos sa datos.

  4. Ayaw pagsunod sa uso sa uso nga wala kinahanglana ug pagtimbang-timbang sa pagkaepektibo.

    Pagsugod sa yano. Mas maayo nga maghimo usa ka yano nga sistema sa pagtrabaho sa mubo nga panahon kaysa mogugol og daghang oras sa paghimo og mga sangkap nga dili nimo kinahanglan. Pagsulbad sa mga buluhaton ug problema nga hinungdanon base sa imong mga sukod ug resulta.

  5. Pangandam alang sa bag-ong mga aplikasyon.

    Sama nga lisud ang pagtag-an sa tanan nga mga problema, lisud ang pagtagna sa mga benepisyo ug aplikasyon nga abante. Pagkuha usa ka cue gikan sa mga startup - ang ilang abilidad sa pagpahiangay sa mga kondisyon sa kustomer. Sa imong kaso, mahimo nimong madiskobrehan ang bag-ong mga problema ug ang ilang mga solusyon. Sa among proyekto, nagtakda kami usa ka katuyoan nga makunhuran ang latency sa paghangyo. Bisan pa, sa panahon sa pag-analisar ug mga diskusyon, nahibal-an namon nga magamit usab namon ang mga proxy server:

    • aron mabalanse ang trapiko sa mga rehiyon sa AWS ug makunhuran ang gasto;
    • sa modelo sa CDN kalig-on;
    • aron ma-configure ang DNS;
    • aron ma-configure ang TLS/TCP.

konklusyon

Sa taho, akong gihulagway kung giunsa pagsulbad sa Netflix ang problema sa pagpadali sa mga hangyo sa Internet tali sa mga kliyente ug sa panganod. Giunsa namo pagkolekta ang datos gamit ang sampling system sa mga kliyente, ug gamiton ang nakolektang historical data aron maruta ang mga hangyo sa produksiyon gikan sa mga kliyente pinaagi sa pinakapaspas nga dalan sa Internet. Giunsa namo paggamit ang mga prinsipyo sa network protocol, among CDN infrastructure, backbone network, ug DNS servers aron makab-ot kini nga buluhaton.

Bisan pa, ang among solusyon usa lamang ka pananglitan kung giunsa namon gipatuman sa Netflix ang ingon nga sistema. Unsa ang nagtrabaho alang kanamo. Ang gipadapat nga bahin sa akong report alang kanimo mao ang mga prinsipyo sa kalamboan ug suporta nga among gisunod ug nakab-ot ang maayong mga resulta.

Ang among solusyon sa problema mahimong dili angay kanimo. Bisan pa, ang teorya ug mga prinsipyo sa disenyo nagpabilin, bisan kung wala ka sa imong kaugalingon nga imprastraktura sa CDN, o kung kini lahi kaayo sa amon.

Ang kamahinungdanon sa katulin sa mga hangyo sa negosyo nagpabilin nga hinungdanon. Ug bisan alang sa usa ka yano nga serbisyo kinahanglan nimo nga mopili: tali sa mga cloud provider, lokasyon sa server, CDN ug DNS providers. Ang imong pagpili makaimpluwensya sa pagkaepektibo sa mga pangutana sa Internet alang sa imong mga kustomer. Ug importante nga imong sukdon ug sabton kini nga impluwensya.

Pagsugod sa yano nga mga solusyon, pag-amping kung giunsa nimo pagbag-o ang produkto. Pagkat-on samtang nagpadayon ka ug pauswagon ang sistema base sa datos gikan sa imong mga kustomer, imong imprastraktura, ug imong negosyo. Hunahunaa ang posibilidad sa wala damha nga pagkaguba sa panahon sa proseso sa pagdesinyo. Ug unya mahimo nimong mapadali ang imong proseso sa pag-uswag, mapaayo ang kahusayan sa solusyon, likayan ang dili kinahanglan nga kabug-at sa suporta ug matulog nga malinawon.

Karong tuiga ang komperensya ipahigayon gikan sa Hulyo 6 hangtod 10 sa online nga pormat. Mahimo kang mangutana sa usa sa mga amahan sa DevOps, si John Willis mismo!

Source: www.habr.com

Idugang sa usa ka comment