Déan cuardach ar luas 1 TB/s

TL; DR: Ceithre bliana ó shin d'fhág mé Google le smaoineamh ar uirlis monatóireachta freastalaí nua. Ba é an smaoineamh feidhmeanna de ghnáth iargúlta a chomhcheangal in aon seirbhís amháin ag bailiú agus anailís loga, bailiú méadrachta, foláirimh agus daais. Ceann de na prionsabail ná go gcaithfidh an tseirbhís a bheith fíor tapa, ag cur eispéireas éasca, idirghníomhach, taitneamhach ar fáil do devops. Éilíonn sé seo tacair sonraí ilghiobheart a phróiseáil i gcodáin soicind agus fanacht laistigh den bhuiséad. Is minic a bhíonn na huirlisí bainistíochta logála atá ann cheana féin mall agus clunky, agus mar sin bhí dúshlán maith againn: uirlis a dhearadh go cliste chun taithí nua a thabhairt d'úsáideoirí.

Déanann an t-alt seo cur síos ar conas a réitigh muid ag Scalyr an fhadhb seo trí mhodhanna seanscoile a chur i bhfeidhm, cur chuige brúidiúil, deireadh a chur le sraitheanna neamhriachtanacha agus struchtúir sonraí casta a sheachaint. Is féidir leat na ceachtanna seo a chur i bhfeidhm ar do chuid fadhbanna innealtóireachta féin.

Cumhacht na Sean-Scoile

Tosaíonn anailís logála de ghnáth le cuardach: faigh gach teachtaireacht a mheaitseálann patrún áirithe. I Scalyr, is iad seo na deich nó na céadta ghigibheart de logaí ó go leor freastalaithe. Is éard atá i gceist le cur chuige nua-aimseartha, mar riail, ná roinnt struchtúr casta sonraí a thógáil atá optamaithe le haghaidh cuardaigh. Is cinnte go bhfaca mé é seo ar Google, áit a bhfuil siad sách maith ag an gcineál seo ruda. Ach shocraigh muid ar chur chuige i bhfad níos cruálach: scanadh líneach ar logs. Agus d'oibrigh sé - a chuirimid ar fáil comhéadan inchuardaithe go bhfuil orduithe méid níos tapúla ná ár n-iomaitheoirí (féach beochan ag an deireadh).

Ba é an príomh-léargas go bhfuil próiseálaithe nua-aimseartha go deimhin an-tapa ag oibríochtaí simplí, simplí. Is furasta é seo a chailleann i gcórais chasta, ilchiseal a bhíonn ag brath ar luas I/O agus oibríochtaí líonra, agus tá córais dá leithéid an-choitianta inniu. Mar sin d'fhorbraíomar dearadh a íoslaghdaíonn sraitheanna agus smionagar breise. Le próiseálaithe iolracha agus freastalaithe ag an am céanna, sroicheann an luas cuardaigh 1 TB in aghaidh an tsoicind.

Príomhbhealaí beir leat ón alt seo:

  • Is cur chuige inmharthana é cuardach brú-fhórsa chun fadhbanna fíor-scála a réiteach.
  • Teicníc dearaidh is ea fórsa brute, ní réiteach saor ó obair. Cosúil le haon teicníc, tá sé níos oiriúnaí do roinnt fadhbanna ná a chéile, agus is féidir é a chur i bhfeidhm go dona nó go maith.
  • Tá fórsa brute go háirithe go maith le baint amach cobhsaí táirgiúlacht.
  • Chun úsáid éifeachtach a bhaint as fórsa brúidiúil ní mór an cód a bharrfheabhsú agus dóthain acmhainní a chur i bhfeidhm ag an am ceart. Tá sé oiriúnach má tá do fhreastalaithe faoi ualach trom neamh-úsáideoirí agus má tá oibríochtaí úsáideora fós mar thosaíocht.
  • Braitheann feidhmíocht ar dhearadh an chórais ar fad, ní hamháin ar an algartam lúb inmheánach.

(Déanann an t-alt seo cur síos ar chuardach le haghaidh sonraí i gcuimhne. I bhformhór na gcásanna, nuair a dhéanann úsáideoir cuardach logála, tá na freastalaithe Scalyr i dtaisce cheana féin é. Pléifidh an chéad alt eile cuardach le haghaidh logaí gan taisce. Baineann na prionsabail chéanna: cód éifeachtach, fórsa brute le hacmhainní móra ríomhaireachta).

Modh fórsa brute

