Chọọ na ọsọ 1 TB/s

TL; DR: Afọ anọ gara aga, ahapụrụ m Google na echiche maka ngwaọrụ nlekota ihe nkesa ọhụrụ. Echiche bụ ijikọta ọrụ ndị dịpụrụ adịpụ n'otu ọrụ nchịkọta na nyocha ndekọ, nchịkọta metrik, ọkwa na dashboards. Otu n'ime ụkpụrụ bụ na ọrụ ahụ ga-abụrịrị n'ezie ngwa ngwa, na-enye devops na ahụmahụ dị mfe, mmekọrịta, na-atọ ụtọ. Nke a na-achọ nhazi data setịpụ ọtụtụ gigabyte n'ime obere nkeji nkeji ka ị na-anọ na mmefu ego. Ngwá ọrụ nchịkwa ndekọ dị adị na-adịkarị nwayọ ma na-adịghị mma, yabụ anyị chere ezigbo ihe ịma aka ihu: jiri amamihe chepụta ngwa iji nye ndị ọrụ ahụmịhe ọhụrụ.

Edemede a na-akọwa otú anyị nọ na Scalyr si dozie nsogbu a site n'itinye usoro ụlọ akwụkwọ ochie, ụzọ ike siri ike, wepụ ihe ndị na-adịghị mkpa na izere nhazi data dị mgbagwoju anya. Ị nwere ike itinye nkuzi ndị a na nsogbu injinia nke gị.

Ike ụlọ akwụkwọ ochie

Nyocha ndekọ na-amalitekarị site na nchọ: chọta ozi niile dabara otu ụkpụrụ. Na Scalyr, ndị a bụ iri ma ọ bụ narị gigabytes nke ndekọ sitere na ọtụtụ sava. Ụzọ ọgbara ọhụrụ, dị ka iwu, gụnyere iwu ụfọdụ usoro data dị mgbagwoju anya emebere maka ọchụchọ. N'ezie, ahụla m nke a na Google, ebe ha mara mma na ụdị ihe a. Mana anyị kwadoro n'ụzọ siri ike: nyocha nke ndekọ ndekọ aha. Ọ na-arụkwa ọrụ - anyị na-enye interface a na-achọgharị nke bụ iwu nke ịdị ukwuu karịa ndị asọmpi anyị (lee animation na njedebe).

Nghọta bụ isi bụ na ndị nrụpụta ọgbara ọhụrụ na-adị ngwa ngwa na arụmọrụ dị mfe, kwụ ọtọ. Nke a dị mfe ịgbaghara na usoro mgbagwoju anya, multi-layer nke na-adabere na ọsọ I/O na ọrụ netwọk, bụ nke a na-ahụkarị taa. Ya mere, anyị mepụtara imewe nke na-ebelata ọkwa na oke irighiri ihe. Na otutu processors na nkesa n'otu n'otu, ọsọ ọchụchọ ruru 1 TB kwa nkeji.

Isi ihe ga-esi na edemede a pụta:

  • Nchọ ike-ike bụ ụzọ dị mma maka idozi nsogbu ụwa n'ezie, nnukwu nsogbu.
  • Ike Brute bụ usoro imewe, ọ bụghị ihe ngwọta na-enweghị ọrụ. Dị ka usoro ọ bụla, ọ ka mma maka nsogbu ụfọdụ karịa ndị ọzọ, a pụkwara ime ya nke ọma ma ọ bụ nke ọma.
  • Ike ike dị mma karịsịa maka imezu ya kwụsie ike mmepụta ihe.
  • Iji ike brute rụọ ọrụ nke ọma chọrọ imelite koodu na itinye akụrụngwa zuru oke n'oge kwesịrị ekwesị. Ọ dabara ma ọ bụrụ na sava gị nọ n'okpuru ibu na-abụghị onye ọrụ yana ọrụ onye ọrụ na-anọgide na-ebute ụzọ.
  • Ịrụ ọrụ na-adabere na nhazi nke usoro dum, ọ bụghị naanị n'ime loop algọridim.

