Wa ni 1 TB/s

TL; DR: Ni ọdun mẹrin sẹhin Mo fi Google silẹ pẹlu imọran fun irinṣẹ ibojuwo olupin tuntun kan. Ero naa ni lati ṣajọpọ awọn iṣẹ ti o ya sọtọ nigbagbogbo si iṣẹ kan gbigba ati itupalẹ log, ikojọpọ awọn metiriki, titaniji ati dasibodu. Ọkan ninu awọn ilana ni pe iṣẹ naa gbọdọ jẹ otitọ sare, pese awọn devops pẹlu irọrun, ibaraenisepo, iriri igbadun. Eyi nilo ṣiṣiṣẹ awọn eto data giga-gigabyte lọpọlọpọ ni awọn ida kan ti iṣẹju kan lakoko ti o wa laarin isuna. Awọn irinṣẹ iṣakoso log ti o wa tẹlẹ jẹ o lọra ati airọrun, nitorinaa a dojukọ ipenija to dara: ni ọgbọn ṣe apẹrẹ ohun elo kan lati fun awọn olumulo ni iriri tuntun.

Nkan yii ṣapejuwe bii awa ni Scalyr ṣe yanju iṣoro yii nipa lilo awọn ọna ile-iwe atijọ, ipa ọna agbara, imukuro awọn fẹlẹfẹlẹ ti ko wulo ati yago fun awọn ẹya data idiju. O le lo awọn ẹkọ wọnyi si awọn iṣoro imọ-ẹrọ tirẹ.

Agbara Ile-iwe Atijọ

Ṣiṣayẹwo wọle nigbagbogbo bẹrẹ pẹlu wiwa: wa gbogbo awọn ifiranṣẹ ti o baamu ilana kan. Ni Scalyr, iwọnyi jẹ mewa tabi awọn ọgọọgọrun gigabytes ti awọn akọọlẹ lati ọpọlọpọ awọn olupin. Awọn isunmọ ode oni, gẹgẹbi ofin, kan pẹlu ikole ti diẹ ninu awọn igbekalẹ data idiju iṣapeye fun wiwa. Dajudaju Mo ti rii eyi lori Google, nibiti wọn dara dara ni iru nkan yii. Sugbon a yanju lori kan Elo cruder ona: laini Antivirus ti awọn àkọọlẹ. Ati pe o ṣiṣẹ - a pese wiwo wiwa ti o jẹ awọn aṣẹ titobi yiyara ju awọn oludije wa (wo iwara ni ipari).

Imọye bọtini ni pe awọn ilana ode oni nyara nitootọ ni irọrun, awọn iṣẹ titọ. Eyi jẹ rọrun lati padanu ni eka, awọn ọna ṣiṣe pupọ-Layer ti o gbẹkẹle iyara I / O ati awọn iṣẹ nẹtiwọọki, ati iru awọn ọna ṣiṣe jẹ wọpọ pupọ loni. Nitorinaa a ṣe agbekalẹ apẹrẹ kan ti o dinku awọn fẹlẹfẹlẹ ati awọn idoti pupọ. Pẹlu awọn ero isise pupọ ati awọn olupin ni afiwe, iyara wiwa de 1 TB fun iṣẹju-aaya.

Awọn ọna gbigba lati inu nkan yii:

  • Wiwa agbara Brute jẹ ọna ti o le yanju fun lohun aye gidi, awọn iṣoro iwọn nla.
  • Agbara Brute jẹ ilana apẹrẹ, kii ṣe ojutu ti ko ni iṣẹ. Gẹgẹbi ilana eyikeyi, o dara julọ fun awọn iṣoro diẹ ju awọn miiran lọ, ati pe o le ṣe imuse ni ibi tabi daradara.
  • Agbara Brute dara julọ fun iyọrisi idurosinsin ise sise.
  • Lilo imunadoko ti agbara irorẹ nilo koodu iṣapeye ati lilo awọn orisun to ni akoko to tọ. O dara ti awọn olupin rẹ ba wa labẹ ẹru ti kii ṣe olumulo ati awọn iṣẹ olumulo wa ni pataki.
  • Iṣe ṣiṣe da lori apẹrẹ ti gbogbo eto, kii ṣe algorithm lupu inu nikan.

