Batla ka lebelo la 1 TB/s

TL; DR: Lilemong tse 'ne tse fetileng ke ile ka tlohela Google ka mohopolo oa sesebelisoa se secha sa ho beha leihlo. Sepheo e ne e le ho kopanya mesebetsi e atisang ho aroloa hore e be tšebeletso e le 'ngoe pokello le tlhahlobo ea log, pokello ea metrics, litlhokomeliso le li-dashboards. O mong oa melao-motheo ke hore tšebeletso e tlameha ho ba ea 'nete ka potlako, ho fana ka li-devops ka boiphihlelo bo bonolo, bo kopanetsoeng, bo monate. Sena se hloka ho sebetsana le li-data tsa li-gigabyte tse ngata ka likaroloana tsa motsotsoana ha u ntse u lula ka har'a tekanyetso. Lisebelisoa tse teng tsa ho laola li-log hangata li tsamaea butle ebile lia fokola, kahoo re ile ra tobana le phephetso e ntle: ho rala sesebelisoa ka bohlale ho fa basebelisi boiphihlelo bo bocha.

Sehlooho sena se hlalosa kamoo rona Scalyr re ileng ra rarolla bothata bona kateng ka ho sebelisa mekhoa ea khale ea sekolo, mokhoa oa ho sebelisa matla a sehlōhō, ho felisa likarolo tse sa hlokahaleng le ho qoba mekhoa e rarahaneng ea data. U ka sebelisa lithuto tsena ho mathata a hau a boenjiniere.

Matla a Sekolo sa Khale

Hangata tlhahlobo ea lintlha e qala ka ho batla: fumana melaetsa eohle e lumellanang le mokhoa o itseng. Ho Scalyr, tsena ke li-gigabyte tse mashome kapa tse makholo tse tsoang ho li-server tse ngata. Mekhoa ea sejoale-joale, joalo ka molao, e kenyelletsa kaho ea sebopeho sa data se rarahaneng se ntlafalitsoeng bakeng sa lipatlisiso. Ehlile ke bone sena ho Google, moo ba leng hantle haholo linthong tsa mofuta ona. Empa re ile ra lula ka mokhoa o hlakileng haholoanyane: ho lekola likoti ka mela. 'Me e ile ea sebetsa - re fana ka sebopeho se batlisisoang se nang le litaelo tsa boholo ka potlako ho feta bahlolisani ba rona (bona animation qetellong).

Taba ea bohlokoa e ne e le hore li-processor tsa sejoale-joale li potlakile haholo ts'ebetsong e bonolo, e otlolohileng. Sena se bonolo ho lahleheloa ke mekhoa e rarahaneng, e mengata e itšetlehileng ka lebelo la I / O le ts'ebetso ea marang-rang, 'me mekhoa e joalo e tloaelehile haholo kajeno. Kahoo re ile ra theha moralo o fokotsang marako le litšila tse feteletseng. Ka li-processor tse ngata le li-server tse tšoanang, lebelo la ho batla le fihla ho 1 TB motsotsoana.

Lintlha tse ka sehloohong tse nkiloeng sehloohong sena:

  • Patlisiso e matla ke mokhoa o sebetsang oa ho rarolla mathata a maholo a lefats'e.
  • Brute force ke mokhoa oa ho qapa, eseng tharollo e sa sebetseng. Joalo ka mokhoa o mong le o mong, e loketse mathata a mang ho feta a mang, 'me e ka sebelisoa hampe kapa hantle.
  • Brute Force e molemo ka ho khetheha bakeng sa ho finyella tsitsitseng tlhahiso.
  • Tšebeliso e nepahetseng ea matla a sehlōhō e hloka ho ntlafatsa khoutu le ho sebelisa lisebelisoa tse lekaneng ka nako e nepahetseng. E loketse haeba li-server tsa hau li le tlas'a mojaro o boima oo e seng oa basebelisi mme ts'ebetso ea mosebelisi e lula e le eona ntho e tlang pele.
  • Ts'ebetso e ipapisitse le moralo oa sistimi eohle, eseng feela algorithm ea loop e ka hare.

(Sehlooho sena se hlalosa ho batla lintlha ka mohopolong. Maemong a mangata, ha mosebeletsi a etsa lipatlisiso tsa log, li-server tsa Scalyr li se li ntse li e boloka. Sehlooho se latelang se tla tšohla ho batla li-logs tse sa tsejoeng. Melao-motheo e tšoanang e sebetsa: khoutu e sebetsang, matla a sehlōhō. e nang le lisebelisoa tse kholo tsa khomphutha).

