2017-06-20 2 views
0

Ich habe über Finagle gelesen und versucht, den Code zu verstehen, um herauszufinden, wie die Teilmengenauswahl von Aperture funktioniert.Wie Finagle Aperturalgorithmus wählt "nicht überlappende" Teilmengen?

Ich habe gesehen, dass ApertureLeastLoaded hat eine "useDeterministicOrdering" und eine "EndpointFactory", die ich denke, sollten die wichtigsten Punkte sein, um die Entscheidung, welche Clients in der Teilmenge zu treffen.

Während ich den Abschnitt "deterministische Teilmenge" von Google SRE's book gelesen habe, habe ich verstanden, dass die beste Möglichkeit, eine Teilmenge von Servern aus der Sicht des Clients auszuwählen, die Gesamtzahl der Clients und eine eindeutige sequenzielle Kennung der aktueller Client, der als Seed des Subset-Generators verwendet werden kann.

In Finagle kann ich nicht verstehen, wie dieser Prozess gemacht wird (ich bin nicht sehr vertraut mit Scala) und die Dokumentation sowohl auf der Website und im Code, erklären, wie das Apertur-Paradigma funktioniert, aber nicht sehr klar wie die anfängliche Teilmenge

gewählt ich jemand hoffe mir

Antwort

0

Eines der einzigartigen Eigenschaften von Aperture erleuchten kann, ist, dass seine Fenster ist so bemessen, dynamisch auf der Basis eines Kunden Last angeboten. Das heißt, Clients haben einen eingebauten Controller, der ihr Fenster zur Laufzeit erweitern oder verkleinern kann. Diese Eigenschaft ist wichtig, da sie es den Clients ermöglicht, effizienter zu arbeiten und sich besser an eine sich ändernde Umgebung anzupassen. Allerdings wird dadurch die Lastverteilung auf Serverservern ungleichmäßiger. Im Gegensatz dazu schlägt der vom Google SRE-Buch vorgeschlagene Teilmengenalgorithmus vor, dass Operatoren eine statische Teilmengengröße wählen, die eine analytische Analyse einer gleichmäßigen Lastverteilung ermöglicht, aber eine weitere statische Konfiguration einführt, die als System erneut betrachtet werden muss entwickelt sich.

Deterministische Aperture ist nach unserem besten Wissen ein neuartiger Algorithmus zur Erzielung einer gleichmäßigen Lastverteilung unter Beibehaltung der oben genannten dynamischen Eigenschaften der Fenstergrößen. Von einer höheren Ebene konstruieren Clients eine Topologie ihres Peer-Clusters (die ihnen ein Gefühl von Ordnung und Nähe vermittelt) und leiten dann eine eindeutige pro-Client-Permutation der Server von der Topologie ab, so dass jeder Server gleichmäßig über die Permutationen hinweg repräsentiert wird.

Wir sind noch in den frühen Phasen der Prüfung dieses in der Produktion bei Twitter, aber frühe Ergebnisse sehen sehr vielversprechend aus. Nachdem wir mehr empirische Ergebnisse gesammelt haben, hoffen wir, einige detailliertere Informationen darüber, wie der Algorithmus funktioniert und seine Eigenschaften, zu veröffentlichen.

+0

Vielen Dank Ruben, können Sie mir bitte besser erklären, wie "und dann eine einzigartige Per-Client-Permutation der Server aus der Topologie ableiten, so dass jeder Server einheitlich über die Permutationen dargestellt wird." erreicht? Sie haben richtigerweise gesagt, dass Google SRE eine weitere statische Konfiguration hinzufügt, stattdessen könnte Aperture das gleiche Ergebnis dynamisch erzielen, ohne die anderen Clients zu kennen (nur die Server da draußen). Es wäre interessant zu verstehen, wie genau das gemacht wird. – rodi