(Nkan yii ṣe apejuwe wiwa fun data ni iranti. Ni ọpọlọpọ igba, nigbati olumulo kan ba ṣe wiwa log, awọn olupin Scalyr ti ṣafipamọ rẹ tẹlẹ. Nkan ti o tẹle yoo jiroro wiwa fun awọn akọọlẹ ti ko ni ipamọ. Awọn ilana kanna lo: koodu daradara, agbara irokuro pẹlu awọn orisun iṣiro nla).

Brute agbara ọna

Ni aṣa, ṣeto data nla kan ni a wa nipa lilo atọka ọrọ-ọrọ kan. Nigbati a ba lo si awọn akọọlẹ olupin, eyi tumọ si wiwa gbogbo ọrọ alailẹgbẹ ninu akọọlẹ naa. Fun ọrọ kọọkan, o nilo lati ṣe atokọ ti gbogbo awọn ifisi. Eyi jẹ ki o rọrun lati wa gbogbo awọn ifiranṣẹ pẹlu ọrọ yii, fun apẹẹrẹ 'aṣiṣe', 'Firefox' tabi "transaction_16851951" - kan wo inu atọka.

Mo lo ọna yii ni Google ati pe o ṣiṣẹ daradara. Ṣugbọn ni Scalyr a wa awọn baiti igbasilẹ nipasẹ baiti.

Kí nìdí? Lati oju iwoye algorgoridimu alafojusi, awọn atọka ọrọ-ọrọ jẹ daradara diẹ sii ju awọn wiwa ipa-ọrọ lọ. Sibẹsibẹ, a ko ta algoridimu, a ta išẹ. Ati pe iṣẹ kii ṣe nipa awọn algoridimu nikan, ṣugbọn tun nipa imọ-ẹrọ awọn ọna ṣiṣe. A gbọdọ ronu ohun gbogbo: iwọn didun ti data, iru wiwa, ohun elo ti o wa ati agbegbe sọfitiwia. A pinnu pe fun iṣoro wa pato, ohun kan bi 'grep' dara julọ ju atọka lọ.

Awọn atọka jẹ nla, ṣugbọn wọn ni awọn idiwọn. Ọrọ kan rọrun lati wa. Ṣugbọn wiwa awọn ifiranṣẹ pẹlu awọn ọrọ lọpọlọpọ, gẹgẹbi 'googlebot' ati '404', nira pupọ sii. Wiwa gbolohun kan bii 'iyasọtọ ti a ko mu' nilo atọka ti o wuyi diẹ sii ti o ṣe igbasilẹ kii ṣe gbogbo awọn ifiranṣẹ pẹlu ọrọ yẹn nikan, ṣugbọn tun ipo kan pato ti ọrọ naa.

Iṣoro gidi wa nigbati o ko wa awọn ọrọ. Jẹ ki a sọ pe o fẹ lati rii iye ijabọ ti n bọ lati awọn bot. Ero akọkọ ni lati wa awọn akọọlẹ fun ọrọ 'bot'. Eyi ni bii iwọ yoo ṣe rii diẹ ninu awọn bot: Googlebot, Bingbot ati ọpọlọpọ awọn miiran. Ṣugbọn nibi 'bot' kii ṣe ọrọ kan, ṣugbọn apakan kan. Ti a ba wa 'bot' ninu atọka, a ko ni ri eyikeyi awọn ifiweranṣẹ pẹlu ọrọ 'Googlebot'. Ti o ba ṣayẹwo gbogbo ọrọ ti o wa ninu atọka ati lẹhinna ṣayẹwo atọka fun awọn koko-ọrọ ti a ri, wiwa yoo fa fifalẹ pupọ. Bi abajade, diẹ ninu awọn eto log ko gba laaye wiwa-ọrọ apakan tabi (ni dara julọ) gba sintasi pataki pẹlu iṣẹ ṣiṣe kekere. A fẹ lati yago fun eyi.

