Rapua i te 1 TB/s

TL; DR: E wha tau ki muri ka wehe ahau i a Google me te whakaaro mo tetahi taputapu aroturuki tūmau hou. Ko te whakaaro ko te whakakotahi i nga mahi motuhake ki te ratonga kotahi kohikohi me te tātari rangitaki, te kohinga inenga, matohi me nga papatohu. Ko tetahi o nga maataapono me tino pono te mahi tere, whakarato devops ki te wheako ngāwari, pāhekoheko, pārekareka. Ko tenei me tukatuka i nga huinga raraunga maha-kikapaita i roto i nga hautau o te hekona ka noho i roto i te tahua. He puhoi, he puhoi hoki nga taputapu whakahaere rangitaki o naianei, no reira i pa ki a matou he wero pai: ma te mohio ki te hoahoa taputapu kia whai wheako hou ki nga kaiwhakamahi.

Ko tenei tuhinga e whakaatu ana me pehea ta matou o Scalyr i whakaoti i tenei raru ma te whakamahi i nga tikanga kura tawhito, te huarahi kaha, te whakakore i nga paparanga kore me te karo i nga hanganga raraunga uaua. Ka taea e koe te whakamahi i enei akoranga ki o raru miihini.

Te Mana Kura Tawhito

I te nuinga o te wa ka timata te tātari rangitaki ki te rapu: kimihia nga karere katoa e rite ana ki tetahi tauira. I roto i te Scalyr, he tekau, rau rau gigabytes enei o nga raarangi mai i te maha o nga tūmau. Ko nga huarahi hou, hei tikanga, ko te hanga i etahi hanganga raraunga matatini kua arotauhia mo te rapu. Kua tino kite ahau i tenei i runga i a Google, he tino pai ratou ki tenei momo mea. Engari i whakatauhia e matou he huarahi tino kino: te matawai rarangi o nga rakau. A i whai hua - ka whakaratohia e matou he atanga rapu he tere ake te tere atu i o taatau whakataetae (tirohia te hākoritanga i te mutunga).

Ko te maaramatanga matua he tino tere nga kaitoro hou ki nga mahi ngawari, ngawari. He ngawari tenei ki te ngaro i roto i nga punaha matatini, paparanga-maha e whakawhirinaki ana ki te tere I/O me nga mahi whatunga, a he tino noa enei punaha i enei ra. Na i whakawhanakehia e matou he hoahoa hei whakaiti i nga paparanga me nga otaota. Ma te maha o nga kaitoro me nga kaitoro i te whakarara, ka eke te tere rapu ki te 1 TB ia hekona.

Ko nga tangohanga matua mai i tenei tuhinga:

  • Ko te rapu Brute-force he huarahi e tika ana mo te whakaoti rapanga o te ao-tuuturu.
  • Ko te Brute Force he tikanga hoahoa, ehara i te otinga kore mahi. Ka rite ki tetahi tikanga, he pai ake ki etahi raruraru atu i etahi atu, ka taea te whakatinana i te kino, i te pai ranei.
  • He tino pai te kaha tutu mo te whakatutuki pūmau hua.
  • Ko te whakamahi whai hua o te kaha kino me arotau te waehere me te whakamahi rawaka i te wa tika. E tika ana mena kei raro i te taumaha o nga kaitoro kare-kaiwhakamahi ka noho hei kaupapa matua.
  • Ko nga mahinga ka whakawhirinaki ki te hoahoa o te punaha katoa, kaua ko te algorithm o roto noa.

(Ko tenei tuhinga e whakaatu ana i te rapu raraunga i roto i te mahara. I te nuinga o nga wa, ka mahia e te kaiwhakamahi he rapu rangitaki, kua keterokia e nga kaitoro Scalyr. Ko te tuhinga e whai ake nei ka korero mo te rapu i nga raarangi karekau. me nga rauemi rorohiko nui).

Tikanga kaha nanakia

