ProHoster > blog > Amministrazzjoni > Analiżi tal-kompiti mill-konferenza Hydra - ibbilanċjar tat-tagħbija u ħażna fil-memorja
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:
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:
Ħ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).
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) .
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).
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).
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.
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.)