Go traidisiúnta, déantar cuardach ar thacar mór sonraí ag baint úsáide as innéacs eochairfhocail. Nuair a chuirtear i bhfeidhm é ar logaí freastalaí, ciallaíonn sé seo cuardach do gach focal uathúil sa loga. I gcás gach focal, ní mór duit liosta a dhéanamh de gach cuimsitheacht. Fágann sé sin go bhfuil sé éasca teacht ar gach teachtaireacht leis an bhfocal seo, mar shampla ‘earráid’, ‘firefox’ nó “transaction_16851951” - níl le déanamh ach breathnú san innéacs.

Bhain mé úsáid as an gcur chuige seo ag Google agus d'oibrigh sé go maith. Ach i Scalyr déanaimid cuardach ar na logaí beart de réir beart.

Cén fáth? Ó thaobh algartamaíoch teibí de, tá innéacsanna eochairfhocail i bhfad níos éifeachtaí ná cuardaigh fórsa brúidiúil. Mar sin féin, ní dhíolaimid algartaim, díolaimid feidhmíocht. Agus baineann feidhmíocht ní hamháin le halgartaim, ach freisin faoi innealtóireacht chórais. Ní mór dúinn gach rud a mheas: méid na sonraí, an cineál cuardaigh, crua-earraí atá ar fáil agus comhthéacs bogearraí. Shocraigh muid gur fearr a d’oirfeadh rud éigin cosúil le ‘grep’ ná innéacs dár bhfadhb ar leith.

Tá innéacsanna iontach, ach tá teorainneacha acu. Is furasta focal amháin a fháil. Ach tá sé i bhfad níos deacra teachtaireachtaí le focail iolracha a chuardach, mar 'googlebot' agus '404'. Teastaíonn innéacs níos achrannaí chun frása cosúil le ‘uncaught exception’ a chuardach a dhéanann taifead ní hamháin ar gach teachtaireacht leis an bhfocal sin, ach freisin ar shuíomh sonrach an fhocail.

Tagann an deacracht fíor nuair nach bhfuil tú ag lorg focal. Ligean le rá gur mhaith leat a fheiceáil cé mhéad tráchta atá ag teacht ó róbónna. Is é an chéad smaoineamh ná na logaí a chuardach le haghaidh an fhocail 'bot'. Seo mar a gheobhaidh tú roinnt róbónna: Googlebot, Bingbot agus go leor eile. Ach anseo ní focal é ‘bot’, ach cuid de. Má chuardaíonn muid ‘bot’ san innéacs, ní bhfaighidh muid postálacha ar bith a bhfuil an focal ‘Googlebot’ orthu. Má dhéanann tú seiceáil ar gach focal san innéacs agus ansin an t-innéacs a scanadh le haghaidh na n-eochairfhocail a aimsíodh, mhoilleoidh an cuardach go mór. Mar thoradh air sin, ní cheadaíonn roinnt clár logála cuardach páirtfhocail nó (ar a fheabhas) ceadaíonn siad comhréir speisialta le feidhmíocht níos ísle. Ba mhaith linn é seo a sheachaint.

Fadhb eile is ea poncaíocht. Ar mhaith leat gach iarratas a fháil ó 50.168.29.7? Cad mar gheall ar logaí dífhabhtaithe ina bhfuil [error]? Go hiondúil seachnaíonn síntiúis poncaíocht.

Ar deireadh, is breá le hinnealtóirí uirlisí cumhachtacha, agus uaireanta ní féidir fadhb a réiteach ach le léiriú rialta. Níl an t-innéacs eochairfhocal an-oiriúnach dó seo.

Ina theannta sin, na hinnéacsanna casta. Ní mór gach teachtaireacht a chur le roinnt liostaí eochairfhocal. Ba chóir na liostaí seo a choinneáil i bhformáid is furasta a chuardach i gcónaí. Ní mór fiosrúcháin le frásaí, blúirí focal, nó nathanna rialta a aistriú ina n-oibríochtaí illiostaí, agus na torthaí a scanadh agus a chomhcheangal chun tacar torthaí a tháirgeadh. I gcomhthéacs seirbhíse ar scála mór, ilthionóntaí, cruthaíonn an chastacht seo saincheisteanna feidhmíochta nach bhfuil le feiceáil agus anailís á déanamh ar na halgartaim.

Glacann innéacsanna eochairfhocail go leor spáis freisin, agus is mórchostas é an stóráil i gcóras bainistíochta loga.