Mokhoa oa brute force

Ka tloaelo, sete e kholo ea data e batlisisoa ho sebelisoa index ea mantsoe a sehlooho. Ha e sebelisoa ho li-logs tsa seva, sena se bolela ho batla lentsoe le leng le le leng le ikhethang ho log. Bakeng sa lentsoe ka leng, o hloka ho etsa lethathamo la likarolo tsohle. Sena se etsa hore ho be bonolo ho fumana melaetsa eohle e nang le lentsoe lena, mohlala 'error', 'firefox' kapa "transaction_16851951" - sheba feela ho index.

Ke sebelisitse mokhoa ona ho Google mme o sebelitse hantle. Empa ho Scalyr re batla li-logs byte byte.

Hobaneng? Ho latela pono ea algorithmic, li-index tsa mantsoe a bohlokoa li sebetsa hantle haholo ho feta lipatlisiso tse matla. Leha ho le joalo, ha re rekise li-algorithms, re rekisa ts'ebetso. 'Me tshebetso ha e bue feela ka li-algorithms, empa hape le ka boenjiniere ba tsamaiso. Re tlameha ho nahana ka ntho e 'ngoe le e' ngoe: boholo ba data, mofuta oa lipatlisiso, hardware e fumanehang le maemo a software. Re nkile qeto ea hore bakeng sa bothata ba rona, ntho e kang 'grep' e ne e loketse ho feta index.

Li-index li ntle, empa li na le mefokolo. Lentsoe le le leng le fumaneha habonolo. Empa ho batla melaetsa e nang le mantsoe a mangata, joalo ka 'googlebot' le '404', ho thata haholo. Ho batla poleloana e kang 'mokhelo uncaught' ho hloka index e boima haholoanyane e sa tlaleheng feela melaetsa eohle e nang le lentsoe leo, empa hape le sebaka se itseng sa lentsoe.

Bothata ba sebele bo tla ha u sa batle mantsoe. Ha re re u batla ho bona hore na sephethephethe se bokae se tsoang bots. Mohopolo oa pele ke ho batla likutung bakeng sa lentsoe 'bot'. Ena ke tsela eo u tla fumana bots: Googlebot, Bingbot le tse ling tse ngata. Empa mona 'bot' ha se lentsoe, empa ke karolo ea lona. Ha re batla 'bot' ho index, re ke ke ra fumana li-post tse nang le lentsoe 'Googlebot'. Haeba u sheba lentsoe le leng le le leng ka har'a index ebe u skena index ea mantsoe a bohlokoa a fumanoeng, patlo e tla fokotseha haholo. Ka lebaka leo, mananeo a mang a log ha a lumelle lipatlisiso tsa mantsoe kapa (ka ho fetisisa) a lumella syntax e khethehileng e nang le ts'ebetso e tlaase. Re batla ho qoba sena.

Bothata bo bong ke matšoao a puo. Na u batla ho fumana likopo tsohle ho 50.168.29.7? Ho thoe'ng ka debugging logs e nang le [error]? Lingoliloeng hangata li tlola matšoao.

Qetellong, baenjiniere ba rata lisebelisoa tse matla, 'me ka linako tse ling bothata bo ka rarolloa feela ka polelo e tloaelehileng. Lenane la mantsoe a sehlooho ha lea lokela sena haholo.

Ho feta moo, li-indices rarahaneng. Molaetsa o mong le o mong o hloka ho kenyelletsoa mananeng a 'maloa a mantsoe a sehlooho. Manane ana a lokela ho bolokoa ka mokhoa o batlisisang habonolo ka linako tsohle. Lipotso tse nang le lipoleloana, likhechana tsa mantsoe, kapa lipoleloana tse tloaelehileng li hloka ho fetoleloa hore e be mesebetsi ea manane a mangata, 'me liphetho li hlahlojoe le ho kopanngoa ho hlahisa sephetho. Boemong ba ts'ebeletso e kholo, e nang le batho ba bangata, ho rarahana hona ho baka litaba tsa ts'ebetso tse sa bonahaleng ha ho hlahlojoa li-algorithms.

Li-index tsa mantsoe a sehlooho le tsona li nka sebaka se ngata, 'me polokelo ke litšenyehelo tse kholo tsamaisong ea tsamaiso ea log.