I nga wa o mua, ka rapuhia he huinga raraunga nui ma te whakamahi i te taurangi kupu matua. Ina tono ki nga raarangi tūmau, ko te tikanga ko te rapu i nga kupu ahurei katoa i roto i te raarangi. Mo ia kupu, me hanga e koe he rarangi o nga whakaurunga katoa. Ma tenei ka ngawari te rapu i nga karere katoa me tenei kupu, hei tauira 'hapa', 'firefox' ranei "transaction_16851951" - titiro noa ki te taurangi.

I whakamahia e ahau tenei huarahi ki a Google a he pai te mahi. Engari i roto i te Scalyr ka rapua e matou nga raarangi paita ma te paita.

He aha? Mai i te tirohanga algorithmic abstract, he tino pai ake nga taupū kupu matua i nga rapunga kaha. Heoi, kaore matou e hoko algorithms, ka hokona e matou nga mahi. A ko nga mahi ehara i te mea mo te algorithms anake, engari mo te miihini punaha. Me whai whakaaro tatou ki nga mea katoa: te nui o nga raraunga, te momo rapunga, nga taputapu e waatea ana me te horopaki rorohiko. I whakatau matou mo to maatau raru, he pai ake te ahua o te 'grep' i te taurangi.

He rawe nga tohu, engari he herenga. Kotahi te kupu ngawari ki te kimi. Engari ko te rapu karere me nga kupu maha, penei i te 'googlebot' me te '404', he uaua ake. Ko te rapu kupu penei 'kare i mauhia' me whai taurangi uaua ake e tuhi ana i nga karere katoa me taua kupu, engari ko te waahi motuhake o te kupu.

Ko te tino uaua ka tae mai ki te kore koe e rapu kupu. Me kii e hiahia ana koe ki te kite i te nui o nga waka e puta mai ana i nga potae. Ko te whakaaro tuatahi ko te rapu i nga rakau mo te kupu 'bot'. Koinei te huarahi ka kitea e koe etahi bots: Googlebot, Bingbot me te maha atu. Engari i konei ko 'bot' ehara i te kupu, engari he wahanga. Mena ka rapua e tatou te 'bot' i roto i te taurangi, karekau e kitea nga panui me te kupu 'Googlebot'. Mena ka tirohia e koe nga kupu katoa i roto i te taurangi ka tirotirohia te tohu mo nga kupu matua ka kitea, ka tino heke te rapu. Ko te mutunga mai, karekau etahi o nga papatono raarangi e whakaae ki te rapu kupu-a-waha, (he pai rawa atu) te tuku wetereo motuhake me te iti o te mahi. E hiahia ana matou ki te karo i tenei.

Ko tetahi atu raruraru ko te tohu tohu. Kei te pirangi koe ki te rapu i nga tono katoa mai i 50.168.29.7? He aha te korero mo te patuiro i nga raarangi kei roto [error]? Ko te nuinga o nga wa ka pekehia e nga tuhinga tuhi nga tohu tohu.

Ka mutu, ka aroha nga miihini ki nga taputapu kaha, a, i etahi wa ka taea te whakatau i tetahi raru ma te whakahua noa. Ko te taurangi kupu matua kaore e tino pai mo tenei.

I tua atu, ko nga tohu matatini. Me taapiri ia karere ki etahi rarangi kupu matua. Me pupuri enei rarangi ki te whakatakotoranga ngawari ki te rapu i nga wa katoa. Ko nga paatai ​​me nga kianga, nga kongakonga kupu, me nga korero auau me whakamaori ki nga mahi rarangi-maha, ka karapahia, ka whakakotahihia nga hua ki te whakaputa i te huinga hua. I roto i te horopaki o te ratonga nui-nui, kairëti maha, ka hangaia e tenei uaua nga take mahi kaore e kitea i te wa e tarai ana i nga algorithms.

He nui hoki te waahi mo nga taurangi kupu matua, ko te rokiroki he utu nui i roto i te punaha whakahaere poro.