Iṣoro miiran jẹ aami ifamisi. Ṣe o fẹ lati wa gbogbo awọn ibeere lati 50.168.29.7? Kini nipa awọn akọọlẹ n ṣatunṣe aṣiṣe ti o ni [error]? Awọn iwe afọwọkọ maa n fo awọn aami ifamisi.

Nikẹhin, awọn onimọ-ẹrọ nifẹ awọn irinṣẹ agbara, ati nigbakan iṣoro kan le ṣee yanju nikan pẹlu ikosile deede. Atọka Koko ko dara pupọ fun eyi.

Ni afikun, awọn atọka eka. Ifiranṣẹ kọọkan nilo lati ṣafikun si awọn atokọ koko-ọrọ pupọ. Awọn atokọ wọnyi yẹ ki o tọju ni ọna kika ti o rọrun ni irọrun ni gbogbo igba. Awọn ibeere pẹlu awọn gbolohun ọrọ, awọn ajẹkù ọrọ, tabi awọn ikosile deede nilo lati tumọ si awọn iṣẹ ṣiṣe-ọpọlọpọ, ati awọn abajade ti ṣayẹwo ati ni idapo lati gbejade eto abajade kan. Ni aaye ti iwọn-nla, iṣẹ agbatọju pupọ, idiju yii ṣẹda awọn ọran iṣẹ ṣiṣe ti ko han nigbati o n ṣe itupalẹ awọn algoridimu.

Awọn atọka ọrọ-ọrọ tun gba aaye pupọ, ati ibi ipamọ jẹ idiyele pataki ninu eto iṣakoso log.

Ni apa keji, wiwa kọọkan le jẹ agbara iširo pupọ. Awọn olumulo wa mọrírì awọn wiwa iyara giga fun awọn ibeere alailẹgbẹ, ṣugbọn iru awọn ibeere bẹẹ jẹ ṣọwọn. Fun awọn ibeere wiwa aṣoju, fun apẹẹrẹ, fun dasibodu, a lo awọn ilana pataki (a yoo ṣe apejuwe wọn ni nkan ti nbọ). Awọn ibeere miiran kii ṣe loorekoore ti o ṣọwọn ni lati ṣe ilana diẹ sii ju ọkan lọ ni akoko kan. Ṣugbọn eyi ko tumọ si pe awọn olupin wa ko ṣiṣẹ: wọn n ṣiṣẹ lọwọ pẹlu iṣẹ gbigba, itupalẹ ati titẹ awọn ifiranṣẹ titun, ṣe iṣiro awọn itaniji, titẹkuro data atijọ, ati bẹbẹ lọ. Nitorinaa, a ni ipese pataki ti awọn iṣelọpọ ti o le ṣee lo lati ṣiṣẹ awọn ibeere.

Agbara Brute ṣiṣẹ ti o ba ni iṣoro aburu kan (ati ipa pupọ)

Agbara Brute ṣiṣẹ dara julọ lori awọn iṣoro ti o rọrun pẹlu awọn lupu inu kekere. Nigbagbogbo o le mu lupu inu inu lati ṣiṣẹ ni awọn iyara ti o ga pupọ. Ti koodu naa ba jẹ eka, o nira pupọ pupọ lati mu sii.

Koodu wiwa wa ni akọkọ ni lupu inu ti o tobi pupọ. A tọju awọn ifiranṣẹ lori awọn oju-iwe ni 4K; Oju-iwe kọọkan ni diẹ ninu awọn ifiranṣẹ (ni UTF-8) ati metadata fun ifiranṣẹ kọọkan. Metadata jẹ eto ti o ṣe koodu gigun ti iye, ID ifiranṣẹ inu, ati awọn aaye miiran. Ayika wiwa yii dabi eleyi:

Wa ni 1 TB/s

