Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Ass virun e puer Deeg geschitt Hydra Konferenz. D'Jongen aus der JUG.ru Group invitéiert Dram-Spriecher (Leslie Lamport! Cliff Click! Martin Kleppmann!) an hunn zwee Deeg fir verdeelt Systemer a Rechenzäit gewidmet. Kontur war ee vun den dräi Partner vun der Konferenz. Mir hunn um Stand geschwat, iwwer eis verdeelt Lagerung geschwat, Bingo gespillt a Puzzel geléist.

Dëst ass e Post mat enger Analyse vun Aufgaben um Kontur Stand vum Auteur vun hirem Text. Wien war op der Hydra - dat ass Äre Grond fir déi agreabel Erfahrung ze erënneren, wien war net - eng Chance fir Äert Gehir ze strecken groussen O-Notatioun.

Et ware souguer Participanten, déi de Flipchart a Rutschen ofgebaut hunn fir hir Entscheedung opzeschreiwen. Ech maachen kee Geck - si hunn dëse Stack Pabeier fir d'Verifizéierung iwwerginn:

Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Et waren am Ganzen dräi Aufgaben:

  • iwwer d'Auswiel vun Repliken duerch Gewiichter fir Laaschtbalancéierung
  • iwwer d'Zortéierung vun Ufroresultater géint eng In-Memory-Datebank
  • op Staat Transfert an engem verdeelt System mat engem Ring Topologie

Aufgab 1. ClusterClient

Et war néideg en Algorithmus fir déi effizient Auswiel vu K aus N gewiichtte Repliken vun engem verdeelte System ze proposéieren:

Äert Team ass Aufgab fir eng Clientbibliothéik fir e massiv verdeelt Cluster vun N Noden z'entwéckelen. D'Bibliothéik géif verfollegen verschidde Metadaten verbonne mat Wirbelen (zB hir latencies, 4xx / 5xx Äntwert Tariffer, etc.) an zougewisen Schwämm Punkt Gewiichter W1..WN hinnen. Fir déi gläichzäiteg Ausféierungsstrategie z'ënnerstëtzen, soll d'Bibliothéik fäeg sinn K vun N Wirbelen zoufälleg ze wielen - eng Chance fir ausgewielt ze ginn soll proportional zum Gewiicht vum Node sinn.

Proposéiert en Algorithmus fir Noden effizient ze wielen. Schätzen seng computational Komplexitéit mat grousser O Notatioun.

Firwat ass alles op Englesch?

Well an dëser Form d'Konferenz Participanten mat hinnen gekämpft a well Englesch déi offiziell Sprooch vun Hydra war. D'Aufgaben hunn esou ausgesinn:

Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Huelt Pabeier a Bläistëft, denken, presséiert net direkt Spoiler opzemaachen 🙂

Analyse vun der Léisung (Video)

Vun 5:53 un, nëmmen 4 Minutten:

An hei ass wéi d'Jongen mam Flipchart hir Léisung gepecht hunn:


Analyse vun der Léisung (Text)

Déi folgend Léisung läit op der Uewerfläch: summéieren d'Gewiichter vun alle Repliken, generéiert eng zoufälleg Zuel vun 0 op d'Zomm vun alle Gewiichter, wielt dann eng i-Replica sou datt d'Zomm vun de Replikgewichten vun 0 bis (i-1)th ass manner wéi eng zoufälleg Zuel, an d'Zomm vun Replika Gewiichter vun 0 bis i-th - méi wéi et. Also ass et méiglech eng Replica ze wielen, a fir déi nächst ze wielen, musst Dir déi ganz Prozedur widderhuelen ouni déi gewielte Replika ze berücksichtegen. Mat sou engem Algorithmus ass d'Komplexitéit vun der Auswiel vun enger Replika O(N), d'Komplexitéit vum Choix vun K Repliken ass O(N K) ~ O(N2).

Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Quadratesch Komplexitéit ass schlecht, awer et ka verbessert ginn. Fir dëst ze maachen, wäerte mir bauen Segment Bam fir Zomme vu Gewiichter. E Bam vun Tiefe lg N gëtt kritt, an de Blieder vun deenen et Replica-Gewiichter gëtt, an an de verbleiwen Noden - deelweis Zommen, bis zur Zomm vun alle Gewiichter an der Wuerzel vum Bam. Als nächst generéiere mir eng zoufälleg Zuel vun 0 op d'Zomm vun alle Gewiichter, fanne déi i-th Replik, huelt se aus dem Bam a widderhuelen d'Prozedur fir déi verbleiwen Repliken ze fannen. Mat dësem Algorithmus ass d'Komplexitéit fir e Bam ze bauen O(N), d'Komplexitéit fir déi i-th Replika ze fannen an se aus dem Bam ze läschen ass O(lg N), d'Komplexitéit fir K Repliken ze wielen ass O(N + K lg N) ~ O(N lg N) .

Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Linear-Log Komplexitéit ass méi schéin wéi quadratesch Komplexitéit, besonnesch fir grouss K.

Et ass dësen Algorithmus am Code ëmgesat ClusterClient Bibliothéike vum Projet "Osten". (Do ass de Bam an O(N lg N gebaut), awer dëst beaflosst net déi definitiv Komplexitéit vum Algorithmus.)

Aufgab 2. Zebra

Et war néideg en Algorithmus fir effizient Sortéierung vun Dokumenter an Erënnerung duerch en arbiträr net-indexéiert Feld ze proposéieren:

