O nisi taimi e sili atu e itiiti. A faʻaitiitia le uta e mafua ai le faʻateleina o le latency

E pei o tele pou, o loʻo i ai se faʻafitauli i le tufatufaina atu o auaunaga, taʻu le auaunaga lea o Alevine. O le taimi lea ou te leʻi mauaina e aʻu lava ia le faʻafitauli, na logoina aʻu e tama mai le itu a le kalani.

I se tasi aso na ou ala ai i se imeli le fiafia ona o le umi o le tolopo ma Alvin, lea na matou fuafua e faʻalauiloa i se taimi lata mai. Aemaise lava, o le tagata o tausia na oo i le 99 pasene pasene le tumau i le itulagi o le 50 ms, e sili atu i luga atu o le matou paketi o le taofiofi. O se mea e ofo ai a o ou faʻataʻitaʻiina le tautua, aemaise lava ile latency, o se faʻasea masani.

Ae ou te leʻi tuʻuina Alvin i suʻega, sa ou tamoe i le tele o faʻataʻitaʻiga ma 40k fesili i le sekone (QPS), o loʻo faʻaalia uma le taofiofi e itiiti ifo i le 10ms. Na ou sauni e taʻu atu ou te le ioe i a latou taunuuga. Ae o le toe tilotilo i le tusi, na ou matauina ai se mea fou: Ou te leʻi faʻataʻitaʻiina tonu tulaga na latou taʻua, o latou QPS e sili atu le maualalo nai lo aʻu. Na ou suʻeina i le 40k QPS, ae naʻo le 1k. Na ou tamoe i se isi suʻega, o le taimi lea ma se QPS maualalo, naʻo le faʻamalieina o latou.

Talu ai o lo'o ou faia le blog blog e uiga i lenei mea, masalo ua uma ona e iloa e sa'o a latou numera. Na ou faʻataʻitaʻiina pea laʻu tagata faʻatau, faʻatasi ai ma le iʻuga tutusa: o le maualalo o le numera o talosaga e le gata ina faʻateleina ai le taofiofia, ae faʻateleina ai le numera o talosaga ma le latency e sili atu i le 10 ms. I se isi faaupuga, afai i le 40k QPS e tusa ma le 50 talosaga i le sekone e sili atu i le 50 ms, ona i ai lea i le 1k QPS e 100 talosaga i luga aʻe o le 50 ms i sekone taʻitasi. Fa'alavelave!

O nisi taimi e sili atu e itiiti. A faʻaitiitia le uta e mafua ai le faʻateleina o le latency

Fa'aiti i lalo ole su'esu'ega

Pe a feagai ma se faʻafitauli latency i totonu o se faʻasalalauga faʻasalalau ma le tele o vaega, o le laasaga muamua o le fatuina lea o se lisi puupuu o masalosaloga. Sei o tatou eli loloto teisi i le fausaga a Alevine:

O nisi taimi e sili atu e itiiti. A faʻaitiitia le uta e mafua ai le faʻateleina o le latency

O se amataga lelei o se lisi o suiga I/O ua mae'a (valaau feso'ota'iga/su'e tisiki, ma isi). Sei o tatou taumafai e saili po o fea o i ai le tuai. E ese mai i le I/O manino ma le kalani, ua faia e Alvin se laasaga faaopoopo: na te mauaina le faleoloa o faamatalaga. Ae ui i lea, o lenei teuina o loʻo faʻaogaina i le fuifui tutusa e pei o Alvin, o le mea lea e tatau ona itiiti ifo le faʻaogaina o loʻo i ai nai lo le kalani. O lea la, o le lisi o tagata masalomia:

  1. Fe'au feso'ota'iga mai le kalani ia Alvin.
  2. Feau feso'ota'iga mai Alvin i le faleoloa fa'amaumauga.
  3. Su'e i luga o le tisiki i le faleoloa fa'amaumauga.
  4. Feso'ota'iga telefoni mai le faleteuoloa fa'amaumauga ia Alvin.
  5. Fe'au feso'ota'iga mai Alvin i se tagata o tausia.

Sei o tatou taumafai e kolosi nisi o manatu.

O le teuina o faʻamaumauga e leai se mea e fai i ai

O le mea muamua na ou faia o le faaliliuina lea o Alvin i se ping-ping server e le faʻaogaina talosaga. A maua se talosaga, e toe faafoi mai se tali gaogao. Afai e faʻaititia le latency, o se pusa i le Alvin poʻo faʻamaumauga fale teu oloa faʻatinoga e leai se mea e le o faʻalogoina. I le fa'ata'ita'iga muamua tatou te maua le kalafi lea:

O nisi taimi e sili atu e itiiti. A faʻaitiitia le uta e mafua ai le faʻateleina o le latency

E pei ona e vaʻaia, e leai se faʻaleleia pe a faʻaaogaina le ping-ping server. O lona uiga o le faleteuoloa faʻamatalaga e le faʻateleina le faʻagata, ma o le lisi o masalosalo e tipi i le afa:

  1. Fe'au feso'ota'iga mai le kalani ia Alvin.
  2. Fe'au feso'ota'iga mai Alvin i se tagata o tausia.