I tetahi atu taha, ka taea e ia rapu te pau te mana rorohiko. E maioha ana a matou kaiwhakamahi ki nga rapunga tere mo nga patai ahurei, engari he uaua te mahi penei. Mo nga uiui rapu angamaheni, hei tauira, mo te papatohu, ka whakamahia e matou nga tikanga motuhake (ka whakaahuahia e matou i roto i te tuhinga e whai ake nei). Ko etahi atu tono he iti noa, he uaua ki te mahi neke atu i te kotahi i ia wa. Engari ehara tenei i te mea karekau o maatau kaitoro i te pukumahi: kei te pukumahi ratou ki nga mahi tango, tātari me te kopiri i nga karere hou, te arotake matohi, te kopiri i nga raraunga tawhito, me era atu. No reira, kei a matou he tukunga tino nui o nga kaitukatuka ka taea te whakamahi ki te mahi uiui.

Ka whai hua te mahi nanakia mena he raru kino koe (me te kaha nui)

He pai rawa atu te mahi a te kaha nanakia ki nga raru ngawari me nga koropiko iti o roto. I te nuinga o nga wa ka taea e koe te arotau i te riipene o roto kia rere i nga tere tere. Mena he uaua te waehere, he uaua ake te arotau.

Ko ta matou waehere rapu i te tuatahi he tino nui o roto. Ka rokiroki matou i nga karere ki nga wharangi ki te 4K; kei ia wharangi etahi karere (kei te UTF-8) me nga raraunga meta mo ia karere. Ko te metadata he hanganga e whakawaehere ana i te roa o te uara, ID karere o roto, me etahi atu mara. He penei te ahua o te huringa rapu:

Rapua i te 1 TB/s

He putanga ngawari tenei o te waehere pono. Engari i konei, he maha nga tuunga ahanoa, kape raraunga, me nga waea mahi ka kitea. He tino pai te JVM ki te arotau i nga waea mahi me te tohatoha i nga mea ephemeral, no reira he pai ake te mahi o tenei waehere i to maatau. I te wa o te whakamatautau, i tino angitu nga kaihoko. Engari i te mutunga ka eke matou ki te taumata e whai ake nei.

(Ka patai pea koe he aha matou ka rongoa ai i nga karere ki tenei whakatakotoranga me nga wharangi 4K, tuhinga me nga metadata, kaua ki te mahi tika me nga raarangi. Pūnaha kōnae. He maha nga wa ka honohia te rapu kupu me nga whiriwhiringa ahua DBMS i nga tawhē i muri i te poroporo pororaka. Ka taea e tatou te rapu i nga mano tini o nga raarangi i te wa kotahi, a, kaore nga konae tuhinga ngawari e pai mo a maatau whakahaerenga raraunga whakawhiti, tukurua, tohatoha).

I te timatanga, ko te ahua kaore i tino pai te tohu mo te arotautanga kaha. "Mahi tino" i roto String.indexOf() karekau i kaha ki te kotaha PTM. Arā, ko te arotautanga o tenei tikanga anake kare e whai hua nui.

Ko te tikanga ka penapenahia e matou nga metadata i te timatanga o ia wharangi, ka kiki nga tuhinga o nga karere katoa i te UTF-8 ki tera pito. Ma te whakamahi i tenei, ka tuhia ano e matou te kopae ki te rapu i te wharangi katoa i te wa kotahi:

Rapua i te 1 TB/s

Ko tenei putanga ka mahi tika i runga i te tirohanga raw byte[] me te rapu i nga karere katoa i te wa kotahi puta noa i te wharangi 4K katoa.

