Su'e ile 1 TB/s saoasaoa

TL; DR: Fa tausaga talu ai na ou tuua ai Google ma se manatu mo se mea faigaluega mataʻituina fou. O le manatu o le tuʻufaʻatasia o galuega faʻapitoa i se tasi auaunaga aoina ma le au'ili'ili o ogalaau, aoina o fua, mataala ma dashboards. O se tasi o mataupu faavae o le auaunaga e tatau ona moni vave, tu'uina atu i devops se poto masani faigofie, fegalegaleai, fiafia. E mana'omia ai le fa'agaioia o fa'amaumauga e tele-gigabyte i vaega ninii o le sekone ae tumau i totonu o le paketi. O mea faigaluega o lo'o i ai i le fa'atonutonuina o ogalaau e masani ona telegese ma fa'aletonu, o lea na matou feagai ai ma se lu'itau lelei: fa'ata'ita'iina ma le poto se meafaigaluega e tu'uina atu ai i tagata fa'aoga se poto masani fou.

O lenei tusiga o loʻo faʻamatalaina ai le auala na foia ai e i matou i Scalyr lenei faʻafitauli e ala i le faʻaogaina o metotia tuai a le aoga, se faiga faʻamalosi malosi, faʻaumatia faʻasalalauga e le manaʻomia ma aloese mai fausaga faʻamaumauga faigata. E mafai ona e fa'aogaina nei lesona i ou lava fa'afitauli fa'ainisinia.

Malosi o le Aoga Tuai

O su'esu'ega o fa'amaumauga e masani lava ona amata ile su'esu'ega: su'e fe'au uma e fetaui ma se mamanu patino. I Scalyr, o nei e sefulu poʻo le selau o gigabytes o ogalaau mai le tele o sapalai. O auala faʻaonaponei, e pei o se tulafono, e aofia ai le fausiaina o nisi faʻasologa faʻamaumauga faʻapitoa e sili ona lelei mo suʻesuʻega. E mautinoa lava na ou vaʻai i lenei mea ile Google, lea latou te lelei tele i lenei ituaiga mea. Ae na matou fa'amalieina i se faiga e sili atu ona fa'atauva'a: su'esu'e laina o ogalaau. Ma sa aoga - matou te tuʻuina atu se fesoʻotaʻiga suʻesuʻe e sili atu le vave nai lo o matou tagata tauva (silasila i le animation i le faaiuga).

O le fa'amatalaga autu o fa'aonaponei fa'aonaponei e matua vave lava i fa'agaioiga faigofie ma sa'o. E faigofie ona misia lenei mea i faiga lavelave, tele-layer e faʻalagolago i le saoasaoa o le I / O ma le faʻaogaina o fesoʻotaʻiga, ma o ia faiga e taatele i aso nei. O lea na matou fausia ai se mamanu e faʻaitiʻitia ai laulau ma lapisi tele. Faatasi ai ma le tele o masini ma sapalai e tutusa, o le saoasaoa o sailiga e oʻo atu i le 1 TB i le sekone.

Fa'amatalaga autu mai lenei tusiga:

  • O le su'esu'ega fa'amalosi ose faiga fa'atatau mo le fo'ia o fa'afitauli tetele i le lalolagi moni.
  • Brute force o se faiga fa'ata'ita'i, ae le o se fofo e leai se galuega. E pei o soʻo se metotia, e sili atu ona fetaui i nisi faʻafitauli nai lo isi, ma e mafai ona faʻatinoina le lelei pe lelei.
  • O le malosi faʻamalosi e sili ona lelei mo le ausia fale mautu gaosiga.
  • O le fa'aogaina lelei o le malosi fa'amalosi e mana'omia ai le fa'ata'ita'iina o tulafono fa'atatau ma le fa'aogaina o puna'oa i le taimi sa'o. E talafeagai pe afai o au 'auʻaunaga o loʻo i lalo o le mamafa o le uta e le faʻaaogaina ma o loʻo tumau pea le faʻamuamua o galuega a tagata faʻaoga.
  • Fa'atinoga e fa'alagolago i le mamanu o le faiga atoa, ae le na'o le totonugalemu algorithm.

(O lenei tusiga o loʻo faʻamatalaina ai le suʻeina o faʻamaumauga i le manatua. I le tele o tulaga, pe a faia e se tagata faʻaoga se suʻesuʻega ogalaau, ua uma ona teuina e le Scalyr servers. fa'atasi ai ma punaoa fa'akomepiuta tetele).