(Isiokwu a na-akọwa ịchọ data na ebe nchekwa. N'ọtụtụ ọnọdụ, mgbe onye ọrụ na-eme nchọpụta log, sava Scalyr echekwalarị ya. Isiokwu na-esonụ ga-atụle ịchọ ndekọ ndekọ na-adịghị. Otu ụkpụrụ ahụ na-emetụta: koodu na-arụ ọrụ nke ọma, ike dị nro. nwere nnukwu akụrụngwa mgbakọ na mwepụ).

Usoro ike ike

Na omenala, a na-achọ nnukwu data setịpụ site na iji ndeksi okwu. Mgbe etinyere ya na ndekọ ihe nkesa, nke a pụtara ịchọ mkpụrụokwu pụrụ iche na ndekọ. Maka okwu ọ bụla, ịkwesịrị ịme ndepụta nke nsonye niile. Nke a na-eme ka ọ dị mfe ịchọta ozi niile na okwu a, dịka ọmụmaatụ 'njehie', 'firefox' ma ọ bụ "transaction_16851951" - lee anya na ndeksi.

Ejiri m usoro a na Google wee rụọ ọrụ nke ọma. Mana na Scalyr anyị na-achọ ndekọ byte site byte.

Gịnị kpatara? Site na nleba anya algọridim na-adịghị ahụkebe, ndepụta okwu isiokwu na-arụ ọrụ nke ọma karịa nchọ ike siri ike. Agbanyeghị, anyị anaghị ere algọridim, anyị na-ere arụmọrụ. Na arụmọrụ abụghị naanị maka algọridim, kamakwa maka injinia sistemụ. Anyị ga-echebara ihe niile echiche: oke data, ụdị ọchụchọ, ngwaike dị na ọnọdụ ngwanrọ. Anyị kpebiri na maka nsogbu anyị kpọmkwem, ihe dị ka 'grep' dị mma karịa ndeksi.

Index dị oke mma, mana ha nwere oke. Otu okwu dị mfe ịchọta. Mana ịchọ ozi nwere ọtụtụ okwu, dị ka 'googlebot' na '404', siri ike karịa. Ịchọ nkebi ahịrịokwu dị ka 'mwepu a na-ejidebeghị' chọrọ nrịbama na-akawanye njọ nke na-edekọ ọ bụghị naanị ozi niile na okwu ahụ, kamakwa kpọmkwem ebe okwu ahụ dị.

Ihe isi ike na-abịa mgbe ị na-achọghị okwu. Ka anyị kwuo na ịchọrọ ịhụ ego ole okporo ụzọ na-abịa site na bots. Echiche mbụ bụ ịchọ okwu 'bot' ndekọ ndekọ. Nke a bụ ka ị ga-ahụ ụfọdụ bots: Googlebot, Bingbot na ọtụtụ ndị ọzọ. Mana ebe a 'bot' abụghị okwu, mana akụkụ ya. Ọ bụrụ na anyị achọ 'bot' na ndeksi, anyị agaghị ahụ posts ọ bụla nwere okwu 'Googlebot'. Ọ bụrụ na ị lelee mkpụrụokwu ọ bụla dị na ndeksi wee nyochaa ndepụta ndepụta maka mkpụrụokwu ndị achọtara, ọchụchọ ahụ ga-ebelata nke ukwuu. N'ihi ya, ụfọdụ mmemme ndekọ anaghị ekwe ka nchọta akụkụ okwu ma ọ bụ (ọ kacha mma) kwe ka syntax pụrụ iche na arụ ọrụ dị ala. Anyị chọrọ izere nke a.

Nsogbu ọzọ bụ akara edemede. Ịchọrọ ịchọta arịrịọ niile sitere na 50.168.29.7? Kedu maka debugging logs nwere [error]? Ndebanye aha na-awụkarị akara edemede.

N'ikpeazụ, ndị injinia hụrụ ngwá ọrụ dị ike n'anya, na mgbe ụfọdụ a na-edozi nsogbu naanị site na nkwupụta mgbe niile. Ndekọ isiokwu adịghị mma maka nke a.

Na mgbakwunye, indices mgbagwoju anya. Ekwesịrị ịgbakwunye ozi ọ bụla n'ọtụtụ ndepụta okwu. Ekwesịrị idowe ndepụta ndị a n'ụdị dị mfe ịchọgharị oge niile. Ajụjụ nwere nkebiokwu, iberibe okwu, ma ọ bụ okwu oge niile kwesịrị ka atụgharịgharịa ka ọ bụrụ arụmọrụ ọtụtụ ndetu, wee nyochaa ma jikọta nsonaazụ ya iji mepụta nsonaazụ. N'ihe gbasara nnukwu ọrụ, ọtụtụ ndị nwe ụlọ, mgbagwoju anya a na-emepụta okwu arụmọrụ na-adịghị ahụ anya mgbe ị na-enyocha algọridim.

Ndekọ isiokwu na-ewekwa ọtụtụ ohere, na nchekwa bụ nnukwu ọnụ ahịa na usoro njikwa log.

N'aka nke ọzọ, nchọta ọ bụla nwere ike iri ọtụtụ ike kọmputa. Ndị ọrụ anyị na-enwe ekele maka nchọ ọsọ dị elu maka ajụjụ pụrụ iche, mana a na-eme ụdị ajụjụ a obere obere. Maka ajụjụ ọchụchọ a na-ahụkarị, dịka ọmụmaatụ, maka dashboard, anyị na-eji usoro pụrụ iche (anyị ga-akọwa ha n'isiokwu na-esote). Arịrịọ ndị ọzọ adịghị adịkarị nke na ị na-esikarị ike ịhazi ihe karịrị otu n'otu oge. Mana nke a apụtaghị na sava anyị anaghị arụsi ọrụ ike: ha na-arụsi ọrụ ike na ịnata, nyocha na ịpịkọta ozi ọhụrụ, nyochaa ọkwa, ịpịkọta data ochie, na ihe ndị ọzọ. N'ihi ya, anyị nwere a pụtara ịrịba ọkọnọ nke processors nwere ike iji mebie ajụjụ.

