Rannsaich aig astar 1 TB/s

TL; DR: O chionn ceithir bliadhna dh’ fhàg mi Google le beachd airson inneal sgrùdaidh frithealaiche ùr. B’ e am beachd gnìomhan mar as trice iomallach a chur còmhla ann an aon sheirbheis cruinneachadh agus mion-sgrùdadh log, cruinneachadh meatrach, rabhaidhean agus clàran-amais. Is e aon de na prionnsapalan gum feum an t-seirbheis a bhith dha-rìribh luath, a’ toirt eòlas furasta, eadar-ghnìomhach, tlachdmhor dha devops. Feumaidh seo seataichean dàta ioma-gigabyte a ghiullachd ann am bloighean diog fhad ‘s a tha iad a’ fuireach taobh a-staigh a ’bhuidseit. Tha na h-innealan riaghlaidh logaichean a th’ ann mar-thà gu tric slaodach agus clunky, agus mar sin bha dùbhlan math romhainn: a’ dealbhadh inneal gu sgiobalta gus eòlas ùr a thoirt do luchd-cleachdaidh.

Tha an artaigil seo a’ mìneachadh mar a dh’ fhuasgail sinne aig Scalyr an duilgheadas seo le bhith a’ cleachdadh seann dhòighean sgoile, dòigh-obrach brùideil, cuir às do shreathan neo-riatanach agus a’ seachnadh structaran dàta iom-fhillte. Faodaidh tu na leasanan sin a chuir an sàs anns na duilgheadasan innleadaireachd agad fhèin.

Cumhachd na Seann Sgoile

Mar as trice bidh mion-sgrùdadh log a’ tòiseachadh le sgrùdadh: lorg a h-uile teachdaireachd a tha a rèir pàtran sònraichte. Ann an Scalyr, is iad sin deichean no ceudan de gigabytes de logaichean bho iomadh frithealaiche. Tha dòighean-obrach ùr-nodha, mar riaghailt, a’ toirt a-steach togail structar dàta iom-fhillte air a bharrrachadh airson sgrùdadh. Tha mi gu cinnteach air seo fhaicinn air Google, far a bheil iad gu math math air an seòrsa rud seo. Ach shocraich sinn air dòigh-obrach mòran nas miosa: sganadh sreathach de logaichean. Agus dh ’obraich e - bidh sinn a’ toirt seachad eadar-aghaidh a ghabhas sgrùdadh a tha òrdughan meudachd nas luaithe na na farpaisich againn (faic beòthalachd aig an deireadh).

B’ e am prìomh shealladh gu bheil pròiseasairean an latha an-diugh gu math luath aig gnìomhachd sìmplidh, neo-fhillte. Tha seo furasta a chall ann an siostaman iom-fhillte, ioma-fhilleadh a tha an urra ri astar I/O agus gnìomhachd lìonra, agus tha siostaman mar sin gu math cumanta an-diugh. Mar sin leasaich sinn dealbhadh a lughdaicheas sreathan agus cus sprùilleach. Le grunn phròiseasan agus luchd-frithealaidh aig an aon àm, bidh an astar sgrùdaidh a’ ruighinn 1 TB gach diog.

Prìomh bhuannachdan bhon artaigil seo:

  • Tha sgrùdadh feachd brute na dhòigh obrachail airson fuasgladh fhaighinn air duilgheadasan mòra san t-saoghal.
  • Is e dòigh dealbhaidh a th’ ann am feachd brute, chan e fuasgladh gun obair. Coltach ri innleachd sam bith, tha e nas freagarraiche airson cuid de dhuilgheadasan na cuid eile, agus faodar a chuir an gnìomh gu dona no gu math.
  • Tha feachd brute gu sònraichte math airson a choileanadh seasmhach cinneasachd.
  • Feumaidh cleachdadh èifeachdach de fheachd brùideil còd a bharrachadh agus goireasan gu leòr a chuir an sàs aig an àm cheart. Tha e iomchaidh ma tha na frithealaichean agad fo luchd trom neo-chleachdaiche agus gu bheil gnìomhachd luchd-cleachdaidh fhathast na phrìomhachas.
  • Tha coileanadh an urra ri dealbhadh an t-siostam gu lèir, chan e dìreach an algairim lùb a-staigh.