Metotia malosi

I le masani ai, o se seti faʻamaumauga tele e suʻeina e faʻaaoga ai se faʻasino upu. Pe a faʻaoga i ogalaau o le server, o lona uiga o le suʻeina o upu tulaga ese uma i totonu o le ogalaau. Mo upu taʻitasi, e tatau ona e faia se lisi o mea uma e aofia ai. O le mea lea e faigofie ai ona maua uma fe'au i lenei upu, mo se fa'ata'ita'iga 'sese', 'firefox' po'o le "transaction_16851951" - na'o le va'ai i le fa'ailoga.

Na ou faʻaogaina lenei auala ile Google ma sa aoga lelei. Ae i Scalyr matou te suʻesuʻeina le ogalaau byte byte.

Aisea? Mai se manatu fa'apitoa algorithmic, fa'asino upu e sili atu ona lelei nai lo su'esu'ega malosi. Ae ui i lea, matou te le faʻatauina algorithms, matou te faʻatau atu faʻatinoga. Ma o le faʻatinoga e le gata e uiga i algorithms, ae faʻapea foʻi e uiga i faiga inisinia. E tatau ona tatou mafaufau i mea uma: tele o faʻamaumauga, ituaiga o suʻesuʻega, mea faigaluega avanoa ma faʻamatalaga polokalame. Na matou filifili mo le matou faʻafitauli faʻapitoa, o se mea e pei o le 'grep' e sili atu ona fetaui nai lo se faasino igoa.

O fa'asino igoa e lelei tele, ae e iai fo'i ni tapula'a. E tasi le upu e faigofie ona maua. Ae o le su'eina o fe'au e tele upu, pei ole 'googlebot' ma le '404', e sili atu ona faigata. O le su'eina o se fasifuaitau e pei o le 'tulaga ese'ese' e mana'omia ai se fa'asinomaga sili atu ona lavelave e fa'amaumau ai e le gata o fe'au uma i lena upu, ae fa'apea fo'i ma le nofoaga patino o le upu.

O le faigata moni e oo mai pe a e le sailia ni upu. Fa'apea e te fia va'ai pe fia le tele o fe'avea'i o lo'o sau mai bots. O le manatu muamua o le su'eina o ogalaau mo le upu 'bot'. O le auala lea e te maua ai nisi bots: Googlebot, Bingbot ma le tele o isi. Ae o iinei 'bot' e le o se upu, ae o se vaega. Afai matou te su'e 'bot' i le fa'asinomaga, matou te le maua ni pou i le upu 'Googlebot'. Afai e te siakiina upu uma i totonu o le fa'asinomaga ona su'esu'e lea o le fa'asinomaga mo upu autu na maua, o le a fa'agesegese tele le sailiga. O le i'uga, e le fa'atagaina e nisi o polokalame fa'akogo su'esu'ega vaega-upu po'o (i le mea sili) fa'ataga fa'apitoa fa'atasi ma le fa'atinoga maualalo. Matou te mananao e aloese mai lenei mea.

O le isi faafitauli o faailoga. E te mana'o e su'e uma talosaga mai 50.168.29.7? Ae fa'afefea le debugging ogalaau o iai [error]? E masani ona faamisi faailoga.

Ma le mea mulimuli, e fiafia le inisinia i meafaigaluega mamana, ma o nisi taimi e mafai ona foia se faafitauli i se faʻamatalaga masani. E le fetaui lelei le fa'asino upu mo lea.

E le gata i lea, o fa'ailoga lavelave. O fe'au ta'itasi e mana'omia ona fa'aopoopo i le tele o lisi o upu autu. O nei lisi e tatau ona teuina i se faatulagaga faigofie ona su'eina i taimi uma. O fesili o lo'o i ai fasifuaitau, fasi upu, po'o fa'amatalaga masani e mana'omia ona fa'aliliu i fa'agaioiga tele-lisi, ma su'esu'e fa'ai'uga ma tu'ufa'atasia e maua ai se seti fa'ai'uga. I le tulaga o se tele-tele, tele-tagata mautotogi, o lenei lavelave e fatuina ai faʻafitauli faʻatinoga e le o vaʻaia pe a suʻesuʻeina algorithms.

O fa'asinomaga autu e tele foi le avanoa e alu ai, ma o le teuina o se tau tele lea i totonu o le faiga o le pulega o ogalaau.