Matagofie! Ua vave ona fa'aitiitia le lisi. Sa ou manatu ua toetoe lava a ou iloaina le mafuaaga.

gRPC

O le taimi lenei e faʻafeiloaʻi ai oe i se tagata taalo fou: gRPC. Ole faletusi lea e tatala mai ile Google mo feso'ota'iga fa'agasolo RPC... E ui lava gRPC lelei optimized ma faʻaaoga lautele, o loʻu taimi muamua lea na faʻaaogaina i luga o se faiga o lenei tele ma sa ou faʻamoemoe o laʻu faʻatinoga o le a le lelei - e fai atu le itiiti ifo.

avanoa gRPC i le faaputuga na tulaʻi mai ai se fesili fou: atonu o laʻu faʻatinoga poʻo aʻu lava gRPC fa'atupu fa'afitauli le tumau? Fa'aopoopoina se masalosalo fou i le lisi:

  1. E vili e le kalani le faletusi gRPC
  2. fale faitautusi gRPC faia se feso'ota'iga telefoni ile faletusi ile tagata o tausia gRPC luga o le server
  3. fale faitautusi gRPC fa'afeso'ota'i Alvin (leai se fa'agaioiga i le tulaga o le ping-pong server)

Ina ia tuʻuina atu ia te oe se manatu pe o le a le foliga o le code, o laʻu tagata faʻatau / Alvin faʻatinoga e le ese tele mai le kalani-server. fa'ata'ita'iga async.

Manatua: O le lisi o loʻo i luga e fai si faʻafaigofie ona gRPC e mafai ai ona fa'aogaina lau lava (fa'ata'ita'iga?) fa'ata'ita'iga filo, lea o lo'o feso'ota'i ai le fa'aputuga fa'atino. gRPC ma le fa'atinoina o tagata. Mo le faʻafaigofie, o le a matou pipii i lenei faʻataʻitaʻiga.

O le fa'avasegaina o le a fa'aleleia mea uma

I le kolosiina o faleoloa faʻamatalaga, sa ou manatu ua toeitiiti lava a ou maeʻa: "O lea ua faigofie! Sei o tatou faʻaoga le faʻamatalaga ma suʻe poʻo fea e tupu ai le tuai." I ili tele o fa'amatalaga sa'o, aua o PPU e matua televave ma e masani lava e le o le fagu. O le tele o fa'atuai e tupu pe a tatau ona taofi le fa'agaioiga e fai se isi mea. O le fa'amatalaga sa'o o le CPU e fai na'o lena: e fa'amaumau sa'o mea uma fa'aliliuga fa'amatalaga ma fa'amanino po'o fea e tutupu fa'atuai.

E fa au fa'amatalaga: fa'atasi ai ma le QPS maualuga (maualalo le latency) ma le ping-pong server ma le QPS maualalo (maualuga le latency), i le itu o le kalani ma le itu o le server. Ma na'o le tulaga, na ou ave foi se faʻataʻitaʻiga faʻamatalaga faʻapitoa. Pe a faʻatusatusa faʻamatalaga, e masani ona ou suʻeina se faʻaputuga telefoni faʻafefe. Mo se faʻataʻitaʻiga, i le itu leaga ma le maualuga o le taofiofia o loʻo i ai le tele o suiga faʻaoga (10 taimi pe sili atu). Ae i loʻu tulaga, o le numera o suiga faʻamatalaga sa toetoe lava tutusa. I lo'u fefe, e leai se mea taua iina.

Fa'aopoopo Debugging

Sa ou le fiafia. Ou te le iloa po o a isi mea faigaluega e mafai ona ou faʻaaogaina, ma o laʻu fuafuaga na sosoo ai o le toe faia lea o faʻataʻitaʻiga i suiga eseese nai lo le faʻamaonia manino o le faʻafitauli.

Ae faapefea pe afai

Mai lava i le amataga, sa ou popole e uiga i le 50ms latency patino. O se taimi tele lenei. Na ou filifili o le a ou tipi ese ni pusi mai le code seia mafai ona ou iloa tonu po o fea vaega na mafua ai lenei mea sese. Ona oʻo mai lea o se faʻataʻitaʻiga na aoga.

E pei ona masani ai, i le toe tepa i tua e foliga mai ua manino mea uma. Na ou tuʻuina le kalani i luga o le masini e tasi e pei o Alvin - ma auina atu se talosaga i localhost. Ma o le faʻateleina o le faʻagata ua leai!

O nisi taimi e sili atu e itiiti. A faʻaitiitia le uta e mafua ai le faʻateleina o le latency

Sa i ai se mea na faaletonu i le upega tafailagi.

A'oa'oina tomai fa'ainisinia feso'ota'iga