Ka lehlakoreng le leng, patlo e 'ngoe le e' ngoe e ka ja matla a mangata a komporo. Basebelisi ba rona ba thabela lipatlisiso tse potlakileng tsa lipotso tse ikhethang, empa lipotso tse joalo li etsoa ka seoelo. Bakeng sa lipotso tse tloaelehileng tsa ho batla, mohlala, bakeng sa dashboard, re sebelisa mekhoa e khethehileng (re tla e hlalosa sehloohong se latelang). Likopo tse ling ha li fumanehe hangata hoo u sa hlokeng ho sebetsa tse fetang bonngoe ka nako. Empa sena ha se bolele hore li-server tsa rona ha li phathahane: li tšoarehile ka mosebetsi oa ho amohela, ho hlahloba le ho hatella melaetsa e mecha, ho hlahloba litlhokomeliso, ho hatella data ea khale, joalo-joalo. Kahoo, re na le phepelo ea bohlokoa ea li-processor tse ka sebelisoang ho etsa lipotso.

Brute Force e sebetsa haeba u na le bothata bo bobe (le matla a mangata)

Brute force e sebetsa hantle ka ho fetisisa mathateng a bonolo ka li-loops tse nyenyane tsa ka hare. Hangata o ka ntlafatsa loop ea kahare hore e sebetse ka lebelo le holimo haholo. Haeba khoutu e rarahane, ho thata haholo ho e ntlafatsa.

Khoutu ea rona ea ho batla qalong e ne e na le loop e kholo ea ka hare. Re boloka melaetsa maqepheng a 4K; leqephe ka leng le na le melaetsa (ho UTF-8) le metadata bakeng sa molaetsa ka mong. Metadata ke sebopeho se kenyelletsang bolelele ba boleng, ID ea molaetsa oa kahare, le likarolo tse ling. Potoloho ea ho batla e ne e shebahala tjena:

Batla ka lebelo la 1 TB/s

Ena ke mofuta o nolofalitsoeng oa khoutu ea 'nete. Empa le mona, ho beoa lintho tse ngata, likopi tsa data, le mehala ea ts'ebetso lia bonahala. JVM e ntle haholo ho ntlafatsa mehala ea ts'ebetso le ho fana ka lintho tsa ephemeral, kahoo khoutu ena e sebelitse hantle ho feta kamoo re neng re tšoanela. Nakong ea tlhahlobo, bareki ba e sebelisitse ka katleho. Empa qetellong re ile ra e isa boemong bo bong.