Ike ike na-arụ ọrụ ma ọ bụrụ na ị nwere nsogbu dị njọ (na ike dị ukwuu)

Ike Brute na-arụ ọrụ kacha mma na nsogbu dị mfe na obere loops dị n'ime. Ọtụtụ mgbe, ị nwere ike ịkwalite akaghị n'ime ka ọ na-agba ọsọ na oke ọsọ. Ọ bụrụ na koodu ahụ dị mgbagwoju anya, ọ na-esiri ike ịkwalite ya.

Koodu ọchụchọ anyị nwere nnukwu akaghị n'ime na mbụ. Anyị na-echekwa ozi na ibe na 4K; ibe ọ bụla nwere ụfọdụ ozi (na UTF-8) na metadata maka ozi ọ bụla. Metadata bụ nhazi nke na-etinye koodu ogologo nke uru, NJ ozi ime na mpaghara ndị ọzọ. Usoro ọchụchọ ahụ yiri nke a:

Chọọ na ọsọ 1 TB/s

Nke a bụ ụdị koodu ahụ dị mfe. Mana ọbụlagodi ebe a, a na-ahụ ọtụtụ ntinye ihe, nnomi data na oku ọrụ. JVM mara mma n'ịkwalite oku ọrụ yana ikenye ihe ephemeral, yabụ koodu a rụrụ ọrụ nke ọma karịa ka anyị kwesịrị. N'oge ule, ndị ahịa na-eji ya nke ọma. Ma n'ikpeazụ anyị weere ya na ọkwa ọzọ.