I le isi itu, o suʻesuʻega taʻitasi e mafai ona faʻaumatia le tele o le mana faʻakomepiuta. E talisapaia e matou tagata fa'aoga su'esu'ega maualuga mo fesili tulaga ese, ae e seasea faia ia fesili. Mo faʻamatalaga masani suʻesuʻe, mo se faʻataʻitaʻiga, mo se dashboard, matou te faʻaogaina auala faʻapitoa (o le a matou faʻamatalaina i le isi tusiga). O isi talosaga e seasea lava e seasea ona e fa'agaioia le sili atu ma le tasi i le taimi. Ae e le o lona uiga e le o pisi a tatou 'auʻaunaga: o loʻo pisi i latou i le galuega o le mauaina, suʻesuʻeina ma faʻapipiʻi feʻau fou, iloilo faʻasalalauga, faʻapipiʻi faʻamaumauga tuai, ma isi. O le mea lea, o loʻo i ai a matou sapalai taua tele o processors e mafai ona faʻaogaina e faʻatino ai faʻamatalaga.

O le malosi faʻamalosi e aoga pe a iai sau faʻafitauli mataga (ma tele le malosi)

Brute force e sili ona aoga i faʻafitauli faigofie ma faʻaoga laiti i totonu. E masani lava e mafai ona e fa'amalieina le matasele i totonu e tamo'e i le saoasaoa maualuga. Afai e lavelave le code, e sili atu le faigata ona faʻamalieina.

O la matou fa'ailoga su'esu'e sa i ai se matasele tele i totonu. Matou te teuina savali i luga o itulau ile 4K; o itulau ta'itasi o lo'o iai ni fe'au (i le UTF-8) ma metadata mo fe'au ta'itasi. Metadata o se fausaga e faʻapipiʻi le umi o le tau, ID feʻau i totonu, ma isi fanua. O le taamilosaga su'esu'e e pei o lenei:

Su'e ile 1 TB/s saoasaoa

O se fa'amatalaga faigofie lea e fa'atusatusa i le code moni. Ae e oʻo lava iinei, e tele mea faʻapipiʻi mea, kopi faʻamaumauga, ma telefoni galuega e iloa. O le JVM e lelei tele i le faʻamalieina o telefoni ma tuʻufaʻatasia mea ephemeral, o lea na sili atu le aoga o lenei code nai lo le tatau. I le taimi o suʻega, na faʻaaogaina e tagata faʻatau. Ae na iu lava ina matou oo i le isi tulaga.