( U ka 'na ua botsa hore na ke hobane'ng ha re boloka melaetsa ka mokhoa ona ka maqephe a 4K, mongolo le metadata, ho e-na le ho sebetsa ka li-logs ka ho toba. Ho na le mabaka a mangata, a phehang taba ea hore ka hare ho mochine oa Scalyr o tšoana le database e abuoang ho feta Mokhoa oa ho batla mongolo hangata o kopanngoa le li-filters tsa mofuta oa DBMS ka mathoko ka mor'a ho arola logi

Qalong, ho ne ho bonahala eka khoutu e joalo e ne e sa tšoanelehe bakeng sa ho sebelisa matla a sehlōhō. "Mosebetsi oa 'nete" ho String.indexOf() ha ea ka ea laola profil ea CPU. Ke hore, ho ntlafatsa mokhoa ona feela ho ke ke ha tlisa phello e kholo.

Hoa etsahala hore re boloke metadata qalong ea leqephe le leng le le leng, 'me mongolo oa melaetsa eohle ho UTF-8 o tletse ka lehlakoreng le leng. Ho nka monyetla ka sena, re ngotse loop hape ho batla leqephe lohle hang-hang:

Batla ka lebelo la 1 TB/s

Phetolelo ena e sebetsa ka ho toba ponong raw byte[] 'me e batla melaetsa eohle hang-hang ho pholletsa le leqephe lohle la 4K.

Sena se bonolo haholo ho ntlafatsa mokhoa oa brute force. Loop ea ka hare ea ho batla e bitsoa ka nako e le 'ngoe bakeng sa leqephe lohle la 4K, ho e-na le ho arohana posong ka' ngoe. Ha ho na ho kopitsa data, ha ho kabo ea lintho. 'Me ts'ebetso e rarahaneng ea metadata e bitsoa feela ha sephetho se le ntle, eseng molaetsa o mong le o mong. Ka tsela ena re tlositse lithane tse ngata, 'me mojaro o setseng o tsepamisitsoe mofuteng o monyenyane oa ho batla oa ka hare, o loketseng hantle bakeng sa ntlafatso e eketsehileng.

Algorithm ea rona ea 'nete ea ho batla e ipapisitse le khopolo e ntle ea Leonid Volnitsky. E tšoana le algorithm ea Boyer-Moore, e tlōla hoo e ka bang bolelele ba khoele ea ho batla mohatong o mong le o mong. Phapang e kholo ke hore e hlahloba li-byte tse peli ka nako ho fokotsa lipapali tsa bohata.

Ts'ebetsong ea rona e hloka hore re thehe tafole ea tlhahlobo ea 64K bakeng sa patlisiso ka 'ngoe, empa seo ha se letho ha se bapisoa le li-gigabytes tsa data tseo re ntseng re li batla. Loop e ka hare e sebetsa li-gigabyte tse 'maloa ka motsotsoana mokokotlong o le mong. Ka ts'ebetso, ts'ebetso e tsitsitseng e ka bang 1,25 GB motsotsoana mokokotlong o mong le o mong, 'me ho na le sebaka sa ntlafatso. Hoa khonahala ho tlosa tse ling tse holimo ka ntle ho loop e ka hare, 'me re rera ho etsa liteko ka loop e ka hare ho C ho e-na le Java.

Re sebelisa matla

Re buisane ka hore ho batla li-log ho ka kengoa ts'ebetsong "hantle", empa re na le "matla" a makae? E ngata haholo.

1 konokono: Ha e sebelisoa ka nepo, konokono e le 'ngoe ea processor ea sejoale-joale e matla haholo ka boyona.

8 cores: Hona joale re ntse re sebetsa Amazon hi1.4xlarge le i2.4xlarge SSD li-server, e 'ngoe le e' ngoe e na le li-cores tse 8 (likhoele tse 16). Joalokaha ho boletsoe ka holimo, li-cores tsena hangata li phathahane ka ts'ebetso ea morao-rao. Ha mosebelisi a etsa patlisiso, ts'ebetso ea morao-rao e emisoa, e lokolla li-cores tse 8 bakeng sa ho batla. Hangata patlo e phethela ka motsotsoana o arohaneng, ka mor'a moo mosebetsi oa morao-rao o qala hape (lenaneo la throttling le tiisa hore lipotso tse ngata tsa lipatlisiso ha li kena-kenane le mosebetsi oa bohlokoa oa morao-rao).

16 cores: bakeng sa ho tšepahala, re hlophisa li-server ka lihlopha tsa master / makhoba. Mong'a e mong le e mong o na le SSD e le 'ngoe le seva se le seng sa EBS tlas'a taelo ea hae. Haeba seva se seholo se senyeha, seva sa SSD hang-hang se nka sebaka sa sona. Hoo e ka bang ka linako tsohle, monghali le lekhoba ba sebetsa hantle, e le hore sebaka se seng le se seng sa data se batlisisoe ho li-server tse peli tse fapaneng (seva sa makhoba sa EBS se na le processor e fokolang, kahoo ha re e nahane). Re arola mosebetsi pakeng tsa bona, e le hore re be le kakaretso ea li-cores tse 16 tse fumanehang.

Li-cores tse ngata: Haufinyane, re tla aba lintlha ho li-server ka tsela eo kaofela li nkang karolo ho sebetsaneng le kopo e 'ngoe le e 'ngoe e sa reng letho. Motheo o mong le o mong o tla sebetsa. [Hlokomela: re sebelisitse moralo mme ra eketsa lebelo la ho batla ho 1 TB / s, bona molaetsa qetellong ea sehlooho].

Bonolo bo netefatsa ho tšepahala

Molemo o mong oa mokhoa oa brute force ke ts'ebetso ea oona e tsitsitseng. Ka tloaelo, patlo ha e na taba haholo le lintlha tsa bothata le sete ea data (ke nahana hore ke ka lebaka leo e bitsoang "mahoashe").

Ka linako tse ling index ea mantsoe a sehlooho e hlahisa liphetho tse potlakileng haholo, 'me ka linako tse ling ha e etse joalo. Ha re re u na le 50 GB ea logs moo lentsoe 'customer_5987235982' le hlahang ka makhetlo a mararo hantle. Patlo ea lentsoe lena e bala libaka tse tharo ka kotloloho ho tsoa ho index mme e tla phethela hanghang. Empa lipatlisiso tse rarahaneng tsa li-wildcard li ka hlahloba likete tsa mantsoe a bohlokoa 'me tsa nka nako e telele.

Ka lehlakoreng le leng, lipatlisiso tsa brute force li etsa ka lebelo le lekanang kapa ka tlase ho potso efe kapa efe. Ho batla mantsoe a malelele ho molemo, empa ho batla motho a le mong ho potlakile haholo.

Mokhoa o bonolo oa mokhoa oa brute force o bolela hore ts'ebetso ea eona e haufi le boholo ba eona ba theory. Ho na le likhetho tse fokolang bakeng sa li-disk tse ngata tse sa lebelloang, likhang tsa senotlolo, ho lelekisa pointer, le mabaka a mang a likete a ho hloleha. Ke sa tsoa sheba likōpo tse entsoeng ke basebelisi ba Scalyr bekeng e fetileng ho seva sa rona se phathahaneng ka ho fetisisa. Ho ne ho e-na le likōpo tse 14 000. Hantle-ntle ba robeli ba bona ba nkile nako e fetang motsotsoana; 99% e phethiloe nakong ea 111 milliseconds (haeba ha u so sebelise lisebelisoa tsa tlhahlobo ea log, ntšepe: e potlakile).

Ts'ebetso e tsitsitseng, e ka tšeptjoang ke ea bohlokoa bakeng sa boiketlo ba tšebeliso ea tšebeletso. Haeba e lieha nako le nako, basebelisi ba tla e nka e sa tšepahale mme ba be leqe ho e sebelisa.

Ketso ea ho batla

Mona ke animation e khuts'oane e bonts'ang patlo ea Scalyr e sebetsa. Re na le ak'haonte ea demo moo re kenyang ketsahalo e 'ngoe le e' ngoe sebakeng se seng le se seng sa sechaba sa Github. Pontšong ena, ke hlahloba lintlha tsa bohlokoa tsa beke: hoo e ka bang 600 MB ea likutu tse tala.

Video e ile ea rekotoa ka ho hlaka, ntle le tokisetso e khethehileng, komporong ea ka (lik'hilomithara tse ka bang 5000 ho tloha ho seva). Tshebetso eo u tla e bona e bakoa haholo ke web client optimization, hammoho le backend e potlakileng le e ka tšeptjoang. Nako le nako ha ho e-ba le khefu ntle le letšoao la 'loading', ke 'na ea emang hore u bale seo ke seng ke tla se tobetsa.

Batla ka lebelo la 1 TB/s

Qetellong

Ha o sebetsana le data e ngata, ho bohlokoa ho khetha algorithm e ntle, empa "ntle" ha e bolele "majabajaba". Nahana ka hore na khoutu ea hau e tla sebetsa joang ts'ebetsong. Tlhahlobo ea theory ea algorithms e siea lintlha tse ling tse ka bang bohlokoa haholo lefatšeng la 'nete. Li-algorithms tse bonolo li bonolo ho li ntlafatsa ebile li tsitsitse maemong a mabe.

Hape nahana ka taba eo khoutu e tla etsoa ho eona. Tabeng ea rona, re hloka li-server tse matla ka ho lekaneng ho laola mesebetsi ea morao-rao. Basebelisi ba qala ho batlisisa hangata, kahoo re ka alima sehlopha sohle sa li-server ka nako e khuts'oane e hlokahalang ho phethela patlo ka 'ngoe.

Ka ho sebelisa mokhoa oa brute force, re ile ra kenya ts'ebetsong patlisiso e potlakileng, e tšepahalang, e feto-fetohang ho pholletsa le sehlopha sa lifate. Re tšepa hore maikutlo ana a na le thuso bakeng sa merero ea hau.

Fetola: Sehlooho le mongolo li fetohile ho tloha ho "Batla ka 20 GB ka motsotsoana" ho "Batla ho 1 TB ka motsotsoana" ho bontša keketseho ea ts'ebetso lilemong tse 'maloa tse fetileng. Keketseho ena ea lebelo e bakoa haholo ke liphetoho tsa mofuta le palo ea li-server tsa EC2 tseo re li etsang kajeno ho sebeletsa bareki ba rona ba ntseng ba eketseha. Ho na le liphetoho tse tlang haufinyane tse tla fana ka matlafatso e 'ngoe e makatsang ts'ebetsong ea ts'ebetso, 'me re se re emetse ho arolelana le tsona.

Source: www.habr.com

Eketsa ka tlhaloso