(Tha an artaigil seo ag innse mu bhith a’ lorg dàta mar chuimhneachan. Anns a’ mhòr-chuid de chùisean, nuair a nì neach-cleachdaidh sgrùdadh log, tha na frithealaichean Scalyr air a thasgadh mar-thà. Bruidhnidh an ath artaigil mu bhith a’ lorg logaichean gun tasgadh. Bidh na h-aon phrionnsapalan an sàs: còd èifeachdach, feachd brùideil le goireasan coimpiutaireachd mòr).

Modh brute force

Gu traidiseanta, thathas a’ sgrùdadh seata dàta mòr a’ cleachdadh clàr-amais prìomh fhacal. Nuair a thèid a chuir an sàs ann an logaichean frithealaiche, tha seo a’ ciallachadh a bhith a’ lorg a h-uile facal sònraichte sa loga. Airson gach facal, feumaidh tu liosta a dhèanamh de gach in-ghabhail. Tha seo ga dhèanamh furasta a h-uile brath a lorg leis an fhacal seo, mar eisimpleir 'mearachd', 'firefox' no "transaction_16851951" - dìreach seall sa chlàr-amais.

Chleachd mi an dòigh-obrach seo aig Google agus dh’ obraich e gu math. Ach ann an Scalyr bidh sinn a’ sgrùdadh nan logaichean byte le byte.

Carson? Bho shealladh algorithmach eas-chruthach, tha clàran-amais prìomh fhaclan tòrr nas èifeachdaiche na rannsachaidhean feachd brùideil. Ach, cha bhith sinn a’ reic algorithms, bidh sinn a’ reic coileanadh. Agus tha coileanadh chan ann a-mhàin mu dheidhinn algorithms, ach cuideachd mu innleadaireachd shiostaman. Feumaidh sinn beachdachadh air a h-uile càil: meud an dàta, an seòrsa sgrùdaidh, bathar-cruaidh a tha ri fhaighinn agus co-theacsa bathar-bog. Cho-dhùin sinn airson ar duilgheadas sònraichte, gu robh rudeigin mar 'grep' nas freagarraiche na clàr-amais.

Tha clàran-amais math, ach tha crìochan aca. Tha aon fhacal furasta a lorg. Ach tha e tòrr nas duilghe a bhith a’ lorg teachdaireachdan le iomadh facal, leithid ‘googlebot’ agus ‘404’. Tha feum air clàr-amais nas duilghe a bhith a’ lorg abairt mar ‘uncaught eisgeachd’ a bhios a’ clàradh chan e a-mhàin a h-uile teachdaireachd leis an fhacal sin, ach cuideachd far a bheil am facal sònraichte.

Thig an fhìor dhuilgheadas nuair nach eil thu a’ coimhead airson faclan. Canaidh sinn gu bheil thu airson faicinn dè an trafaic a tha a’ tighinn bho bhotan. Is e a’ chiad bheachd a bhith a’ sgrùdadh nan logaichean airson an fhacail ‘bot’. Seo mar a lorgas tu cuid de bhotan: Googlebot, Bingbot agus mòran eile. Ach an seo chan e facal a th’ ann an ‘bot’, ach pàirt dheth. Ma nì sinn rannsachadh airson 'bot' sa chlàr-amais, chan fhaigh sinn post sam bith leis an fhacal 'Googlebot'. Ma nì thu sgrùdadh air a h-uile facal sa chlàr-amais agus an uairsin sgrùdadh a dhèanamh air a’ chlàr-amais airson na prìomh fhaclan a chaidh a lorg, thig an rannsachadh sìos gu mòr. Mar thoradh air an sin, chan eil cuid de phrògraman log a 'ceadachadh rannsachaidhean pàirt-fhacal no (aig a' char as fheàrr) a 'ceadachadh co-chòrdadh sònraichte le coileanadh nas ìsle. Tha sinn airson seo a sheachnadh.

