Ka raadi 1 TB/s

TL;DR: Afar sano ka hor waxaan Google uga tagay fikrad ah qalab cusub oo la socodka serverka. Fikradda waxay ahayd in la isku daro shaqooyinka sida caadiga ah go'doonsan hal adeeg ururin iyo falanqaynta log, ururinta qiyaasaha, digniino iyo dashboards. Mid ka mid ah mabaadi'da ayaa ah in adeeggu uu ahaado mid dhab ah degdeg ah, siinta debadaha leh khibrad fudud, is dhexgal, raaxo leh. Tani waxay u baahan tahay habaynta xogta gigabyte-ka badan ee jajabka ilbiriqsi inta lagu jiro miisaaniyada. Aaladaha maaraynta log-yada ee jira inta badan waa kuwo gaabis ah oo qallafsan, sidaa awgeed waxa nala soo gudboonaaday caqabad wanaagsan: si caqli-gal ah u qaabaynta aalad si loo siiyo isticmaaleyaasha khibrad cusub.

Maqaalkani waxa uu qeexayaa sida aanu Scalyr u xalinay dhibaatadan annagoo adeegsanayna habab dugsi oo hore, hab xoog leh, baabi'inta lakabyada aan loo baahnayn iyo ka fogaanshaha qaababka xogta adag. Waxaad ku dabaqi kartaa casharradan dhibaatooyinkaaga injineernimada.

Awood Dugsigii Hore

Falanqaynta galdu waxay caadi ahaan ku bilaabataa raadinta: hel dhammaan fariimaha ku habboon qaab gaar ah. Gudaha Scalyr, kuwani waa tobanaan ama boqolaal gigabytes oo logs ah oo ka socda servero badan. Hababka casriga ah, sida caadiga ah, waxay ku lug leeyihiin dhismaha qaar ka mid ah qaabdhismeedka xogta adag ee loo habeeyay raadinta. Runtii tan waxaan ku arkay Google-ka, halkaas oo ay aad ugu fiican yihiin arrimahan oo kale. Laakiin waxaan ku degnay hab aad u qallafsan: iskaanka toosan ee logyada. Oo way shaqeysay - waxaan bixinaa interface la raadin karo kaas oo ah amarro ka dheereeya tartamayaashayada (eeg animation dhamaadka).

Fikradda muhiimka ah waxay ahayd in soo-saareyaasha casriga ahi ay runtii aad ugu dheereeyaan hawlo fudud oo toos ah. Tani way fududahay in lagu waayo nidaamyo isku dhafan oo lakabyo badan leh kuwaas oo ku tiirsan xawaaraha I/O iyo hawlaha shabakada, nidaamyada noocan oo kale ah ayaa maanta aad u badan. Markaa waxaanu samaynay naqshad yaraynaysa lakabyada iyo qashinka xad-dhaafka ah. Iyada oo ay isku mid yihiin Processor-yaal badan iyo adeegayaal, xawaaraha goobashadu waxa uu gaaraa 1 TB ilbiriqsikii.

Qodobbada muhiimka ah ee maqaalkan:

  • Raadinta xoog-fudud waa hab wax ku ool ah oo lagu xalliyo dhibaatooyinka baaxadda leh ee adduunka dhabta ah.
  • Xoogaa qallafsan waa farsamada naqshadeynta, ma aha xal shaqo la'aan ah. Sida farsamo kasta, way ku habboon tahay dhibaatooyinka qaarkood marka loo eego kuwa kale, waxaana loo hirgelin karaa si liidata ama si fiican.
  • Xoogaa caqiido ayaa gaar ahaan u fiican in la gaaro deggan wax soo saarka.
  • Isticmaalka wax ku oolka ah ee xoogga wax-ku-oolka ah wuxuu u baahan yahay hagaajinta koodka iyo adeegsiga agab ku filan wakhtiga saxda ah. Way ku habboon tahay haddii server-yadaadu ay ku hoos jiraan culays culus oo aan isticmaale ahayn oo hawlgallada isticmaalayaashu ay sii ahaanayaan mudnaanta.
  • Waxqabadku wuxuu ku xiran yahay naqshadeynta nidaamka oo dhan, ma aha oo kaliya algorithm loop gudaha.