E tatau ona ou taʻutino: o loʻu malamalama i tekinolosi fesoʻotaʻiga e mataʻutia, aemaise lava pe a mafaufau i le mea moni ou te galulue ma i latou i aso uma. Ae o le fesoʻotaʻiga na sili ona masalomia, ma sa manaʻomia ona ou aʻoaʻoina pe faʻafefea ona faʻafefe.

O le mea e laki ai, e fiafia le Initaneti ia i latou e fia aʻoaʻo. O le tu'ufa'atasiga o le ping ma le tracert na foliga mai o se amataga lelei tele e fa'asalaina ai fa'afitauli tau femalagaiga.

Muamua, na ou tatalaina PSPing i le uafu TCP a Alvin. Sa ou fa'aogaina tulaga fa'aletonu - leai se mea fa'apitoa. O le sili atu ma le afe pings, e leai se tasi e sili atu i le 10 ms, sei vagana ai le muamua mo le mafanafana. E fa'afeagai lea ma le fa'atupula'ia o lo'o matauina i le latency o le 50 ms i le 99th percentile: o iina, mo talosaga uma e 100, sa tatau ona tatou va'ai pe a ma le tasi le talosaga ma le latency o le 50 ms.

Ona ou taumafai lea faʻamaoni: Atonu o lo'o i ai se fa'afitauli i se tasi o pona i luga o le auala i le va o Alevine ma le kalani. Ae na toe foʻi foʻi le tagata suʻesuʻe e leai se mea.

E le o laʻu code, le gRPC faʻatinoga, poʻo le fesoʻotaʻiga na mafua ai le tuai. Sa amata ona ou popole o le a ou le malamalama lava i lenei mea.

O le a le OS o loʻo tatou i ai

gRPC fa'aoga lautele i luga ole Linux, ae fa'apitoa ile Windows. Na ou filifili e faʻataʻitaʻi se faʻataʻitaʻiga, lea na aoga: Na ou fatuina se masini komepiuta Linux, tuufaatasia Alvin mo Linux, ma faʻaaogaina.

O nisi taimi e sili atu e itiiti. A faʻaitiitia le uta e mafua ai le faʻateleina o le latency

Ma o le mea lenei na tupu: o le Linux ping-pong server e leʻi tutusa le faʻatuai e pei o se Windows host tutusa, e ui lava e leai se eseesega o le puna o faʻamatalaga. E aliali mai o le faʻafitauli o loʻo i le gRPC faʻatinoga mo Windows.

O le algorithm a Nagle

O le taimi atoa nei sa ou manatu ua ou misia se fuʻa gRPC. O lea ua ou malamalama i le mea moni gRPC Ua misi le fu'a a le Windows. Na ou mauaina se faletusi RPC i totonu na ou mautinoa e aoga lelei mo fuʻa uma ua seti winsock. Ona ou faʻaopoopoina uma lea o fuʻa i le gRPC ma faʻapipiʻi Alvin i luga o Windows, i totonu o le Windows ping-pong server!

O nisi taimi e sili atu e itiiti. A faʻaitiitia le uta e mafua ai le faʻateleina o le latency

Toeitiiti Maea: Na amata ona ou aveese faʻatasi fuʻa faʻaopoopo seʻia oʻo ina toe foʻi mai le faʻasologa ina ia mafai ona ou iloa le mafuaʻaga. Sa ta'uleagaina TCP_NODELAY, Suiga algorithm a Nagle.

O le algorithm a Nagle taumafai e fa'aitiitia le aofa'i o pepa na lafo i luga o se feso'ota'iga e ala i le fa'atuai o le tu'uina atu o fe'au se'ia o'o le lapo'a o le pepa e sili atu i se numera o bytes. E ui atonu e manaia lenei mea mo le averesi tagata faʻaoga, e faʻaleagaina mo saʻo taimi moni ona o le OS o le a faʻatuai nisi o feʻau, e mafua ai le lags i le QPS maualalo. U gRPC o lenei fuʻa na faʻatulagaina i le Linux faʻatinoga mo TCP sockets, ae le o Windows. O a'u lea faasa'oina.

iʻuga

Ole maualuga maualuga ile QPS maualalo na mafua ile OS optimization. I le toe tepa i tua, e le'i iloa e le fa'ata'ita'iga le fa'agaoioiga aua na faia i le kernel mode nai lo totonu faiga fa'aoga. Ou te le iloa pe mafai ona matauina le algorithm a Nagle e ala i le pueina o ETW, ae o le a manaia.

Ae mo le faʻataʻitaʻiga a le localhost, masalo e leʻi paʻi i le code networking ma e leʻi tamoe le algorithm a Nagle, o lea na alu ese ai le faʻafitauli ina ua oʻo atu le kalani ia Alvin e ala ile localhost.

O le isi taimi e te vaʻaia ai le faʻateleina o le faʻagata a o faʻaititia le numera o talosaga ile sekone, e tatau ona i ai le algorithm a Nagle i lau lisi o masalosaloga!

puna: www.habr.com

Faaopoopo i ai se faamatalaga