Is e duilgheadas eile puingeachadh. A bheil thu airson a h-uile iarrtas a lorg bho 50.168.29.7? Dè mu dheidhinn logaichean debugging anns a bheil [error]? Mar as trice bidh fo-sgrìobhaidhean a’ seachnadh puingeachadh.

Mu dheireadh, tha innleadairean dèidheil air innealan cumhachdach, agus uaireannan chan urrainnear duilgheadas fhuasgladh ach le faireachdainn cunbhalach. Chan eil an clàr-amais prìomh fhacal gu math freagarrach airson seo.

A bharrachd air an sin, tha na clàran-amais iom-fhillte. Feumaidh gach teachdaireachd a bhith air a chur ri grunn liostaichean prìomh fhaclan. Bu chòir na liostaichean seo a chumail ann an cruth a tha furasta a rannsachadh fad na h-ùine. Feumar ceistean le abairtean, criomagan fhaclan, no abairtean cunbhalach a thionndadh gu gnìomhachd ioma-liosta, agus na toraidhean a sganadh agus a chur còmhla gus seata thoraidhean a thoirt gu buil. Ann an co-theacsa seirbheis mòr, ioma-mhàladair, tha an iom-fhillteachd seo a’ cruthachadh cùisean dèanadais nach fhaicear nuair a thathar a’ dèanamh anailis air na h-algorithms.

Bidh clàran-amais prìomh fhaclan cuideachd a’ gabhail tòrr àite, agus tha stòradh na chosgais mhòr ann an siostam riaghlaidh logaichean.

Air an làimh eile, faodaidh gach sgrùdadh tòrr cumhachd coimpiutaireachd ithe. Tha an luchd-cleachdaidh againn a’ cur luach air rannsachaidhean aig astar luath airson ceistean gun samhail, ach is ann ainneamh a thèid ceistean mar sin a dhèanamh. Airson ceistean sgrùdaidh àbhaisteach, mar eisimpleir, airson deas-bhòrd, bidh sinn a’ cleachdadh dhòighean sònraichte (mìnichidh sinn iad san ath artaigil). Is ann ainneamh a bhios iarrtasan eile agus is ann ainneamh a bhios agad ri barrachd air aon a làimhseachadh aig an aon àm. Ach chan eil seo a’ ciallachadh nach eil na frithealaichean againn trang: tha iad trang leis an obair a bhith a’ faighinn, a’ mion-sgrùdadh agus a’ teannachadh teachdaireachdan ùra, a’ measadh rabhaidhean, a’ teannachadh seann dàta, agus mar sin air adhart. Mar sin, tha solar meadhanach mòr de phròiseasan againn a dh'fhaodar a chleachdadh gus ceistean a chuir an gnìomh.

Bidh feachd brùideil ag obair ma tha duilgheadas brùideil agad (agus tòrr feachd)

Bidh feachd brùideil ag obair as fheàrr air duilgheadasan sìmplidh le lùban beaga a-staigh. Gu math tric faodaidh tu an lùb a-staigh a bharrachadh gus ruith aig astaran fìor àrd. Ma tha an còd iom-fhillte, tha e tòrr nas duilghe a mheudachadh.

Bha lùb a-staigh meadhanach mòr aig a’ chòd sgrùdaidh againn an toiseach. Bidh sinn a’ stòradh teachdaireachdan air duilleagan aig 4K; tha cuid de theachdaireachdan air gach duilleag (ann an UTF-8) agus meata-dàta airson gach teachdaireachd. Tha meata-dàta na structar a tha a’ còdachadh fad an luach, ID teachdaireachd a-staigh, agus raointean eile. Bha an cearcall sgrùdaidh a’ coimhead mar seo:

Rannsaich aig astar 1 TB/s

Is e seo dreach nas sìmplidhe den fhìor chòd. Ach eadhon an seo, tha grunn àiteachan cuspair, lethbhric dàta, agus gairmean gnìomh rim faicinn. Tha an JVM gu math math air gairmean gnìomh a bharrachadh agus a bhith a’ riarachadh nithean geàrr-ùine, agus mar sin dh’ obraich an còd seo na b’ fheàrr na bha sinn airidh air. Rè na deuchainn, chleachd luchd-ceannach e gu math soirbheachail. Ach mu dheireadh thug sinn chun ath ìre e.