Äert Team ass Aufgab fir eng zerstéiert In-Memory Dokument Datebank z'entwéckelen. Eng gemeinsam Aarbechtsbelaaschtung wier d'Top N Dokumenter auswielen no engem arbiträren (net-indexéierten) numeresche Feld aus enger Sammlung vu Gréisst M (normalerweis N <100 << M). E bësse manner üblech Aarbechtsbelaaschtung wier Top N ze wielen nodeems Dir Top S Dokumenter (S ~ N) iwwerspréngt.

Proposéiert en Algorithmus fir sou Ufroen effizient auszeféieren. Schätzen seng computational Komplexitéit mat grousser O Notatioun am Duerchschnëttsfall an am schlëmmste Fall Szenarie.

Analyse vun der Léisung (Video)

Ab 34:50, nëmmen 6 Minutten:


Analyse vun der Léisung (Text)

Surface Léisung: sortéiert all Dokumenter (zum Beispill mat Quecksort), huelt dann N+S Dokumenter. An dësem Fall ass d'Komplexitéit vun der Sortéierung am Duerchschnëtt O(M lg M), am schlëmmste O(M2).

Et ass offensichtlech datt all M Dokumenter sortéieren an dann nëmmen e klengen Deel vun hinnen huelen ass ineffizient. Fir net all Dokumenter ze sortéieren, ass en Algorithmus gëeegent séier wielt, déi N + S vun de gewënschte Dokumenter auswielen (se kënnen duerch all Algorithmus zortéiert ginn). An dësem Fall wäert d'Komplexitéit am Duerchschnëtt op O(M) erofgoen, während de schlëmmste Fall d'selwecht bleift.

Wéi och ëmmer, Dir kënnt et nach méi effizient maachen - benotzt den Algorithmus binäre Heap Streaming. An dësem Fall ginn déi éischt N+S Dokumenter op Min- oder Max-Heap bäigefüügt (je no der Sortéierungsrichtung), an dann gëtt all nächst Dokument mat der Wuerzel vum Bam verglach, deen den aktuellen Minimum oder Maximum Dokument enthält, a wann néideg an de Bam bäigefüügt.. An dësem Fall ass d'Komplexitéit am schlëmmste Fall, wann Dir de Bam stänneg nei opbaue musst, O(M lg M), d'Komplexitéit am Duerchschnëtt ass O(M), wéi bei Quickselect.

Wéi och ëmmer, Heap Streaming ass méi effizient wéinst der Tatsaach datt an der Praxis déi meescht Dokumenter kënne verworf ginn ouni de Koup nei opzebauen no engem eenzege Verglach mat sengem Root Element. Esou Sortéierung gëtt an der Zebra In-Memory Dokument Datebank entwéckelt a benotzt a Kontur implementéiert.

Aufgab 3. Staat swaps

Et war néideg fir den effizientesten Algorithmus fir Staaten ze veränneren ze proposéieren:

Är Equipe ass Aufgab fir e ausgefalene Staatsaustauschmechanismus fir e verdeelt Cluster vun N Noden z'entwéckelen. Den Zoustand vum i-ten Node soll op den (i+1)-ten Node transferéiert ginn, den Zoustand vum N-ten Node soll op den éischte Node transferéiert ginn. Déi eenzeg ënnerstëtzt Operatioun ass de Staatsswap wann zwee Noden hir Staaten atomesch austauschen. Et ass bekannt datt e Staatsswap M Millisekonnen dauert. All Node ass fäeg un engem eenzege Staatsswap deelzehuelen zu all Moment.

Wéi laang dauert et fir d'Staaten vun all Noden an engem Cluster ze transferéieren?

Analyse vun der Léisung (Text)

Surface Léisung: d'Staaten vum éischten an zweeten Element austauschen, dann den éischten an drëtten, dann den éischten an de véierten, asw. No all Austausch gëtt den Zoustand vun engem Element an der gewënschter Positioun. Dir musst O (N) Permutatiounen maachen an O (N M) Zäit verbréngen.

Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Linear Zäit ass laang, sou datt Dir d'Staaten vun Elementer a Pairen austausche kënnt: déi éischt mat der zweeter, déi drëtt mat der véierter, a sou weider. No all Staatsaustausch wäert all zweet Element an der richteger Positioun sinn. Dir musst O(lg N) Permutatiounen maachen an O(M lg N) Zäit verbréngen.

Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Wéi och ëmmer, et ass méiglech d'Verréckelung nach méi effizient ze maachen - net linear, awer a konstanter Zäit. Fir dëst ze maachen, am éischte Schrëtt, musst Dir den Zoustand vum éischten Element mat der leschter austauschen, déi zweet mat der virläitem, a sou weider. Den Zoustand vum leschten Element wäert an der korrekter Positioun sinn. An elo musse mir den Zoustand vun der zweeter Element mat der leschter austauschen, déi drëtt eent mat der virlässeg eent, an sou op. No dëser Ronn vun Austausch sinn d'Staaten vun all Elementer an der richteger Positioun. Et ginn O(2M) ~ O(1) Permutatiounen am Ganzen.

Analyse vun Aufgaben vun der Hydra Konferenz - Laaschtbalancéierung an Erënnerungspäicherung

Esou eng Léisung iwwerrascht guer net e Mathematiker, deen sech nach drun erënnert, datt eng Rotatioun eng Zesummesetzung vun zwou axialsymmetrien ass. Iwwregens, ass et trivially generaliséiert fir eng Verréckelung net vun engem, mä duerch K <N Positiounen. (Schreift an de Kommentarer wéi genau.)

Hutt Dir gär Puzzel? Wësst Dir aner Léisungen? Deelen an de Kommentaren.

An hei sinn e puer nëtzlech Linken um Enn:

Source: will.com

Setzt e Commentaire