He maamaa ake tenei ki te arotau mo te tikanga kaha tutu. Ka karangahia te kopae rapu o roto i te wa kotahi mo te wharangi 4K katoa, kaua ki te wehe i ia pou. Kaore he kape o nga raraunga, kaore he tohatoha o nga taonga. A ko nga mahi metadata uaua ka karangahia ina he pai te hua, kaua ki nga karere katoa. Ma tenei ara kua whakakorehia e matou he tone o runga ake, a ko te toenga o te uta ka kuhu ki roto i te riipene rapu iti o roto, e pai ana mo te arotautanga ake.

Ko ta maatau rapu algorithm kei runga whakaaro nui o Leonid Volnitsky. He rite ki te Boyer-Moore algorithm, mokowhiti i te roa o te aho rapu i ia taahiraa. Ko te rereketanga nui ko te tirotiro i nga paita e rua i te wa kotahi hei whakaiti i nga whakataetae teka.

Ko ta maatau whakatinanatanga me hanga he ripanga rapu 64K mo ia rapunga, engari he kore noa iho te whakataurite ki nga gigabytes o nga raraunga e rapuhia ana e matou. He maha nga gigabytes mo ia hekona i runga i te matua kotahi. I roto i te mahi, ko te mahi pumau kei te tata ki te 1,25 GB ia hekona i runga i ia matua, a he waahi hei whakapai ake. Ka taea te whakakore i etahi o nga waahanga o runga i waho o te kapiti o roto, a ka whakamahere matou ki te whakamatautau me te kowiri o roto i C hei utu mo Java.

Ka whakamahia e matou te kaha

Kua korerohia e maatau ka taea te "whakatika" te rapu pororakau, engari e hia te "mana" kei a tatou? Tino nui.

1 matua: Ina whakamahia tika, he tino kaha te uho kotahi o te tukatuka hou.

8 matua: Kei te rere matou i runga i te Amazon hi1.4xlarge me te i2.4xlarge SSD servers, ia me 8 cores (16 miro). Ka rite ki te korero i runga ake nei, kei te pukumahi enei matua ki nga mahi papamuri. I te wa e rapu ana te kaiwhakamahi, ka whakatarewahia nga mahi papamuri, ka whakawātea i te 8 matua mo te rapu. Ko te tikanga ka oti te rapunga i roto i te wehenga rua, ka mutu ka timata ano te mahi papamuri (ka whakarite te hotaka whakamaarama karekau te tini o nga patai rapu e whakararu i nga mahi papamuri nui).

16 matua: mo te pono, ka whakarite matou i nga kaitoro ki nga roopu rangatira/pononga. Kei ia rangatira kotahi SSD me tetahi tūmau EBS i raro i tana whakahau. Mena ka pakaru te tūmau matua, ka noho tonu te tūmau SSD. Tata ki nga wa katoa, he pai te mahi a te rangatira me te pononga, kia taea ai te rapu i ia poraka raraunga i runga i nga kaitoro rereke e rua (he ngoikore te tukatuka o te pononga pononga EBS, na reira kaore e whakaarohia e matou). Ka wehewehea e matou nga mahi ki waenga i a raatau, kia 16 nga waahanga e waatea ana.

He maha nga matua: I nga wa e heke mai nei, ka tohatohahia e matou nga raraunga puta noa i nga kaitoro kia whai waahi katoa ratou ki te tukatuka i nga tono kore-iti. Ka mahi nga matua katoa. [Tuhipoka: I whakatinanahia e matou te mahere me te whakanui ake i te tere rapu ki te 1 TB/s, tirohia te tuhipoka i te mutunga o te tuhinga].

Ma te ngawari e whakarite te pono

Ko tetahi atu painga o te tikanga tohe ko tona mahi rite tonu. Ko te tikanga, ko te rapunga kaore i te tino aro ki nga korero o te raru me te huinga raraunga (Ki taku whakaaro koinei te take i kiia ai he "maamaa").

Ko te taurangi kupu matua i etahi wa ka puta nga hua tino tere, me etahi wa kaore. Me kii kei a koe te 50 GB o nga raarangi ka puta te kupu 'customer_5987235982' e toru nga wa. Ko te rapu mo tenei kupu e toru nga waahi mai i te taurangi ka oti tonu. Engari ka taea e nga rapunga mohoao uaua te matawai i nga mano o nga kupumatua ka roa te waa.