(Faodaidh tu faighneachd carson a tha sinn a’ stòradh teachdaireachdan san fhòrmat seo le duilleagan 4K, teacsa agus meata-dàta, seach a bhith ag obair le logaichean gu dìreach. Tha iomadh adhbhar ann a tha a’ ciallachadh gu bheil einnsean Scalyr air an taobh a-staigh nas coltaiche ri stòr-dàta sgaoilte na stòr-dàta sgaoilte. Bidh sgrùdadh teacsa gu tric air a chur còmhla ri sìoltachain ann an stoidhle DBMS air na h-iomaill às deidh parsadh logaichean. Is urrainn dhuinn mòran mhìltean de logaichean a sgrùdadh aig an aon àm, agus chan eil faidhlichean teacsa sìmplidh freagarrach airson ar riaghladh dàta gnìomh, ath-riochdachadh, sgaoilte).

An toiseach, bha e coltach nach robh a leithid de chòd gu math freagarrach airson optimization feachd brute. "Fìor obair" ann an String.indexOf() cha robh smachd aige eadhon air ìomhaigh CPU. Is e sin, cha toireadh an dòigh-obrach seo leis fhèin buaidh mhòr.

Tha e a’ tachairt mar sin gu bheil sinn a’ stòradh meata-dàta aig toiseach gach duilleag, agus tha teacsa a h-uile teachdaireachd ann an UTF-8 pacaichte aig a’ cheann eile. A’ gabhail brath air seo, rinn sinn ath-sgrìobhadh air an lùb gus an duilleag gu lèir a sgrùdadh sa bhad:

Rannsaich aig astar 1 TB/s

Bidh an dreach seo ag obair gu dìreach air an t-sealladh raw byte[] agus a’ sgrùdadh a h-uile teachdaireachd aig an aon àm thairis air an duilleag 4K gu lèir.

Tha seo mòran nas fhasa a dhèanamh nas fheàrr airson an dòigh feachd brùideil. Canar an lùb sgrùdaidh a-staigh aig an aon àm airson an duilleag 4K gu lèir, seach a bhith fa leth air gach post. Chan eil lethbhreac de dhàta ann, chan eil riarachadh de nithean ann. Agus chan eil gnìomhachd meata-dàta nas iom-fhillte air an ainmeachadh ach nuair a tha an toradh dearbhach, agus chan ann air a h-uile teachdaireachd. San dòigh seo tha sinn air cuir às do thunna de chòrr, agus tha an còrr den luchd air a chuimseachadh ann an lùb sgrùdaidh beag a-staigh, a tha gu math freagarrach airson tuilleadh optimization.

Tha an fhìor algorithm sgrùdaidh againn stèidhichte air deagh bheachd Leonid Volnitsky. Tha e coltach ri algorithm Boyer-Moore, a’ leum timcheall air fad an t-sreang sgrùdaidh aig gach ceum. Is e am prìomh eadar-dhealachadh gu bheil e a’ sgrùdadh dà bytes aig an aon àm gus geamannan meallta a lughdachadh.

Feumaidh ar buileachadh clàr sgrùdaidh 64K a chruthachadh airson gach sgrùdadh, ach chan eil sin dad an taca ris na gigabytes de dhàta a tha sinn a’ sgrùdadh. Bidh an lùb a-staigh a’ pròiseas grunn gigabytes gach diog air aon chridhe. Ann an cleachdadh, tha coileanadh seasmhach timcheall air 1,25 GB gach diog air gach cridhe, agus tha àite ann airson leasachadh. Tha e comasach cuir às do chuid den os cionn taobh a-muigh an lùb a-staigh, agus tha sinn an dùil feuchainn air lùb a-staigh ann an C an àite Java.

Bidh sinn a’ cleachdadh feachd