(Ị nwere ike ịjụ ihe mere anyị ji echekwa ozi n'ụdị a na ibe 4K, ederede na metadata, kama ịrụ ọrụ na ndekọ ozugbo. Enwere ọtụtụ ihe kpatara ya, nke na-agbada n'eziokwu na n'ime ime engine Scalyr dị ka nchekwa data ekesa karịa a. A na-ejikọta ọchụchọ ederede na ihe nzacha ụdị DBMS n'akụkụ akụkụ mgbe nyochachara ndekọ. Anyị nwere ike ịchọ ọtụtụ puku ndekọ n'otu oge, faịlụ ederede dị mfe adịghị adabara maka azụmahịa anyị, mbigharị, na-ekesa data njikwa).

Na mbụ, ọ dị ka koodu dị otú ahụ adabaghị nke ọma maka njikarịcha ike dị nro. "Ezigbo ọrụ" n'ime String.indexOf() achịkwaghị profaịlụ CPU. Ya bụ, ịkwalite usoro a naanị agaghị eweta mmetụta dị ukwuu.

Ọ na-eme na anyị na-echekwa metadata na mmalite nke ibe ọ bụla, na ederede ozi niile dị na UTF-8 na-ejupụta na njedebe ọzọ. N'iji nke a mee ihe, anyị degharịrị loop ka ịchọọ ihu akwụkwọ niile ozugbo:

Chọọ na ọsọ 1 TB/s

Ụdị a na-arụ ọrụ ozugbo na nlele raw byte[] ma na-enyocha ozi niile n'otu oge n'ofe ibe 4K dum.

Nke a dị mfe karị iji bulie maka usoro ike brute. A na-akpọ loop ọchụchọ dị n'ime n'otu oge maka ibe 4K dum, kama iche na post ọ bụla. Enweghị nnomi data, enweghị oke nke ihe. A na-akpọkwa arụmọrụ metadata dị mgbagwoju anya naanị mgbe nsonaazụ ya dị mma, ọ bụghị na ozi ọ bụla. N'ụzọ dị otú a, anyị ekpochapụla tọn nke ihe karịrị akarị, na ibu ndị ọzọ na-etinye uche na obere nchọta n'ime ime, nke dabara nke ọma maka njikarịcha ọzọ.

Nchọgharị algorithm anyị dabere na ezigbo echiche nke Leonid Volnitsky. Ọ dị ka Boyer-Moore algọridim, na-amapụ ihe dị ka ogologo eriri ọchụchọ na nzọụkwụ ọ bụla. Isi ihe dị iche bụ na ọ na-enyocha bytes abụọ n'otu oge iji wedata egwuregwu ụgha.

Mmejuputa iwu anyị chọrọ ịmepụta tebụl nyocha 64K maka nchọ ọ bụla, mana nke ahụ abụghị ihe atụnyere gigabytes nke data anyị na-achọgharị. Akaghị n'ime na-arụ ọrụ ọtụtụ gigabytes kwa sekọnd n'otu isi. Na omume, arụmọrụ kwụsiri ike dị gburugburu 1,25 GB kwa sekọnd na isi ọ bụla, enwere ohere maka mmelite. Ọ ga-ekwe omume ikpochapụ ụfọdụ n'ime ihe ndị dị n'elu n'èzí n'ime akaghị aka, na anyị na-eme atụmatụ ịnwale aka n'ime C kama Java.

Anyị na-eji ike eme ihe

Anyị atụlewo na enwere ike ime nchọnchọ log "ike", mana ole "ike" anyị nwere? Ọtụtụ ihe.

1 isi: Mgbe ejiri ya mee ihe nke ọma, otu isi nke ihe nrụpụta ọgbara ọhụrụ na-adị ike n'onwe ya.

8 isi: Anyị na-agba ọsọ ugbu a na Amazon hi1.4xlarge na i2.4xlarge SSD sava, nke ọ bụla nwere 8 cores (16 eri). Dịka e kwuru n'elu, cores ndị a na-ejikarị arụ ọrụ n'azụ. Mgbe onye ọrụ na-eme ọchụchọ, a kwụsịtụrụ ọrụ ndabere, na-atọhapụ cores 8 niile maka ọchụchọ. Nchọgharị ahụ na-agwụchakarị na nkeji nke abụọ, mgbe nke ahụ gasịrị, ọrụ ndabere na-amaliteghachi (usoro ihe omume na-eme ka a hụ na ọnụọgụ nke ajụjụ ọchụchọ adịghị egbochi ọrụ ndabere dị mkpa).

16 isi: maka ntụkwasị obi, anyị na-ahazi sava n'ime otu nna ukwu / ohu. Nna-ukwu ọ bụla nwere otu SSD na otu ihe nkesa EBS n'okpuru iwu ya. Ọ bụrụ na isi ihe nkesa na-akụda, ihe nkesa SSD na-ewere ọnọdụ ya ozugbo. Ihe fọrọ nke nta ka ọ bụrụ oge niile, nna ukwu na ohu na-arụ ọrụ nke ọma, nke mere na a na-enyocha ngọngọ data ọ bụla na sava abụọ dị iche iche (ihe nkesa ohu EBS nwere ihe nrụpụta adịghị ike, yabụ anyị anaghị atụle ya). Anyị na-eke ọrụ n'etiti ha, nke mere na anyị nwere ngụkọta nke cores 16 dị.

Ọtụtụ cores: N'ọdịnihu dị nso, anyị ga-ekesa data n'ofe sava n'ụzọ na ha niile na-ekere òkè na nhazi arịrịọ ọ bụla na-adịghị mkpa. Isi ọ bụla ga-arụ ọrụ. [Cheta: anyị mejupụtara atụmatụ ahụ wee mụbaa ọsọ ọchụchọ na 1 TB / s, lee ndetu na njedebe nke isiokwu].

Ịdị mfe na-ekwe nkwa ntụkwasị obi

Uru ọzọ nke usoro ike brute bụ arụmọrụ ya na-agbanwe agbanwe. Ọ na-adịkarị, ọchụchọ anaghị emetụ n'ahụ maka nkọwa nke nsogbu na nhazi data (Echere m na ọ bụ ya mere eji akpọ ya "nke siri ike").

Ndepụta isiokwu mgbe ụfọdụ na-arụpụta nsonaazụ ngwa ngwa na-enweghị atụ, na oge ndị ọzọ ọ naghị eme ya. Ka anyị kwuo na ị nwere 50 GB nke ndekọ nke okwu 'customer_5987235982' pụtara kpọmkwem ugboro atọ. Achọ okwu a na-agụta ebe atọ ozugbo site na ndeksi ma ga-agwụcha ozugbo. Mana nchọta kaadị siri ike nwere ike nyochaa ọtụtụ puku mkpụrụokwu wee were ogologo oge.

N'aka nke ọzọ, nchọta ike brute na-eme karịa ma ọ bụ na-erughị otu ọsọ maka ajụjụ ọ bụla. Ịchọ ogologo okwu ka mma, ma ọbụna ịchọ otu agwa na-adị ngwa ngwa.

Ịdị mfe nke usoro ike brute pụtara na arụmọrụ ya dị nso na usoro iwu ya. Enwere nhọrọ ole na ole maka ibufe diski a na-atụghị anya ya, esemokwu mkpọchi, ịchụ ihe nrịba ama na ọtụtụ puku ihe ndị ọzọ kpatara ọdịda. M lere anya arịrịọ ndị ọrụ Scalyr rịọrọ n'izu gara aga na sava anyị kacha arụ ọrụ. Enwere arịrịọ 14. Kpọmkwem asatọ n'ime ha were ihe karịrị otu sekọnd; 000% emechara n'ime milliseconds 99 (ọ bụrụ na ijibeghị ngwaọrụ nyocha log, tụkwasị m obi: ọ dị ngwa).

Ịrụ ọrụ siri ike, nke a pụrụ ịdabere na ya dị mkpa maka ịdị mfe nke ọrụ ahụ. Ọ bụrụ na ọ na-adị kwa oge, ndị ọrụ ga-aghọta na ọ bụ ihe a na-apụghị ịdabere na ya ma ghara ịla azụ iji ya.

Banye ọchụchọ n'ọrụ

Nke a bụ ihe ngosi dị mkpụmkpụ nke na-egosi ọchụchọ Scalyr na-arụ ọrụ. Anyị nwere akaụntụ ngosi ebe anyị na-ebubata mmemme ọ bụla na ebe nchekwa Github ọhaneze. Na ngosi ngosi a, m na-enyocha data bara uru otu izu: ihe dị ka 600 MB nke ndekọ osisi raw.

Edere vidiyo ahụ na ndụ, na-enweghị nkwadebe pụrụ iche, na desktọpụ m (ihe dị ka kilomita 5000 site na sava ahụ). Arụmọrụ ị ga-ahụ bụ nke ukwuu n'ihi njikarịcha ndị ahịa webụ, yana ngwa ngwa na ntụkwasị obi azụ. Mgbe ọ bụla enwere nkwụsịtụ na-enweghị akara 'loading', ọ bụ m na-akwụsịtụ ka ị nwee ike ịgụ ihe m na-achọ ịpị.

Chọọ na ọsọ 1 TB/s

N'ikpeazụ

Mgbe ị na-ahazi nnukwu data, ọ dị mkpa ịhọrọ ezigbo algọridim, mana "ezigbo" apụtaghị "mma." Chee echiche ka koodu gị ga-esi arụ ọrụ na omume. Nyocha usoro ihe omimi nke algọridim na-ahapụ ụfọdụ ihe nwere ike ịdị oke mkpa na ụwa n'ezie. Algọridim dị mfe na-adị mfe ịkwalite ma kwụsie ike na ọnọdụ ihu.

Cheekwa echiche banyere gburugburu ebe a ga-eme koodu ahụ. N'ọnọdụ anyị, anyị chọrọ sava dị ike zuru oke iji jikwaa ọrụ ndabere. Ndị ọrụ na-amalite nyocha obere oge, yabụ anyị nwere ike ịgbazinye otu sava niile maka obere oge achọrọ iji mechaa ọchụchọ ọ bụla.

N'iji usoro ike siri ike, anyị mebere nyocha ngwa ngwa, ntụkwasị obi, na-agbanwe agbanwe n'ofe ndekọ ndekọ. Anyị na-atụ anya na echiche ndị a bara uru maka ọrụ gị.

Dezie: Aha na ederede agbanweela site na "Chọọ na 20 GB kwa sekọnd" gaa na "Chọọ na 1 TB kwa nkeji" iji gosipụta arụmọrụ na-abawanye n'ime afọ ole na ole gara aga. Mmụba nke ọsọ a bụ n'ụzọ bụ isi n'ihi mgbanwe n'ụdị na ọnụọgụ nke sava EC2 anyị na-etinye taa iji jeere ndị ahịa anyị akawanye elu. Enwere mgbanwe na-abịa n'oge na-adịghị anya nke ga-enye nkwalite ọzọ dị egwu na arụmọrụ arụmọrụ, anyị enweghị ike ichere ịkekọrịta ha.

isi: www.habr.com

Tinye a comment