Ar an láimh eile, is féidir le gach cuardach a lán de chumhacht ríomhaireachta a ithe. Is mór ag ár n-úsáideoirí cuardaigh ardluais ar cheisteanna uathúla, ach is annamh a dhéantar fiosrúcháin dá leithéid. Le haghaidh gnáthcheisteanna cuardaigh, mar shampla, le haghaidh painéal, bainimid úsáid as teicnící speisialta (cuirfimid síos orthu sa chéad alt eile). Is annamh a bhíonn iarratais eile ann gur annamh a bhíonn ort níos mó ná ceann amháin a phróiseáil ag an am. Ach ní chiallaíonn sé seo nach bhfuil ár bhfreastalaithe gnóthach: bíonn siad gnóthach leis an obair chun teachtaireachtaí nua a fháil, a anailísiú agus a chomhbhrú, ag measúnú foláirimh, ag comhbhrú sean-shonraí, agus mar sin de. Mar sin, tá soláthar sách suntasach próiseálaithe againn ar féidir iad a úsáid chun fiosrúcháin a dhéanamh.

Oibríonn fórsa brute má tá fadhb brúidiúil agat (agus neart fórsa)

Is fearr a oibríonn fórsa brute ar fhadhbanna simplí le lúba beaga inmheánacha. Go minic is féidir leat an lúb inmheánach a bharrfheabhsú chun rith ar luasanna an-ard. Má tá an cód casta, tá sé i bhfad níos deacra é a bharrfheabhsú.

Ar dtús bhí lúb sách mór istigh ag ár gcód cuardaigh. Stórálaimid teachtaireachtaí ar leathanaigh ag 4K; tá roinnt teachtaireachtaí ar gach leathanach (in UTF-8) agus meiteashonraí do gach teachtaireacht. Is struchtúr é meiteashonraí a ionchódaíonn fad an luacha, ID inmheánach na teachtaireachta, agus réimsí eile. Bhí cuma mar seo ar an timthriall cuardaigh:

Déan cuardach ar luas 1 TB/s

Is leagan simplithe é seo den chód iarbhír. Ach fiú anseo, tá socrúcháin réad iolracha, cóipeanna sonraí, agus glaonna feidhm le feiceáil. Tá an JVM sách maith ag barrfheabhsú glaonna feidhme agus ag leithdháileadh réada gearrshaolacha, agus mar sin d’oibrigh an cód seo níos fearr ná mar a bhí tuillte againn. Le linn na tástála, d'úsáid custaiméirí é go rathúil. Ach sa deireadh thógamar go dtí an chéad leibhéal eile é.

(Is féidir leat a fhiafraí cén fáth a stórálann muid teachtaireachtaí san fhormáid seo le leathanaigh 4K, téacs agus meiteashonraí, seachas oibriú le logs go díreach. Tá go leor cúiseanna, a boil síos go bhfuil go hinmheánach inneall Scalyr níos mó cosúil le bunachar sonraí dáilte ná a córas comhaid. Is minic a chomhcheanglaítear cuardach téacs le scagairí ar stíl DBMS sna himill tar éis parsáil loga. Is féidir linn na mílte logaí a chuardach ag an am céanna, agus níl comhaid téacs simplí oiriúnach dár mbainistíocht sonraí idirbheartaíochta, macasamhail, dáilte).

Ar dtús, ba chosúil nach raibh cód den sórt sin an-oiriúnach le haghaidh leas iomlán a bhaint as fórsa brute. "Obair fíor" i String.indexOf() ní raibh tionchar an-mhór aige ar phróifíl an LAP fiú. Is é sin, ní bheadh ​​éifeacht shuntasach ag baint le barrfheabhsú an mhodha seo amháin.

Tarlaíonn sé mar sin go stórálaimid meiteashonraí ag tús gach leathanaigh, agus go bhfuil téacs gach teachtaireachta in UTF-8 pacáilte ag an taobh eile. Ag baint leasa as seo, athscríobhamar an lúb chun an leathanach iomlán a chuardach láithreach:

Déan cuardach ar luas 1 TB/s

Oibríonn an leagan seo go díreach ar an radharc raw byte[] agus déanann sé cuardach ar gach teachtaireacht ag an am céanna ar fud an leathanaigh 4K ar fad.