(Atonu e te fesili pe aisea matou te teuina ai feʻau i lenei faatulagaga ma itulau 4K, tusitusiga ma metadata, nai lo le galulue faʻatasi ma ogalaau tuusaʻo. E tele mafuaʻaga, e faʻafefe i lalo i le mea moni o totonu ole Scalyr engine e sili atu e pei o se faʻamaumauga tufatufaina nai lo se faiga faila. E masani ona tuʻufaʻatasia le suʻesuʻega o tusitusiga ma le DBMS-style filters i le pito i tua pe a uma le faʻavasegaina o ogalaau.

I le taimi muamua, e foliga mai o ia code e le fetaui lelei mo le faʻamalosia o le malosi. "Galue moni" i String.indexOf() e le'i pulepulea fo'i le fa'ailoga PPU. O lona uiga, o le fa'amalieina o lenei metotia na'o le a le aumaia ai se aafiaga taua.

E tupu tatou te teuina metadata i le amataga o itulau taʻitasi, ma o tusitusiga o feʻau uma ile UTF-8 o loʻo faʻapipiʻiina i le isi pito. I le faʻaaogaina o lenei mea, matou te toe tusia le matasele e suʻe ai le itulau atoa i le taimi e tasi:

Su'e ile 1 TB/s saoasaoa

O lenei lomiga e galue sa'o i luga o le vaaiga raw byte[] ma su'e fe'au uma ile taimi e tasi ile itulau atoa ole 4K.

O lenei mea e sili atu ona faigofie le faʻaogaina mo le auala faʻamalosi malosi. Ole su'esu'ega fa'alotoifale e vala'au fa'atasi mo le itulau atoa 4K, nai lo le tu'uese'ese ile pou ta'itasi. E leai se kopi o fa'amaumauga, leai se fa'asoaina o mea. Ma e sili atu ona lavelave fa'agaioiga metadata e vala'au pe a lelei le taunu'uga, ae le o fe'au uma. O le auala lea ua matou faʻaumatia ai le tele o le ulu, ma o le vaega o totoe o le uta o loʻo faʻaogaina i totonu o se laʻititi suʻesuʻe i totonu, lea e fetaui lelei mo le faʻaleleia atili.

O la matou suʻesuʻega moni algorithm e faʻavae i luga manatu lelei o Leonid Volnitsky. E tutusa ma le Boyer-Moore algorithm, fa'ase'e pe tusa o le umi o le manoa su'esu'e i la'asaga ta'itasi. O le eseesega tele o le siakiina o paita e lua i le taimi e faʻaitiitia ai matches sese.

O la matou fa'atinoga e mana'omia ai le faia o se laulau su'esu'e 64K mo su'esu'ega ta'itasi, ae e leai se mea e fa'atusaina i le gigabytes o fa'amaumauga o lo'o matou su'eina. O le matasele i totonu e fa'agaoioia le tele o gigabytes i le sekone i luga o le fatu e tasi. I le faʻataʻitaʻiga, o faʻatinoga mautu e tusa ma le 1,25 GB i le sekone i luga o autu taʻitasi, ma o loʻo i ai le avanoa mo le faʻaleleia. E mafai ona faʻaumatia nisi o le pito i fafo o le matasele i totonu, ma matou fuafua e faʻataʻitaʻi i se matasele totonu i C nai lo Java.

Tatou te faaaogaina le malosi

Ua matou talanoaina e mafai ona faʻatinoina le suʻesuʻega ogalaau "pea", ae o le a le tele o le "malosi" o loʻo ia i tatou? E matua tele lava.

1 autu: Pe a fa'aoga sa'o, o le tasi autu o se masini fa'aonaponei e matua malosi lava i lana lava aia tatau.

8 fatu: O loʻo matou tamoʻe nei i luga ole Amazon hi1.4xlarge ma i2.4xlarge SSD servers, taʻitasi ma 8 cores (16 filo). E pei ona taʻua i luga, o nei cores e masani ona pisi i faʻagaioʻiga i tua. Pe a faia e le tagata faʻaoga se suʻesuʻega, e faʻamalolo le faʻaogaina o galuega, faʻasaʻoloto uma 8 cores mo suʻesuʻega. Ole su'esu'ega e masani ona mae'a ile vaeluagalemu, a mae'a ona toe amata galuega (o le polokalame fa'ato'a fa'amautinoaina e le fa'alavelaveina le tele o su'esu'ega i galuega taua i tua).

16 fatu: mo le faʻatuatuaina, matou te faʻatulagaina 'auʻaunaga i vaega matai / pologa. O matai taʻitasi e tasi le SSD ma le tasi EBS server i lalo o lana faʻatonuga. Afai e paʻu le server autu, o le SSD server e vave ona sui. Toeitiiti lava o taimi uma, e galue lelei le matai ma le pologa, ina ia mafai ona suʻesuʻeina poloka faʻamaumauga taʻitasi i luga o sapalai eseese e lua (o le EBS pologa server o loʻo i ai se gaioiga vaivai, o lea matou te le mafaufau ai). Matou te vaevaeina le galuega i le va oi latou, ina ia matou maua le aofaʻi o 16 cores avanoa.

Tele cores: I se taimi lata mai, o le a matou tufatufaina atu faʻamatalaga i luga o 'auʻaunaga i se auala latou te auai uma ai i le faʻaogaina o talosaga uma e le taua. O autu uma o le a galue. [Manatua: matou faʻatinoina le fuafuaga ma faʻateleina le saoasaoa o suʻesuʻega i le 1 TB/s, vaʻai faʻamatalaga i le faaiuga o le tusiga].

O le faigofie e mautinoa ai le faʻamaoni

O le isi tulaga lelei o le faiga fa'amalosi malosi o lona fa'atinoina lelei. E masani lava, o le suʻesuʻega e leʻo maʻaleʻale tele i faʻamatalaga o le faʻafitauli ma faʻamaumauga faʻamaumauga (Ou te masalo o le mea lea e taʻua ai o le "gaogao").

O le upu fa'asino igoa o nisi taimi e maua ai ni fa'ai'uga vave, ae o isi taimi e leai. Fa'apea o lo'o ia te oe le 50 GB o ogalaau lea e fa'atolu ona aliali mai ai le upu 'customer_5987235982'. O se su'esu'ega mo lenei fa'aupuga e faitau sa'o ni nofoaga se tolu mai le fa'asinomaga ma o le a mae'a vave. Ae o su'esu'ega lavelave e mafai ona su'e le faitau afe o upu autu ma umi se taimi.

I le isi itu, o suʻesuʻega faʻamalosi e faʻatino i le sili atu pe itiiti ifo le saoasaoa tutusa mo soʻo se fesili. O le su'eina o upu uumi e sili atu, ae e o'o lava i le su'eina o se tagata e tasi e fai si vave.

O le faigofie o le faiga fa'amalosi malosi o lona uiga o lona fa'atinoga e latalata i lona maualuga maualuga. E itiiti ni filifiliga mo le tele o tisiki e le'i mafaufauina, lokaina fefinauai, tulituliloaina, ma le faitau afe o isi mafuaaga mo le toilalo. Na ona ou tilotilo i talosaga na faia e tagata Scalyr i le vaiaso talu ai i luga o le matou server sili ona pisi. E 14 talosaga. E to'avalu sa'o i latou na sili atu i le tasi sekone; 000% mae'a i totonu ole 99 milliseconds (afai e te le'i fa'aogaina meafaigaluega e su'esu'e ai ogalaau, fa'atuatuaina a'u: e vave).

O le fa'atinoga mautu, fa'atuatuaina e taua tele mo le fa'aogaina o le tautua. Afai e tuai i lea taimi ma lea taimi, o le a iloa e tagata faʻaoga e le faʻatuatuaina ma e mumusu e faʻaaogaina.

Log su'esu'e ile gaioiga

O se fa'afiafiaga pu'upu'u lea e fa'aalia ai le su'esu'ega a Scalyr. E i ai la matou faʻamatalaga faʻamatalaga lea matou te faʻaulufaleina mai ai mea uma i totonu o faleoloa lautele a Github. I lenei fa'ata'ita'iga, ou te su'esu'eina le aoga o fa'amaumauga mo le vaiaso: e tusa ma le 600 MB o ogalaau mata'utia.

O le vitio na faʻamauina ola, e aunoa ma se sauniuniga faʻapitoa, i luga o laʻu laulau (pe a ma le 5000 kilomita mai le 'auʻaunaga). O le fa'atinoga o le a e va'ai i ai e mafua mai i 'upega tafaʻilagi tagata faʻatau, faʻapea foʻi ma le vave ma faʻalagolago i tua. Soo se taimi lava e malolo ai e aunoa ma se 'loading' faʻailoga, o aʻu lava e malolo ina ia mafai ona e faitau i le mea o le a ou oomiina.

Su'e ile 1 TB/s saoasaoa

I le faaiuga

Pe a faʻatautaia le tele o faʻamaumauga, e taua le filifilia o se algorithm lelei, ae o le "lelei" e le o lona uiga "manaia." Mafaufau pe faʻafefea ona galue lau code ile faʻatinoga. O le suʻesuʻega faʻataʻitaʻiga o algorithms e tuʻu ai nisi o mea e mafai ona taua tele i le lalolagi moni. Algoritimi faigofie e sili atu ona faigofie ma sili atu ona mautu i tulaga pito.

Mafaufau foi e uiga i le talaaga o le a faia ai le code. I la matou tulaga, matou te manaʻomia ni 'auʻaunaga mamana e faʻatautaia galuega i tua. E seasea ona amata su'esu'ega e tagata fa'aoga, o lea e mafai ai ona matou nono mai se vaega atoa o 'au'aunaga mo le taimi pu'upu'u e mana'omia e fa'auma ai su'esu'ega ta'itasi.

I le fa'aogaina o se faiga fa'amalosi, na matou fa'atinoina ai se su'esu'ega vave, fa'atuatuaina, ma fetuutuuna'i i se seti o ogalaau. Matou te faʻamoemoe e aoga nei manatu mo au poloketi.

Fa'atonu: Ua suia le ulutala ma tusitusiga mai le "Su'esu'e i le 20 GB i le sekone" i le "Su'esu'e ile 1 TB i le sekone" e atagia ai le si'itia o fa'atinoga i nai tausaga ua tuana'i. O lenei faʻateleina o le saoasaoa e mafua ona o suiga i le ituaiga ma le numera o EC2 'auʻaunaga o loʻo matou tuʻuina i aso nei e tautua ai le faʻatupulaia o tagata faʻatau. O lo'o i ai suiga o lo'o lata mai o le a maua ai se isi fa'aleleia tele i le fa'atinoina o galuega, ma e le mafai ona matou fa'atali e fa'asoa atu.

puna: www.habr.com

Faaopoopo i ai se faamatalaga