2017-12-16 9 views
0

Ich habe Probleme, den in Akka verwendeten Cluster-Algorithmus zu verstehen.Warum muss das Klatschprotokoll in akka seinen Status zweimal liefern, damit der Statuswechsel registriert wird?

In der Beschreibung in der akka Gossip Protocol es sagt, dass:

Der Empfänger des Klatsch Staates oder der Klatsch-Status kann die Klatsch Version (Vektor Uhr) verwenden, um festzustellen, ob:

  1. es hat eine neuere Version des Klatsches Staat, in diesem Fall sendet es , dass zurück zu dem Klatsch
  2. es hat eine veraltete Version des Staates, in diesem Fall der Empfänger fordert t er aktuelle Zustand aus dem gossiper durch seine Version des Klatsch Zustandes zurückzuschicken
  3. es Klatsch Versionen hat in Konflikt, wobei in diesem Fall die verschiedenen Versionen zusammengeführt werden und zurück

Schritt zwei scheint eine Verschwendung geschickt der Kommunikation, wie der Klatscher seinen Zustand zweimal sendet. Einmal, wenn es bemerkt wird, dass es nicht die neueste Version hat, und wieder, wenn der Empfänger die neueste Version wünscht, indem er seine eigene veraltete Version zurücksendet.

Ich glaube, ich missverstehe das, weil mein Verständnis von Vektor-Uhren und CFRD begrenzt ist, und die Beschreibung in der Akka-Dokumentation ist kurz, und der Wikipedia-Artikel ist zu weit fortgeschritten. Soweit ich es unerschrocken habe, ist eine Vektoruhr eine Implementierung einer CRDT, aber das könnte falsch sein.

Aber am Ende verstehe ich nicht, warum der Klatschknoten seinen Zustand zweimal mitteilen muss. Bitte klären Sie.

Aber ich denke, ich könnte Missverständnis, wie Vektor Akka Cluster

Antwort

0

wie es in den documentation angegeben ist, Akka implementiert:

Eine Variante des Push-Pull-Klatsch wird verwendet, um die Menge an Klatsch zu reduzieren Informationen gesendet um den Cluster. Im Push-Pull-Klatsch wird ein Digest gesendet, der die aktuellen Versionen, aber nicht die tatsächlichen Werte darstellt; der Empfänger des Klatschs kann dann alle Werte zurücksenden, für die es neuere Versionen hat, und auch Werte anfordern, für die es Versionen veraltet hat.

Somit vereinfacht, im Fall 2, wenn ein Empfänger einer Klatschmeldung sieht, dass es eine veraltete Version des Cluster-Status hat es auf die gossiper fragt zurück, um den letzten Zustand. Also, die erste Nachricht vom Klatsch zum Empfänger trägt die Versionen, die zweite vom Klatsch zum Empfänger trägt die tatsächlichen Zustände der Knoten.

Hoffe, das hilft.

Verwandte Themen