Tá sé seo i bhfad níos éasca a bharrfheabhsú le haghaidh an modh fórsa brute. Tugtar an lúb cuardaigh inmheánach go comhuaineach don leathanach 4K ar fad, seachas ar leithligh ar gach postáil. Níl aon chóipeáil sonraí, níl aon leithdháileadh rudaí. Agus ní thugtar oibríochtaí meiteashonraí níos casta ach amháin nuair a bhíonn an toradh dearfach, agus ní ar gach teachtaireacht. Ar an mbealach seo tá deireadh curtha againn le tonna forchostais, agus tá an chuid eile den ualach comhchruinnithe i lúb cuardaigh inmheánach beag, atá oiriúnach go maith le haghaidh leas iomlán a bhaint as tuilleadh.

Tá ár n-algartam cuardaigh iarbhír bunaithe ar smaoineamh iontach Leonid Volnitsky. Tá sé cosúil leis an algartam Boyer-Moore, gan bacadh le thart ar fad na teaghrán cuardaigh ag gach céim. Is é an príomhdhifríocht ná go seiceálann sé dhá bheart ag an am chun cluichí bréagacha a íoslaghdú.

Éilíonn ár gcur i bhfeidhm tábla cuardaigh 64K a chruthú do gach cuardach, ach níl sé sin aon rud i gcomparáid leis na ghigibhearta sonraí atá á gcuardach againn. Próiseálann an lúb inmheánach roinnt ghigibheart in aghaidh an tsoicind ar chroílár amháin. Go praiticiúil, tá feidhmíocht chobhsaí thart ar 1,25 GB in aghaidh an tsoicind ar gach croí, agus tá spás le feabhsú. Is féidir deireadh a chur le cuid den lastuas lasmuigh den lúb istigh, agus tá sé beartaithe againn triail a bhaint as lúb istigh C in ionad Java.

Bainimid úsáid as fórsa

Tá plé déanta againn gur féidir cuardach logála a chur i bhfeidhm “thart ar”, ach cé mhéad “cumhacht” atá againn? An-chuid.

1 croí: Nuair a úsáidtear é i gceart, tá croí amháin de phróiseálaí nua-aimseartha sách cumhachtach ina cheart féin.

8 chroí: Táimid ag rith faoi láthair ar fhreastalaithe Amazon hi1.4xlarge agus i2.4xlarge SSD, gach ceann acu le 8 cores (16 snáithe). Mar a luadh thuas, is gnách go mbíonn na croíleacáin seo gnóthach le hoibríochtaí cúlra. Nuair a dhéanann an t-úsáideoir cuardach, cuirtear oibríochtaí cúlra ar fionraí, rud a fhágann go mbeidh na 8 gcroí-chuardaigh ar fad saor in aisce. Críochnaíonn an cuardach i soicind scoilte de ghnáth, agus ina dhiaidh sin a thosaíonn an obair chúlra arís (cinntíonn an clár throttling nach gcuireann an barrage ceisteanna cuardaigh isteach ar obair chúlra tábhachtach).

16 chroí: ar mhaithe le hiontaofacht, eagraímid freastalaithe ina ngrúpaí máistir/sclábhaithe. Tá SSD amháin agus freastalaí EBS amháin ag gach máistir faoina cheannas. Má thuairteanna an príomhfhreastalaí, glacann an freastalaí SSD a áit láithreach. Beagnach an t-am ar fad, oibríonn máistir agus sclábhaí go breá, ionas go mbeidh gach bloc sonraí inchuardaithe ar dhá fhreastalaithe éagsúla (tá próiseálaí lag ag freastalaí sclábhaithe EBS, mar sin ní mheasaimid é). Roinnimid an tasc eatarthu, ionas go mbeidh 16 chroí ar fáil againn.

Go leor croíleacáin: Go luath amach anseo, déanfaimid sonraí a dháileadh ar fhreastalaithe sa chaoi is go mbeidh siad go léir rannpháirteach i bpróiseáil gach iarratas neamhfhánach. Oibreoidh gach croí. [Nóta: chuireamar an plean i bhfeidhm agus mhéadaigh muid an luas cuardaigh go dtí 1 TB/s, féach an nóta ag deireadh an ailt].

Cinntíonn simplíocht iontaofacht

Buntáiste eile a bhaineann leis an modh fórsa brute ná a fheidhmíocht cothrom comhsheasmhach. De ghnáth, ní bhíonn cuardach an-íogair do shonraí na faidhbe agus na sraithe sonraí (buille faoi thuairim mé gurb é sin an fáth go dtugtar "garbh" air).

Uaireanta táirgeann an t-innéacs eochairfhocal torthaí thar a bheith tapa, agus uaireanta eile ní dhéanann sé. Ligean le rá go bhfuil 50 GB de logs agat ina bhfuil an téarma 'customer_5987235982' le feiceáil go díreach trí huaire. Áiríonn cuardach don téarma seo trí shuíomh go díreach ón innéacs agus críochnófar é láithreach. Ach féadann cuardaigh casta saoróg na mílte eochairfhocal a scanadh agus tógann sé go leor ama.