Eyi jẹ ẹya ti o rọrun ni akawe si koodu gangan. Ṣugbọn paapaa nibi, awọn ibi ohun pupọ, awọn ẹda data, ati awọn ipe iṣẹ han. JVM naa dara dara ni iṣapeye awọn ipe iṣẹ ati pinpin awọn nkan ephemeral, nitorinaa koodu yii ṣiṣẹ dara julọ ju ti a tọsi lọ. Lakoko idanwo, awọn alabara lo daradara ni aṣeyọri. Sugbon bajẹ a mu o si awọn tókàn ipele.

(O le beere idi ti a fi tọju awọn ifiranṣẹ ni ọna kika yii pẹlu awọn oju-iwe 4K, ọrọ ati metadata, dipo ki o ṣiṣẹ pẹlu awọn akọọlẹ taara. Awọn idi pupọ lo wa, eyiti o ṣan silẹ si otitọ pe inu ẹrọ Scalyr jẹ diẹ sii bi ibi ipamọ data pinpin ju kan lọ. Eto faili. Wiwa ọrọ nigbagbogbo ni idapo pẹlu awọn asẹ ara DBMS ni awọn ala lẹhin igbasilẹ log.

Ni ibẹrẹ, o dabi pe iru koodu ko dara pupọ fun iṣapeye agbara iro. "Iṣẹ gidi" ni String.indexOf() ko paapaa jẹ gaba lori profaili Sipiyu. Iyẹn ni, iṣapeye ọna yii nikan kii yoo mu ipa pataki kan.

O ṣẹlẹ pe a tọju metadata ni ibẹrẹ oju-iwe kọọkan, ati ọrọ ti gbogbo awọn ifiranṣẹ ni UTF-8 ti wa ni aba ti ni opin miiran. Ni anfani eyi, a tun ṣe lupu naa lati wa gbogbo oju-iwe ni ẹẹkan:

Wa ni 1 TB/s

Ẹya yii ṣiṣẹ taara lori wiwo raw byte[] ati wiwa gbogbo awọn ifiranṣẹ ni ẹẹkan kọja gbogbo oju-iwe 4K.

Eyi jẹ rọrun pupọ lati mu ki ọna ipa ti o buruju. Lupu wiwa inu inu ni a pe ni igbakanna fun gbogbo oju-iwe 4K, dipo lọtọ lori ifiweranṣẹ kọọkan. Ko si didaakọ data, ko si ipin awọn nkan. Ati pe awọn iṣẹ ṣiṣe metadata eka diẹ sii ni a pe nikan nigbati abajade jẹ rere, kii ṣe lori gbogbo ifiranṣẹ. Ni ọna yii a ti yọkuro pupọ ti oke, ati pe iyoku fifuye naa ni ogidi ni lupu wiwa inu inu kekere kan, eyiti o baamu daradara fun iṣapeye siwaju.

Alugoridimu wiwa gangan wa da lori imọran nla ti Leonid Volnitsky. O jẹ iru si algorithm Boyer-Moore, ṣifo ni isunmọ gigun ti okun wiwa ni igbesẹ kọọkan. Iyatọ akọkọ ni pe o ṣayẹwo awọn baiti meji ni akoko kan lati dinku awọn ere-kere eke.

Imuse wa nilo ṣiṣẹda tabili wiwa 64K fun wiwa kọọkan, ṣugbọn iyẹn kii ṣe nkankan ni akawe si gigabytes ti data ti a n wa nipasẹ. Awọn ilana ti inu ni ọpọlọpọ awọn gigabytes fun iṣẹju kan lori mojuto kan. Ni iṣe, iṣẹ iduroṣinṣin wa ni ayika 1,25 GB fun iṣẹju kan lori mojuto kọọkan, ati pe aye wa fun ilọsiwaju. O ti wa ni ṣee ṣe lati se imukuro diẹ ninu awọn ti awọn loke ita ti akojọpọ lupu, ati awọn ti a gbero lati ṣàdánwò pẹlu ohun akojọpọ lupu ni C dipo ti Java.

A nlo agbara

A ti jiroro pe wiwa log le jẹ imuse “ni aijọju”, ṣugbọn melo ni “agbara” ni a ni? Pupọ pupọ.

1 koko: Nigbati o ba lo bi o ti tọ, mojuto ẹyọkan ti ero isise ode oni jẹ agbara pupọ ni ẹtọ tirẹ.

8 ohun kohun: Lọwọlọwọ a nṣiṣẹ lori Amazon hi1.4xlarge ati i2.4xlarge SSD olupin, kọọkan pẹlu 8 ohun kohun (16 threads). Gẹgẹbi a ti sọ loke, awọn ohun kohun wọnyi n ṣiṣẹ nigbagbogbo pẹlu awọn iṣẹ abẹlẹ. Nigbati olumulo ba ṣe wiwa kan, awọn iṣẹ abẹlẹ ti daduro, ni idasilẹ gbogbo awọn ohun kohun 8 fun wiwa. Wiwa nigbagbogbo pari ni iṣẹju-aaya pipin, lẹhin eyi iṣẹ abẹlẹ tun bẹrẹ (eto throttling ṣe idaniloju pe awọn ibeere wiwa ko dabaru pẹlu iṣẹ abẹlẹ pataki).

16 ohun kohun: fun igbẹkẹle, a ṣeto awọn olupin sinu awọn ẹgbẹ titunto si / ẹrú. Ọga kọọkan ni SSD kan ati olupin EBS kan labẹ aṣẹ rẹ. Ti olupin akọkọ ba kọlu, olupin SSD lẹsẹkẹsẹ gba aaye rẹ. Fere gbogbo awọn akoko, titunto si ati ẹrú ṣiṣẹ itanran, ki kọọkan data Àkọsílẹ jẹ searchable lori meji ti o yatọ apèsè (EBS ẹrú olupin ni o ni kan ko lagbara isise, ki a ko ro o). A pin iṣẹ-ṣiṣe laarin wọn, ki a ni apapọ awọn ohun kohun 16 ti o wa.

Ọpọlọpọ awọn ohun kohun: Ni ọjọ iwaju ti o sunmọ, a yoo pin kaakiri data kọja awọn olupin ni ọna ti gbogbo wọn ṣe kopa ninu sisẹ gbogbo ibeere ti kii ṣe bintin. Gbogbo mojuto yoo ṣiṣẹ. [Akiyesi: a ṣe eto naa ati mu iyara wiwa pọ si 1 TB / s, wo akọsilẹ ni ipari nkan naa].

Irọrun ṣe idaniloju igbẹkẹle

Anfani miiran ti ọna agbara iro ni iṣẹ ṣiṣe deede rẹ. Ni deede, wiwa kii ṣe ifarabalẹ pupọ si awọn alaye iṣoro naa ati ṣeto data (Mo gboju pe iyẹn ni idi ti o fi n pe ni “isunmọ”).

Atọka Koko nigba miiran ṣe awọn abajade iyara iyalẹnu, ati awọn igba miiran kii ṣe. Jẹ ki a sọ pe o ni 50 GB ti awọn akọọlẹ ninu eyiti ọrọ 'customer_5987235982' farahan ni igba mẹta ni deede. Wiwa fun ọrọ yii ka awọn ipo mẹta taara lati itọka ati pe yoo pari lesekese. Ṣugbọn wiwa idiju wildcard le ṣe ọlọjẹ awọn ẹgbẹẹgbẹrun awọn koko-ọrọ ati gba akoko pipẹ.

Ní ọwọ́ kejì ẹ̀wẹ̀, àwọn ìṣàwárí ipa-ọ̀rọ̀ ṣe ní púpọ̀ sí i tàbí díẹ̀ síi ìyára kan náà fún ìbéèrè èyíkéyìí. Wiwa awọn ọrọ gigun dara julọ, ṣugbọn paapaa wiwa ohun kikọ kan jẹ iyara pupọ.

Ayedero ti ọna agbara iro tumọ si pe iṣẹ ṣiṣe rẹ sunmọ si iwọn imọ-jinlẹ rẹ. Awọn aṣayan diẹ ni o wa fun awọn apọju disiki airotẹlẹ, ariyanjiyan titiipa, ilepa atọka, ati ẹgbẹẹgbẹrun awọn idi miiran fun ikuna. Mo kan wo awọn ibeere ti awọn olumulo Scalyr ṣe ni ọsẹ to kọja lori olupin wa ti o nšišẹ julọ. Awọn ibeere 14 wa. Gangan mẹjọ ti wọn gba diẹ ẹ sii ju ọkan iṣẹju; 000% pari laarin 99 milliseconds (ti o ko ba ti lo awọn irinṣẹ itupalẹ log, gbẹkẹle mi: o yara).

Iduroṣinṣin, iṣẹ igbẹkẹle jẹ pataki fun irọrun ti lilo iṣẹ naa. Ti o ba jẹ lags lorekore, awọn olumulo yoo rii bi ko ṣe gbẹkẹle ati ki o lọra lati lo.

Wọle wiwa ni iṣe

Eyi ni ere idaraya kukuru kan ti o fihan wiwa Scalyr ni iṣe. A ni akọọlẹ demo nibiti a gbe wọle gbogbo iṣẹlẹ ni gbogbo ibi ipamọ Github ti gbogbo eniyan. Ninu demo yii, Mo ṣayẹwo iye data ti ọsẹ kan: isunmọ 600 MB ti awọn akọọlẹ aise.

Fidio naa ti gbasilẹ laaye, laisi igbaradi pataki, lori tabili tabili mi (bii awọn kilomita 5000 lati olupin naa). Iṣẹ ṣiṣe ti iwọ yoo rii jẹ pataki nitori ayelujara ose ti o dara ju, bi daradara bi a sare ati ki o gbẹkẹle backend. Nigbakugba ti idaduro ba wa laisi itọkasi 'ikojọpọ', o jẹ mi ni idaduro ki o le ka ohun ti Mo fẹ lati tẹ.

Wa ni 1 TB/s

Ni ipari

Nigbati o ba n ṣakoso awọn oye nla ti data, o ṣe pataki lati yan algorithm to dara, ṣugbọn “dara” ko tumọ si “Fancy.” Ronu nipa bi koodu rẹ yoo ṣiṣẹ ni iṣe. Itupalẹ imọ-jinlẹ ti awọn algoridimu jade diẹ ninu awọn ifosiwewe ti o le jẹ pataki ni agbaye gidi. Awọn algoridimu ti o rọrun rọrun lati mu dara ati iduroṣinṣin diẹ sii ni awọn ipo eti.

Tun ronu nipa ọrọ-ọrọ ninu eyiti koodu naa yoo ṣiṣẹ. Ninu ọran wa, a nilo awọn olupin ti o lagbara to lati ṣakoso awọn iṣẹ ṣiṣe abẹlẹ. Awọn olumulo bẹrẹ awọn wiwa ni igbagbogbo, nitorinaa a le yawo gbogbo ẹgbẹ awọn olupin fun igba kukuru ti o nilo lati pari wiwa kọọkan.

Lilo ọna agbara iro kan, a ṣe imuse iyara, igbẹkẹle, wiwa rọ kọja akojọpọ awọn akọọlẹ kan. A nireti pe awọn imọran wọnyi wulo fun awọn iṣẹ akanṣe rẹ.

Ṣatunkọ: Akọle ati ọrọ ti yipada lati "Ṣawari ni 20 GB fun iṣẹju kan" si "Ṣawari ni 1 TB fun iṣẹju-aaya" lati ṣe afihan awọn ilọsiwaju iṣẹ ni awọn ọdun diẹ sẹhin. Iwọn iyara yii jẹ nipataki nitori awọn iyipada ninu iru ati nọmba awọn olupin EC2 ti a n gbe soke loni lati ṣe iranṣẹ ipilẹ alabara ti o pọ si. Awọn ayipada wa laipẹ ti yoo pese igbelaruge iyalẹnu miiran ni ṣiṣe ṣiṣe, ati pe a ko le duro lati pin wọn.

orisun: www.habr.com

Fi ọrọìwòye kun