I tetahi atu taha, he tere ake, iti iho ranei te tere o nga rapunga kaha mo tetahi patai. He pai ake te rapu kupu roa, engari he tere rawa te rapu mo te tangata kotahi.

Ko te ngawari o te tikanga mo te kaha kino, ko tana mahi e tata ana ki tona morahi ariā. He iti ake nga whiringa mo te taumahatanga o te kōpae ohorere, te tautohetohe maukati, te whai i te atatohu, me te maha atu o nga take i rahua ai. I titiro noa ahau ki nga tono a nga kaiwhakamahi Scalyr i tera wiki i runga i to maatau tino pukumahi. 14 nga tono. Neke atu i te kotahi te hēkona e waru o ratou; 000% kua oti i roto i te 99 manomano (mehemea kaore koe i whakamahi i nga taputapu tātari rangitaki, whakawhirinaki mai ki ahau: he tere).

He mea nui te mahi pumau, pono mo te ngawari ki te whakamahi i te ratonga. Mena ka takahuri i ia wa, ka kite nga kaiwhakamahi he kore pono, ka kore e pai ki te whakamahi.

Takiuru rapu i roto i te mahi

Anei he pakiwaituhi poto e whakaatu ana i te mahi rapu a Scalyr. Kei a matou he putea demo e kawemai ana i nga huihuinga katoa i roto i nga purongo Github whanui. I roto i tenei whakaaturanga, ka tirohia e au te utu o nga raraunga mo te wiki: tata ki te 600 MB o nga raarangi mata.

Ko te ataata i tuhia ora, kaore he whakaritenga motuhake, i runga i taku papamahi (mo te 5000 kiromita mai i te tūmau). Ko te mahinga ka kite koe na te nuinga arotautanga kiritaki tukutuku, me te hokinga tere me te pono. I nga wa katoa he okiokinga kaore he tohu 'uta', ka tatari ahau kia panui koe i nga mea ka pehia e au.

Rapua i te 1 TB/s

I te mutunga

I te wa e tukatuka ana i te nui o nga raraunga, he mea nui ki te whiriwhiri i te algorithm pai, engari ko te "pai" ehara i te "ahuareka." Whakaarohia me pehea te mahi o to waehere i roto i nga mahi. Ko te tātaritanga ariā o nga hātepee ka waiho etahi mea ka tino nui ki te ao tuuturu. He ngawari ake te arotau i nga algorithms ngawari ake me te pumau i nga ahuatanga o te taha.

Whakaarohia hoki te horopaki e mahia ai te waehere. I roto i a maatau, me tino kaha taatau ki te whakahaere i nga mahi papamuri. He iti noa nga mahi rapu a nga kaiwhakamahi, na reira ka taea e matou te nama he roopu katoa o nga kaitoro mo te wa poto hei whakaoti i ia rapunga.

Ma te whakamahi i te tikanga taikaha, i whakatinanahia e matou he rapunga tere, pono, ngawari puta noa i te huinga rakau. Ko te tumanako ka whai hua enei whakaaro mo o kaupapa.

Whakatika: Kua huri te taitara me te tuhinga mai i te "Rapu i te 20 GB ia hēkona" ki te "Rapu i te 1 TB ia hēkona" hei whakaata i te pikinga o nga mahi i roto i nga tau kua hipa. Ko tenei pikinga o te tere na te whakarereketanga o te momo me te maha o nga kaitoro EC2 e tukuna ana e matou i tenei ra ki te mahi i to maatau kaihoko kua piki ake. Kei te tata tonu nga huringa ka nui ake te kaha o nga mahi whakahaere, a kare e taea e matou te tatari ki te whakapuaki.

Source: will.com

Tāpiri i te kōrero