Ar an láimh eile, déanann cuardaigh fórsa brúidiúil ag an luas céanna a bheag nó a mhór d'aon cheist. Is fearr cuardach a dhéanamh ar fhocail fhada, ach fiú cuardach a dhéanamh ar charachtar amháin tá sé sách tapa.

Ciallaíonn simplíocht an mhodha fórsa brute go bhfuil a fheidhmíocht gar dá uasmhéid teoiriciúil. Tá níos lú roghanna ann maidir le ró-ualaí diosca nach rabhthas ag súil leo, áiteamh faoi ghlas, tóraíocht pointeora, agus na mílte cúiseanna eile le teip. D'fhéach mé díreach ar na hiarratais a rinne úsáideoirí Scalyr an tseachtain seo caite ar ár bhfreastalaí is gnóthaí. Fuarthas 14 iarratas. Go díreach ghlac ochtar acu níos mó ná soicind amháin; Chríochnaigh 000% laistigh de 99 milleasoicind (murar bhain tú úsáid as uirlisí anailíse logála, muinín dom: tá sé tapa).

Tá feidhmíocht chobhsaí, iontaofa tábhachtach chun an tseirbhís a úsáid go héasca. Má théann sé chun deiridh go tréimhsiúil, braithfidh úsáideoirí nach bhfuil sé iontaofa agus beidh leisce orthu é a úsáid.

Cuardach logáil isteach i ngníomh

Seo beochan gearr a thaispeánann cuardach Scalyr i ngníomh. Tá cuntas taispeána againn ina ndéanaimid gach imeacht a allmhairiú i ngach stór poiblí Github. Sa taispeántas seo, scrúdaíonn mé luach seachtaine sonraí: thart ar 600 MB de logs amh.

Taifeadadh an físeán beo, gan ullmhúchán speisialta, ar mo dheasc (thart ar 5000 ciliméadar ón bhfreastalaí). Tá an fheidhmíocht a fheicfidh tú mar gheall go príomha leas iomlán a bhaint cliant gréasáin, chomh maith le backend tapa agus iontaofa. Aon uair a bhíonn sos gan táscaire 'luchtaithe', tá sé dom sos ionas gur féidir leat a léamh cad tá mé ar tí a bhrú.

Déan cuardach ar luas 1 TB/s

Mar fhocal scoir

Agus méideanna móra sonraí á bpróiseáil, tá sé tábhachtach algartam maith a roghnú, ach ní chiallaíonn "maith" "mhaisiúil." Smaoinigh ar conas a oibreoidh do chód go praiticiúil. Fágann anailís theoiriciúil na halgartaim amach roinnt fachtóirí ar féidir a bheith thar a bheith tábhachtach sa saol fíor. Tá sé níos éasca halgartaim níos simplí a bharrfheabhsú agus níos cobhsaí i gcásanna imeallacha.

Smaoinigh freisin ar an gcomhthéacs ina ndéanfar an cód a fhorghníomhú. Inár gcás, ní mór dúinn freastalaithe cumhachtach go leor chun tascanna cúlra a bhainistiú. Is annamh a chuireann úsáideoirí tús le cuardaigh, agus mar sin is féidir linn grúpa iomlán freastalaithe a fháil ar iasacht don tréimhse ghearr a theastaíonn chun gach cuardach a chríochnú.

Ag baint úsáide as modh fórsa brute, chuireamar cuardach tapa, iontaofa, solúbtha i bhfeidhm thar shraith logs. Tá súil againn go mbeidh na smaointe seo úsáideach do do thionscadail.

Cuir: Tá an teideal agus an téacs athraithe ó "Cuardaigh ag 20 GB in aghaidh an tsoicind" go "Cuardaigh ag 1 TB in aghaidh an tsoicind" chun na méaduithe feidhmíochta le blianta beaga anuas a léiriú. Is de bharr athruithe ar chineál agus ar líon na bhfreastalaithe EC2 atá á gcur ar bun againn inniu chun freastal ar ár mbonn custaiméirí méadaithe is cúis leis an méadú luais seo go príomha. Tá athruithe ag teacht go luath a chuirfidh borradh suntasach eile ar éifeachtacht oibriúcháin, agus ní féidir linn fanacht lena roinnt.

Foinse: will.com

Add a comment