Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Ġara ftit jiem ilu Konferenza Hydra. Il-guys minn JUG.ru Group stiednu kelliema tal-ħolm (Leslie Lamport! Cliff Click! Martin Kleppmann!) U ddedikaw jumejn għal sistemi distribwiti u kompjuters. Kontur kien wieħed mit-tliet imsieħba tal-konferenza. Tkellimna fil-kabina, tkellimna dwar il-ħażniet imqassma tagħna, lgħabna tombla, u solvejna puzzles.

Din hija post b'analiżi tal-kompiti fl-istand tal-Kontur mill-awtur tat-test tagħhom. Min kien fuq l-Idra - din hija r-raġuni tiegħek biex tiftakar l-esperjenza pjaċevoli, min ma kienx - ċans li tistira moħħok kbir O-notazzjoni.

Saħansitra kien hemm parteċipanti li żarmaw il-flipchart fi slides biex jiktbu d-deċiżjoni tagħhom. Mhux qed niċċajta - għaddew din il-munzell ta' karti għall-verifika:

Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Kien hemm tliet kompiti b'kollox:

  • dwar l-għażla ta' repliki skont il-piżijiet għall-ibbilanċjar tat-tagħbija
  • dwar l-issortjar tar-riżultati tal-mistoqsijiet kontra database fil-memorja
  • dwar it-trasferiment tal-istat f'sistema distribwita b'topoloġija ring

Kompitu 1. ClusterClient

Kien meħtieġ li jiġi propost algoritmu għall-għażla effiċjenti ta' K minn N repliki peżati ta' sistema distribwita:

It-tim tiegħek għandu l-kompitu li jiżviluppa librerija tal-klijenti għal raggruppament imqassam b'mod massiv ta 'N nodes. Il-librerija għandha żżomm rekord ta 'metadata varji assoċjati ma' nodi (eż., latencies tagħhom, rati ta 'rispons 4xx/5xx, eċċ.) u tassenja lilhom piżijiet floating point W1..WN. Sabiex tappoġġja l-istrateġija ta 'eżekuzzjoni konkorrenti, il-librerija għandha tkun kapaċi tagħżel K ta' N nodi b'mod każwali—ċans li jintgħażel għandu jkun proporzjonali għall-piż ta 'node.

Ipproponi algoritmu biex tagħżel in-nodi b'mod effiċjenti. Stima l-kumplessità komputazzjonali tagħha billi tuża notazzjoni O kbira.

Għaliex kollox huwa bl-Ingliż?

Għax f’din il-forma l-parteċipanti tal-konferenza ġġieldu magħhom u għax l-Ingliż kien il-lingwa uffiċjali ta’ Hydra. Il-kompiti dehru bħal dawn:

Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Ħu karta u lapes, aħseb, tgħaġġlax tiftaħ spoilers mill-ewwel 🙂

Analiżi tas-soluzzjoni (video)

Tibda fil-5:53, 4 minuti biss:

U hawn kif in-nies bil-flipchart ressqu s-soluzzjoni tagħhom:


Analiżi tas-soluzzjoni (test)

Is-soluzzjoni li ġejja tinsab fuq il-wiċċ: somma l-piżijiet tar-repliki kollha, iġġenera numru każwali minn 0 sas-somma tal-piżijiet kollha, imbagħad agħżel i-replika b'tali mod li s-somma tal-piżijiet tar-repliki minn 0 sa (i-1)th huwa inqas minn numru każwali, u s-somma tal-piżijiet tar-repliki minn 0 sa i-th - aktar minnha. Għalhekk se jkun possibbli li tagħżel replika waħda, u biex tagħżel dik li jmiss, għandek bżonn tirrepeti l-proċedura kollha mingħajr ma tikkunsidra r-replika magħżula. B'tali algoritmu, il-kumplessità tal-għażla ta 'replika waħda hija O (N), il-kumplessità tal-għażla ta' K repliki hija O (N K) ~ O (N2).

Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Il-kumplessità kwadratika hija ħażina, iżda tista 'titjieb. Biex nagħmlu dan, aħna se nibnu siġra tas-segment għal somom ta’ piżijiet. Se tinkiseb siġra ta 'fond lg N, li fil-weraq tagħha jkun hemm piżijiet replika, u fin-nodi li fadal - somom parzjali, sas-somma tal-piżijiet kollha fl-għerq tas-siġra. Sussegwentement, niġġeneraw numru każwali minn 0 sas-somma tal-piżijiet kollha, insibu r-replika i-th, neħħiha mis-siġra, u rrepeti l-proċedura biex issib ir-repliki li fadal. B'dan l-algoritmu, il-kumplessità tal-bini ta 'siġra hija O (N), il-kumplessità tas-sejba tar-replika i-th u t-tneħħija mis-siġra hija O (lg N), il-kumplessità tal-għażla ta' K repliki hija O (N + K lg N) ~ O(N lg N) .

Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Il-kumplessità tal-log lineari hija isbaħ mill-kumplessità kwadratika, speċjalment għal K kbir.

Huwa dan l-algoritmu implimentati fil-kodiċi Libreriji ClusterClient mill-proġett "Lvant". (Hemm, is-siġra hija mibnija f'O(N lg N), iżda dan ma jaffettwax il-kumplessità finali tal-algoritmu.)

Kompitu 2. Żebra

Kien meħtieġ li jiġi propost algoritmu għall-għażla effiċjenti tad-dokumenti fil-memorja minn qasam arbitrarju mhux indiċjat:

It-tim tiegħek għandu l-kompitu li jiżviluppa database ta’ dokumenti sharded fil-memorja. Xogħol komuni jkun li jintgħażlu l-aqwa N dokumenti magħżula minn qasam numeriku arbitrarju (mhux indiċjat) minn ġabra ta' daqs M (ġeneralment N < 100 << M). Xogħol kemmxejn inqas komuni jkun li jintgħażel l-aqwa N wara li taqbeż id-dokumenti tal-ogħla S (S ~ N).

Ipproponi algoritmu biex tesegwixxi tali mistoqsijiet b'mod effiċjenti. Stima l-kumplessità komputazzjonali tagħha billi tuża notazzjoni O kbira fil-każ medju u l-agħar xenarji.

Analiżi tas-soluzzjoni (video)

Tibda fit-34:50, 6 minuti biss:


Analiżi tas-soluzzjoni (test)

Soluzzjoni tal-wiċċ: issortja d-dokumenti kollha (per eżempju ma quicksort), imbagħad ħu dokumenti N+S. F'dan il-każ, il-kumplessità tal-għażla hija bħala medja O(M lg M), fl-agħar O(M2).

Huwa ovvju li l-issortjar tad-dokumenti M kollha u mbagħad tieħu parti żgħira biss minnhom hija ineffiċjenti. Sabiex ma jiġux issortjati d-dokumenti kollha, algoritmu huwa adattat agħżel malajr, li se tagħżel N + S tad-dokumenti mixtieqa (jistgħu jiġu magħżula minn kwalunkwe algoritmu). F'dan il-każ, il-kumplessità se tonqos għal O(M) bħala medja, filwaqt li l-agħar każ se jibqa' l-istess.

Madankollu, tista 'tagħmel dan b'mod saħansitra aktar effiċjenti - uża l-algoritmu streaming heap binarju. F'dan il-każ, l-ewwel dokumenti N + S huma miżjuda ma 'min jew max-heap (skond id-direzzjoni tas-sort), u mbagħad kull dokument li jmiss jitqabbel mal-għerq tas-siġra, li fih id-dokument minimu jew massimu attwali, u jiġi miżjud mas-siġra jekk meħtieġ. . F'dan il-każ, il-kumplessità fl-agħar każ, meta jkollok tibni mill-ġdid is-siġra b'mod kostanti, hija O (M lg M), il-kumplessità bħala medja hija O (M), bħal ma 'quickselect.

Madankollu, il-heap streaming jirriżulta li huwa aktar effiċjenti minħabba l-fatt li fil-prattika ħafna mid-dokumenti jistgħu jintremew mingħajr ma jerġgħu jinbnew il-borġ wara paragun wieħed mal-element għerq tiegħu. Tali għażla hija implimentata fid-database tad-dokumenti fil-memorja ta’ Zebra żviluppata u użata f’Kontur.

Kompitu 3. Tpartit tal-istat

Kien meħtieġ li jiġi propost l-aktar algoritmu effiċjenti għaċ-ċaqliq tal-istati:

It-tim tiegħek għandu l-kompitu li jiżviluppa mekkaniżmu ta 'skambju ta' stat fancy għal cluster distribwit ta 'N nodes. L-istat tan-node i-th għandu jiġi trasferit għan-node (i+1)-th, l-istat tan-node N-th għandu jiġi trasferit għall-ewwel nodu. L-unika operazzjoni appoġġjata hija t-tpartit tal-istat meta żewġ nodi jiskambjaw l-istati tagħhom atomikament. Huwa magħruf li tpartit tal-istat jieħu M millisekondi. Kull nodu jista 'jipparteċipa fi skambju ta' stat wieħed fi kwalunkwe mument partikolari.

Kemm idum biex jiġu trasferiti l-istati tan-nodi kollha fi cluster?

Analiżi tas-soluzzjoni (test)

Soluzzjoni tal-wiċċ: jiskambja l-istati tal-ewwel u t-tieni element, imbagħad l-ewwel u t-tielet, imbagħad l-ewwel u r-raba ', eċċ. Wara kull skambju, l-istat ta 'element wieħed ikun fil-pożizzjoni mixtieqa. Int trid tagħmel permutazzjonijiet O (N) u tqatta 'ħin O (N M).

Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Il-ħin lineari huwa twil, għalhekk tista 'tiskambja l-istati tal-elementi f'pari: l-ewwel mat-tieni, it-tielet mar-raba', eċċ. Wara kull skambju tal-istat, kull tieni element se jkun fil-pożizzjoni t-tajba. Int trid tagħmel permutazzjonijiet O(lg N) u tqatta' ħin O(M lg N).

Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Madankollu, huwa possibbli li l-bidla ssir saħansitra aktar effiċjenti - mhux b'mod lineari, iżda f'ħin kostanti. Biex tagħmel dan, fl-ewwel pass, għandek bżonn tiskambja l-istat tal-ewwel element mal-aħħar wieħed, it-tieni ma 'dak ta' qabel tal-aħħar, eċċ. L-istat tal-aħħar element se jkun fil-pożizzjoni korretta. U issa għandna bżonn niskambjaw l-istat tat-tieni element ma 'l-aħħar wieħed, it-tielet wieħed ma' dak ta 'qabel l-aħħar, eċċ. Wara dan ir-rawnd ta 'skambji, l-istati tal-elementi kollha se jkunu fil-pożizzjoni t-tajba. Se jkun hemm permutazzjonijiet O (2M) ~ O (1) b'kollox.

Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja

Soluzzjoni bħal din ma tissorprendix matematiku li għadu jiftakar li rotazzjoni hija kompożizzjoni ta 'żewġ simmetriji assjali. Mill-mod, huwa ġeneralizzat b'mod trivjali għal bidla mhux b'wieħed, iżda minn K <N pożizzjonijiet. (Ikteb fil-kummenti kif eżattament.)

Għoġobkom il-puzzles? Taf soluzzjonijiet oħra? Aqsam fil-kummenti.

U hawn xi links utli fl-aħħar:

Sors: www.habr.com

Żid kumment