Tha sinn air bruidhinn gum faodar sgrùdadh logaichean a chuir an gnìomh “timcheall air”, ach dè an ìre de “chumhachd” a th’ againn? An ìre mhath.

1 cridhe: Nuair a thèid a chleachdadh gu ceart, tha aon chridhe de phròiseasar ùr-nodha gu math cumhachdach ann fhèin.

8 coir: Tha sinn an-dràsta a’ ruith air frithealaichean Amazon hi1.4xlarge agus i2.4xlarge SSD, gach fear le coraichean 8 (snàithleanan 16). Mar a chaidh ainmeachadh gu h-àrd, mar as trice bidh na coraichean sin trang le gnìomhachd cùl-fhiosrachaidh. Nuair a nì an neach-cleachdaidh sgrùdadh, tha gnìomhachd cùl-fhiosrachaidh air a chuir dheth, a’ saoradh na 8 cores gu lèir airson sgrùdadh. Mar as trice bidh an rannsachadh a’ crìochnachadh ann an diog sgoltadh, agus às deidh sin bidh obair cùl-fhiosrachaidh a’ tòiseachadh a-rithist (bidh am prògram smeòrach a’ dèanamh cinnteach nach cuir casg cheistean rannsachaidh bacadh air obair cùl-fhiosrachaidh cudromach).

16 coir: airson earbsachd, bidh sinn ag eagrachadh luchd-frithealaidh ann am buidhnean maighstirean/tràillean. Tha aon SSD agus aon fhrithealaiche EBS aig gach maighstir fo a cheannas. Ma thuiteas am prìomh fhrithealaiche, gabhaidh am frithealaiche SSD àite sa bhad. Cha mhòr fad na h-ùine, bidh maighstir agus tràill ag obair gu math, gus am bi gach bloc dàta air a sgrùdadh air dà fhrithealaiche eadar-dhealaichte (tha pròiseasar lag aig frithealaiche tràillean EBS, agus mar sin chan eil sinn ga mheas). Bidh sinn a’ roinn na h-obrach eatorra, gus am bi 16 cores againn uile gu lèir rim faighinn.

Mòran cores: Ann an aithghearrachd, bidh sinn a 'sgaoileadh dàta thar luchd-frithealaidh ann an dòigh a bhios iad uile a' gabhail pàirt ann a bhith a 'giullachd gach iarrtas nach eil cho beag. Bidh gach cridhe ag obair. [An aire: chuir sinn am plana an gnìomh agus mheudaich sinn an astar sgrùdaidh gu 1 TB / s, faic an nota aig deireadh an artaigil].

Bidh sìmplidheachd a’ dèanamh cinnteach à earbsachd

Is e buannachd eile den dòigh feachd brùideil a choileanadh gu math cunbhalach. Mar as trice, chan eil rannsachadh gu math mothachail air mion-fhiosrachadh na trioblaid agus an t-seata dàta (tha mi creidsinn gur e sin as coireach gur e “garbh”) a chanar ris).

Bidh an clàr-amais prìomh fhaclan uaireannan a 'toirt a-mach toraidhean fìor luath, agus amannan eile chan eil e. Canaidh sinn gu bheil 50 GB de logaichean agad anns a bheil am facal ‘customer_5987235982’ a’ nochdadh dìreach trì tursan. Bidh rannsachadh airson an teirm seo a’ cunntadh trì àiteachan gu dìreach bhon chlàr-amais agus crìochnaichidh e sa bhad. Ach faodaidh rannsachaidhean cairt-fiadhaich iom-fhillte na mìltean de phrìomh fhaclan a sganadh agus ùine mhòr a thoirt.

Air an làimh eile, bidh rannsachaidhean feachd brùideil a’ coileanadh aig an aon astar cha mhòr no nas lugha airson ceist sam bith. Tha e nas fheàrr faclan fada a lorg, ach tha eadhon a bhith a’ lorg aon charactar gu math luath.

