2017-06-20 4 views
0

Je lisais à propos de Finagle et j'essayais de comprendre le code pour comprendre le fonctionnement du sous-ensemble d'Aperture.Comment l'algorithme d'ouverture de Finagle choisit-il des sous-ensembles "sans chevauchement"?

J'ai vu que ApertureLeastLoaded a un "useDeterministicOrdering" et un "EndpointFactory" qui je suppose devrait être les points clés pour prendre la décision de quels clients à prendre dans le sous-ensemble. En lisant la section "déterminisme déterministe" de Google SRE's book, j'ai compris que la meilleure façon de choisir un sous-ensemble de serveurs du point de vue du client, est de connaître le nombre total de clients, et un identifiant séquentiel unique du client actuel, qui peut être utilisé comme germe du générateur de sous-ensemble. En Finagle je ne peux pas comprendre comment ce processus est fait (je ne suis pas très familier avec Scala) et la documentation à la fois sur le site Web et dans le code, expliquer à quel point le paradigme d'ouverture fonctionne, mais pas très clair comment le sous-ensemble initial est choisi

J'espère que quelqu'un peut me éclairer

Répondre

0

l'une des propriétés uniques d'Aperture est que sa fenêtre est dimensionnée de façon dynamique basée sur une clientèle charge offerte. Autrement dit, les clients ont un contrôleur intégré qui peut agrandir ou réduire leur fenêtre au moment de l'exécution. Cette propriété est importante car elle permet aux clients de fonctionner plus efficacement et de mieux s'adapter à un environnement changeant, mais il est plus complexe d'obtenir une répartition uniforme des charges entre les serveurs. Pour contraster, l'algorithme de sous-ensemble, tel que proposé par le livre Google SRE, suggère que les opérateurs choisissent une taille de sous-ensemble statique qui permet de calculer analytiquement une distribution de charge uniforme mais introduit une autre configuration statique qui doit être revisitée évolue. L'ouverture déterministe est, à notre connaissance, un nouvel algorithme permettant d'obtenir une distribution uniforme de la charge tout en conservant les propriétés dynamiques du dimensionnement de la fenêtre mentionné ci-dessus. À partir d'un niveau élevé, les clients construisent une topologie de leur cluster (qui leur donne une idée de l'ordre et de la proximité), puis dérivent une permutation unique des serveurs de la topologie de façon à ce que chaque serveur soit uniformément représenté.

Nous en sommes encore aux premiers stades de test en production sur Twitter, mais les premiers résultats semblent très prometteurs. Après avoir recueilli plus de résultats empiriques, nous espérons publier un contenu plus détaillé sur le fonctionnement de l'algorithme et ses propriétés.

+0

Merci Ruben, pourriez-vous s'il vous plait m'expliquer comment "puis dériver une permutation unique par client des serveurs à partir de la topologie de sorte que chaque serveur soit uniformément représenté à travers les permutations." est accompli? Vous avez dit correctement que Google SRE ajoute une autre configuration statique, Aperture pourrait atteindre le même résultat dynamiquement sans connaître les autres clients (juste les serveurs), il serait intéressant de comprendre comment cela se fait exactement. – rodi