(Maqaalkani wuxuu sharxayaa raadinta xogta xusuusta. Inta badan, marka isticmaaluhu sameeyo raadinta log, server-yada Scalyr ayaa horey u kaydiyay. Maqaalka soo socda wuxuu ka hadli doonaa raadinta diiwaannada aan la daboolin. Isla mabaadi'da ayaa khuseeya: code hufan, xoog adag. oo leh agab xisaabeed oo waaweyn).

Habka xoogga cad

Dhaqan ahaan, xog weyn ayaa la raadiyaa iyadoo la adeegsanayo tusmada ereyga muhiimka ah. Marka lagu dabaqo diiwaannada server-ka, tani waxay la macno tahay raadinta kelmad kasta oo gaar ah oo ku jirta diiwaanka. Kelmad kasta, waxaad u baahan tahay inaad samayso liis dhammaan ka mid ahaanshaha. Tani waxay fududaynaysaa in la helo dhammaan fariimaha kelmaddan leh, tusaale ahaan 'qalad', 'firefox' ama "transaction_16851951" - kaliya ka eeg tusmada.

Habkan ayaan Google uga isticmaalay si fiicanna wuu u shaqeeyay. Laakiin gudaha Scalyr waxaan ka baadhnaa logs byte byte.

Waa maxay sababtu? Marka loo eego aragtida algorithm ee aan la taaban karin, tusmooyinka ereyada muhiimka ah ayaa aad uga waxtar badan marka loo eego xoog-raadinta. Si kastaba ha noqotee, ma iibino algorithms, waxaan iibinaa waxqabadka. Wax qabadkuna ma aha oo kaliya algorithms, laakiin sidoo kale ku saabsan injineernimada nidaamyada. Waa inaan tixgelinno wax walba: mugga xogta, nooca goobidda, qalabka la heli karo iyo macnaha software. Waxaan go'aansanay in dhibkayaga gaarka ah, wax la mid ah 'grep' uu kaga habboon yahay tusmaynta.

Indexyadu waa weyn yihiin, laakiin waxay leeyihiin xaddidaadyo. Hal kelmad waa sahlan tahay in la helo. Laakin raadinta fariimaha leh erayo badan, sida 'googlebot' iyo '404', aad bay u adagtahay. Raadinta weedha sida 'ka reeban aan la qaban' waxay u baahan tahay tilmaame aad u dhib badan oo aan diiwaangelin dhammaan fariimaha ereygaas oo keliya, laakiin sidoo kale goobta gaarka ah ee ereyga.

Dhibaatada dhabta ahi waxay timaaddaa marka aanad raadin ereyo. Aynu nidhaahno waxaad doonaysaa inaad aragto inta taraafig ee ka imanaya bots Fikirka ugu horreeya waa in la raadiyo loguska ereyga 'bot'. Tani waa sida aad ku heli doonto qaar ka mid ah bots: Googlebot, Bingbot iyo kuwo kale oo badan. Laakiin halkan 'bot' maaha eray, laakiin waa qayb ka mid ah. Haddii aan ka raadinno 'bot' tusmada, kama heli doonno wax qoraallo ah oo wata ereyga 'Googlebot'. Haddii aad hubiso erey kasta oo ku jira tusmada oo aad ka baarto tusmada ereyada muhiimka ah ee la helay, raadinta ayaa aad hoos u dhigi doonta. Natiijo ahaan, qaar ka mid ah barnaamijyada log ma oggola raadinta qayb-erey ama (ugu fiican) waxay oggolaadaan syntax gaar ah oo leh waxqabad hoose. Waxaan rabnaa inaan ka fogaano tan.

Dhib kale ayaa ah calaamadaynta. Ma rabtaa inaad ka hesho dhammaan codsiyada 50.168.29.7? Ka warran sixitaanka diiwaannada ay ku jiraan [error]? Qoraalada sida caadiga ah way ka boodaan xarakaynta.

Ugu dambeyntii, injineerada waxay jecel yihiin qalabyada xoogga leh, mararka qaarkoodna dhibaatada waxaa lagu xallin karaa oo kaliya hadal joogto ah. Tusmada ereyga muhiimka ah aad uguma habboona tan.

Intaa waxaa dheer, indices adag. Farriin kastaa waxay u baahan tahay in lagu daro liisaska ereyada muhiimka ah ee dhowr ah. Liisaskan waa in lagu hayaa qaab sahlan oo la raadin karo mar walba. Weydiimaha weedho, kelmado jajaban, ama tibaaxaha caadiga ah waxay u baahan yihiin in loo tarjumo hawlo liisyo badan leh, iyo natiijooyinka la sawiro oo la isku daro si loo soo saaro natiijada. Marka la eego adeegga baaxadda weyn, kiraystayaasha badan, kakanaantani waxay abuurtaa arrimo waxqabad oo aan muuqan marka la falanqeynayo algorithms-yada.

Tilmaamaha ereyada muhiimka ah waxay sidoo kale qaataan meelo badan, kaydintuna waa kharash weyn oo ku jira nidaamka maareynta log.

Dhanka kale, baaritaan kasta wuxuu cuni karaa awood badan oo xisaabeed. Isticmaalayaashayadu waxay qadariyaan raadinta xawaaraha sare leh ee weydiimaha gaarka ah, laakiin weydiimaha noocan oo kale ah ayaa la sameeyaa si dhif ah. Su'aalaha raadinta caadiga ah, tusaale ahaan, dashboard-ka, waxaan isticmaalnaa farsamooyin gaar ah (waxaan ku tilmaami doonaa maqaalka soo socda). Codsiyada kale ayaa ah kuwo aan badneyn oo kugu filan oo aad dhif u tahay inaad wax ka qabato wax ka badan hal mar. Laakiin tani macnaheedu maaha in server-yadayadu aanay mashquulin: waxay ku mashquulsan yihiin helitaanka, falanqaynta iyo cududeynta fariimaha cusub, qiimaynta digniinaha, cududeynta xogta hore, iyo wixii la mid ah. Markaa, waxaanu haynaa sahay processor-ro-sare ah oo loo isticmaali karo fulinta su'aalaha.

Xoog ba'an ayaa shaqeeya haddii aad qabto dhibaato caarran (iyo xoog badan)

Xoogaga qallafsan ayaa si fiican ugu shaqeeya dhibaatooyinka fudud ee leh wareegyo yaryar oo gudaha ah. Badanaa waxaad hagaajin kartaa wareegga gudaha si aad ugu socoto xawaare aad u sarreeya. Haddii koodku adag yahay, aad bay u adag tahay in la hagaajiyo.

Summadayada raadinta ayaa markii hore lahaa wareeg gudaha ah oo aad u weyn. Waxaan ku kaydinnaa fariimaha boggaga 4K; bog kastaa waxa uu ka kooban yahay fariimaha qaar (UTF-8) iyo xogta badan ee fariin kasta. Metadata waa qaab dhismeed qeexaya dhererka qiimaha, aqoonsiga fariinta gudaha, iyo meelaha kale. Wareega raadinta ayaa u ekaa sidan:

Ka raadi 1 TB/s

Kani waa nooca la fududeeyay ee koodka dhabta ah. Laakiin xitaa halkan, meelo badan oo shay, nuqullo xog ah, iyo wicitaanno shaqo ayaa muuqda. JVM-ku aad buu ugu fiican yahay hagaajinta wicitaannada shaqada iyo qoondaynta walxaha ephemeral, marka koodhkani wuxuu u shaqeeyay si ka wanaagsan intii aan u qalmin. Inta lagu jiro tijaabada, macaamiishu waxay u isticmaaleen si guul leh. Laakin aakhirkii waxaan u qaadnay heerkii xigay.

(Waxaa laga yaabaa inaad weydiiso sababta aan u kaydinno farriimaha qaabkan oo leh bogag 4K ah, qoraal iyo xog badan, halkii aad si toos ah uga shaqayn lahayd logyada Habka faylalka. Raadinta qoraalka waxaa inta badan lagu daraa filtarrada qaabka DBMS ee geesaha ka dib marka la falanqeeyo log. Waxaan isku mar baari karnaa kumanaan log oo badan hal mar, iyo faylasha qoraalka fudud kuma habboona macaamilkayaga, nuqul ka mid ah, maareynta xogta qaybinta).

Markii hore, waxay u muuqatay in koodka noocaas ahi aanu aad ugu habboonayn tayaynta xoogga. "Shaqo dhab ah" gudaha String.indexOf() xitaa ma xukumin astaanta CPU. Taasi waa, hagaajinta habkan oo keliya ma keenayso saameyn weyn.

Waxay dhacdaa in aan ku kaydinno metadata bilawga bog kasta, iyo qoraalka dhammaan fariimaha ku jira UTF-8 ayaa lagu duubay dhinaca kale. Anaga oo taas ka faa'iidaysanayna, waxa aanu dib u qornay loop-ka si aanu hal mar u baadho bogga oo dhan:

Ka raadi 1 TB/s

Noocani wuxuu si toos ah ugu shaqeeyaa aragtida raw byte[] oo ka baadha dhammaan fariimaha hal mar dhammaan bogga 4K.

Tani aad bay u fududahay in lagu hagaajiyo habka xoogga caasinimada ah. Wareegga raadinta gudaha waxaa isku mar loogu yeeraa dhammaan bogga 4K, halkii si gooni ah loogu dhejin lahaa qoraal kasta. Ma jiro nuqul xog ah, ma jirto qaybinta walxaha. Hawlgallada xog-ururinta badan ee kakan ayaa la magacaabaa oo keliya marka natiijadu noqoto mid togan, oo aan ku jirin farriin kasta. Sidan ayaanu u baabi'inay tiro badan oo dusha sare ah, culayska intiisa kalena waxa uu ku urursan yahay wareeg yar oo raadinta gudaha ah, kaas oo ku habboon hagaajin dheeraad ah.

Algorithm raadintayada dhabta ah waxay ku salaysan tahay fikradda weyn ee Leonid Volnitsky. Waxay la mid tahay algorithm-ka Boyer-Moore, oo ka boodboodaya qiyaastii dhererka xadhigga raadinta ee tallaabo kasta. Farqiga ugu weyni waa in ay hubiso laba bytes markiiba si loo yareeyo taranka beenta ah.

Hirgelintayadu waxay u baahan tahay abuurista miis 64K raadin kasta, laakiin taasi waxba maaha marka la barbar dhigo gigabytes-ka xogta aan ku raadinayno. Wareegga gudaha wuxuu ku shaqeeyaa dhowr gigabytes ilbiriqsi kasta hal xuddun. Ficil ahaan, waxqabadka xasilloon wuxuu ku dhow yahay 1,25 GB ilbiriqsi kasta xudunta kasta, waxaana jira boos horumar ah. Waa suurtagal in la tirtiro qaar ka mid ah dusha sare ee ka baxsan wareegga gudaha, waxaanan qorsheyneynaa inaan tijaabino wareegga gudaha ee C halkii Java.

Waxaan isticmaalnaa xoog

Waxaan ka wada hadalnay in raadinta loggu la hirgelin karo "qiyaastii", laakiin intee "awood" ayaan haysanaa? Aad u badan.

1 xudunta: Marka si sax ah loo isticmaalo, hal xudun oo processor-ka casriga ahi waa mid awooddeeda iska leh.

8 geesoodHadda waxaan ku shaqeyneynaa Amazon hi1.4xlarge iyo i2.4xlarge SSD servers, mid kasta oo leh 8 cores (16 threads). Sida kor ku xusan, xuduntani waxay badanaa ku mashquulsan yihiin hawlaha asalka ah. Marka adeegsaduhu sameeyo raadinta, hawlgallada asalka ahi waa la hakiyaa, iyaga oo xoraynaya dhammaan 8da xudun ee raadinta. Raadinta inta badan waxay ku dhammaataa ilbiriqsi kala qaybsanaan ah, ka dib shaqada asalka ah ayaa dib u bilaabma (barnaamijka xannibaadda wuxuu hubinayaa in qulqulka weydiimaha raadinta uusan faragelinin shaqada asalka ah ee muhiimka ah).

16 geesood: isku halaynta, waxaanu u habaynnaa server-yada kooxo sayid/addoon ah. Master kastaa waxa uu leeyahay hal SSD iyo hal EBS oo uu amarkiisa hoos yimaado. Haddii server-ka ugu weyn uu burburo, server-ka SSD isla markiiba wuxuu qaataa booskiisa. Ku dhawaad ​​​​waqtiga oo dhan, sayidkii iyo addoonku waxay si fiican u shaqeeyaan, si block kasta oo xog ah loo raadiyo laba server oo kala duwan (server EBS wuxuu leeyahay processor daciif ah, markaa ma tixgelineyno). Hawsha iyaga ayaanu u kala qaybinaynaa, si aanu u helno wadar ahaan 16 core.

Qeybo badan: Mustaqbalka dhow, waxaanu u qaybin doonaa xogta server-yada si ay dhammaantood uga qaybqaataan socodsiinta codsi kasta oo aan fududayn. Xudun kasta ayaa shaqayn doonta. [Fiiro gaar ah: Waxaan fulinay qorshaha waxaana kordhinay xawaaraha raadinta ilaa 1 TB/s, eeg qoraalka dhamaadka maqaalka].

Fududnaanta waxay hubisaa isku halaynta

Faa'iidada kale ee habka xoogga caasimadu waa waxqabadkeeda si caddaalad ah oo joogto ah. Caadi ahaan, raadintu aad uma dareensana tafaasiisha dhibaatada iyo xogta (waxaan qiyaasayaa in taasi ay tahay sababta loogu yeero "qararan").

Tusmada ereyga muhiimka ah mararka qaarkood waxay soo saartaa natiijooyin degdeg ah oo cajiib ah, marar kalena ma keento. Aynu nidhaahno waxaad haysataa 50 GB oo logos ah kaas oo ereyga 'customer_5987235982' uu si sax ah u soo baxay saddex jeer. Raadinta ereygan ayaa si toos ah u tirinaya saddex meelood oo ka yimid tusmada oo isla markaaba dhammayn doonta. Laakin raadinta calaamado adag oo adag ayaa baari kara kumanaan erey oo muhiim ah waxayna qaadan kartaa waqti dheer.

Dhanka kale, baadhista xoog-raadinta waxay ku fulisaa in ka badan ama ka yar xawaare isku mid ah su'aal kasta. Raadinta ereyo dhaadheer ayaa ka wanaagsan, laakiin xitaa raadinta hal qof ayaa aad u dhaqso badan.

Fududeynta habka xoogga qallafsan macnaheedu waa in waxqabadkiisu uu ku dhow yahay ugu badnaan aragtidiisa. Waxaa jira xulashooyin yar oo loogu talagalay culeyska xad-dhaafka ah ee saxanka, muranka qufulka, raacitaanka tilmaame, iyo kumanaan kale oo sababa guul-darrida. Waxaan eegay codsiyada ay sameeyeen isticmaalayaasha Scalyr usbuucii hore seerfarkeena ugu mashquulka badan. Waxaa jiray 14 codsi. Siddeed ka mid ah waxay qaateen in ka badan hal ilbiriqsi; 000% waxay ku dhammaatay 99 millise seconds (haddii aadan isticmaalin aaladaha falanqaynta log, i aamin: waa dhakhso).

Waxqabad xasiloon, oo la isku halayn karo ayaa muhiim u ah fududaynta isticmaalka adeegga. Haddii ay si xilliyo ah u dhacdo, isticmaalayaashu waxay u arki doonaan mid aan la isku halleyn karin oo ay ka caga jiidayaan inay isticmaalaan.

Gal raadinta ficil

Halkan waxaa ah animation gaaban oo muujinaya raadinta Scalyr ee ficilka. Waxaan leenahay koontada demo halkaas oo aan ka soo dejino dhacdo kasta meel kasta oo Github ah oo dadweyne ah. Muujintan, waxaan ku baadhayaa xogta qiimaha toddobaadlaha ah: ku dhawaad ​​600 MB ee logos ceeriin ah.

Fiidiyowga waxaa loo duubay si toos ah, iyada oo aan diyaargarow gaar ah loo helin, miiskayga (qiyaastii 5000 kiiloomitir u jirta serverka). Waxqabadka aad arki doonto waxaa ugu wacan kobcinta macmiilka shabakada, iyo sidoo kale dhabarka degdega ah oo la isku halayn karo. Mar kasta oo ay jirto hakad bilaa tilmaame 'loading' ah, waa aniga oo hakad dhigaya si aad u akhrido waxa aan doonayo in aan riixo.

Ka raadi 1 TB/s

Gabagabada

Marka la farsameynayo tiro badan oo xog ah, waxaa muhiim ah in la doorto algorithm wanaagsan, laakiin "wanaagsan" macnaheedu maaha "qurux". Ka fakar sida koodhkaagu u shaqayn doono si dhab ah. Falanqaynta aragtiyeed ee algorithms waxay ka baxaysaa arrimo qaar oo muhiimad weyn ku yeelan kara adduunka dhabta ah. Algorithms-ka fudud ayaa fudud in la hagaajiyo oo aad u deggan xaaladaha cirifka.

Sidoo kale ka fikir macnaha guud ee koodhka lagu fulin doono. Xaaladeena, waxaan u baahanahay servero awood leh oo ku filan si loo maareeyo hawlaha asalka ah. Isticmaalayaashu waxay bilaabaan raadinta si aan badnayn, markaa waxaan amaahan karnaa koox dhan oo adeegayaal ah muddada gaaban ee loo baahan yahay si loo dhamaystiro raadinta kasta.

Annaga oo adeegsanayna hab xoog leh, waxaan ku hirgelinay baaritaan degdeg ah, la isku halleyn karo, dabacsanaan leh oo ka dhex jira qoryo. Waxaan rajeyneynaa in fikradahani ay faa'iido u leeyihiin mashaariicdaada.

Wax ka beddel: Cinwaanka iyo qoraalka waxay ka beddeleen "ka raadi 20 GB ilbiriqsikiiba" waxayna noqdeen "ka raadi 1 TB ilbiriqsikii" si loo muujiyo waxqabadka kor u kacay dhowrkii sano ee la soo dhaafay. Korodhkan xawliga ah waxa ugu horayn sabab u ah isbadelka ku yimi nooca iyo tirada adeegayaasha EC2 ee aanu maanta dhigayno si aanu ugu adeegno macaamiisheena korodhay. Waxaa jira isbeddello dhowaan soo socda kuwaas oo siin doona kobcin kale oo la taaban karo oo hufnaan hawleed, mana sugi karno inaan wadaagno.

Source: www.habr.com

Add a comment