Tha sìmplidheachd modh feachd brùideil a’ ciallachadh gu bheil a choileanadh faisg air an ìre as àirde ann an teòiridheach. Tha nas lugha de roghainnean ann airson cus luchdan diosc ris nach robh dùil, connspaid glasaidh, ruith chomharran, agus mìltean de dh’ adhbharan eile airson fàiligeadh. Thug mi sùil air na h-iarrtasan a rinn luchd-cleachdaidh Scalyr an t-seachdain sa chaidh air an t-seirbheisiche as trainge againn. Bha 14 iarrtas ann. Thug dìreach ochd dhiubh barrachd air aon diog; Chrìochnaich 000% taobh a-staigh 99 milliseconds (mura h-eil thu air innealan sgrùdaidh log a chleachdadh, earbsa mi: tha e luath).

Tha coileanadh seasmhach, earbsach cudromach airson an t-seirbheis a chleachdadh gu furasta. Ma thèid e air ais bho àm gu àm, bidh luchd-cleachdaidh ga fhaicinn mar neo-earbsach agus leisg a chleachdadh.

Log a lorg ann an gnìomh

Seo dealbh-beò goirid a sheallas rannsachadh Scalyr ag obair. Tha cunntas demo againn far am bi sinn a’ toirt a-steach gach tachartas anns a h-uile ionad poblach Github. Anns an demo seo, bidh mi a’ sgrùdadh luach seachdain de dhàta: timcheall air 600 MB de logaichean amh.

Chaidh a 'bhidio a chlàradh beò, gun ullachadh sònraichte, air an deasg agam (mu 5000 cilemeatair bhon fhrithealaiche). Tha an coileanadh a chì thu gu ìre mhòr mar thoradh air optimization teachdaiche lìn, a bharrachd air cùl-taic luath is earbsach. Nuair a bhios stad ann às aonais comharra ‘luchdachadh’, tha mi a’ stad gus an leugh thu na tha mi gu bhith a’ brùthadh.

Rannsaich aig astar 1 TB/s

Ann an co-dhùnadh

Nuair a bhios tu a 'giollachd mòran dàta, tha e cudromach algorithm math a thaghadh, ach chan eil "math" a' ciallachadh "math." Smaoinich air mar a dh’ obraicheas do chòd ann an cleachdadh. Tha mion-sgrùdadh teòiridheach air algorithms a’ fàgail cuid de nithean a dh’ fhaodadh a bhith air leth cudromach san t-saoghal fhìor. Tha algorithms nas sìmplidh nas fhasa a mheudachadh agus nas seasmhaiche ann an suidheachaidhean iomaill.

Smaoinich cuideachd mun cho-theacsa anns an tèid an còd a chuir gu bàs. Anns a ’chùis againn, feumaidh sinn frithealaichean cumhachdach gu leòr gus gnìomhan cùl-fhiosrachaidh a riaghladh. Bidh luchd-cleachdaidh a’ tòiseachadh rannsachaidhean gu math tric, gus an urrainn dhuinn buidheann iomlan de luchd-frithealaidh fhaighinn air iasad airson na h-ùine ghoirid a dh’ fheumar gus gach sgrùdadh a chrìochnachadh.

A’ cleachdadh modh feachd brùideil, chuir sinn an gnìomh sgrùdadh luath, earbsach, sùbailte thairis air seata de logaichean. Tha sinn an dòchas gum bi na beachdan seo feumail airson do phròiseactan.

Deasaich: Tha an tiotal agus an teacsa air atharrachadh bho “Lorg aig 20 GB gach diog” gu “Lorg aig 1 TB gach diog” gus na h-àrdachaidhean coileanaidh thairis air na beagan bhliadhnaichean a dh’ fhalbh a nochdadh. Tha an àrdachadh seo ann an astar gu sònraichte mar thoradh air atharrachaidhean anns an t-seòrsa agus an àireamh de luchd-frithealaidh EC2 a tha sinn a’ cur suas an-diugh gus seirbheis a thoirt don bhunait luchd-ceannach againn. Tha atharrachaidhean a’ tighinn a dh’ aithghearr a bheir àrdachadh mòr eile ann an èifeachdas obrachaidh, agus chan urrainn dhuinn feitheamh gus an roinn.

Source: www.habr.com

Cuir beachd ann