Dies ist eine maschinelle Übersetzung. Das Original in Englisch ist hier: Update 26 January, 2023
Diese Woche gehen wir noch einmal auf das Node-Alter ein und sehen uns einige Optimierungen an, um es für mehr Netzwerkoperationen zu nutzen. Machen Sie sich keine Sorgen, um jegliches Heulen und Zähneknirschen zu vermeiden, es ist nicht die Art von architektonischer Umgestaltung, die Monate dauern wird. Es baut auf dem auf, was bereits in Bezug auf neue Knoten vorhanden ist, die sich beweisen und im Netzwerk bewegen müssen, nimmt diesen jungen Knoten jedoch kritische Datenverarbeitungspflichten ab und beschränkt sie auf diejenigen, die sich bereits bewährt haben.
Allgemeiner Fortschritt
Nach langen und teils hitzigen Community-Diskussionen haben @JimCollinson und @andrew die Spreadsheets wieder rausgeholt und die verschiedenen Optionen zur Token-Verteilung durchgearbeitet. Wir hoffen aufrichtig, dass dies die Grundlage dafür bietet, jetzt weiterzumachen.
@joshuef hat mit Testnetzen mit noch kleineren virtuellen Maschinen und kleinen Knoten experimentiert. Es lief ziemlich gut, aber es gab ein paar Fehler, die den DKG-Prozess (Elders Voting) betreffen, bei dem manchmal keine Stimmen eingehen. In diesem Zusammenhang werfen @anselme, @maqi und @davidrusu einen genauen Blick auf DKG, was genau es auslöst, einschließlich eines Blicks auf die SAP-Generation ( ein neuer Datensatz von Ältesten, der bei jeder Abwanderung erstellt wird) und wo genau das eine DKG-Runde auslöst.
@oetyng hat den Beitrittsprozess vereinfacht, indem es in die regulären Nachrichtenflüsse verschoben wurde. Danach wurde der Umzugsfluss vereinfacht, indem er auch zu einem Join gemacht wurde, aber zu einem anderen Abschnitt, und einen Umzugsnachweis enthielt. @davidrusu fand eine potenzielle Notwendigkeit, zu behaupten, dass ein gültiges Abwanderungsereignis verwendet wurde, diese Arbeit steht bevor.
@bochaco hat sn_comms, das Kommunikationsmodul, debuggt und finalisiert, das er weiterhin umgestaltet.
Und Mostafa hat das Testen des Konsensalgorithmus abgeschlossen und ihn zum Hauptrepo hinzugefügt.
Vielen Dank an @southside für den Vorschlag der ChatGTP-Code-Kommentar-Initiative. Jeder, der dort helfen möchte (keine technischen Fähigkeiten erforderlich), sollte sich diesen Beitrag ansehen.
Alter und Daten des Knotens
Verantwortlichkeiten im Netzwerk basieren auf dem Begriff des Knotenalters.
Das Knotenalter steigt nicht linear, sondern exponentiell an, was bedeutet, dass jede Alterserhöhung auf dem 2-fachen dessen basiert, was der vorherigen Erhöhung zugrunde lag.
Die Zeit im Netzwerk wird in der Anzahl von Ereignissen gemessen, und die Messung ist ungefähr, da wir eine probabilistische Bewertung durchführen.
Das Alter „A“ tritt also nach „~n“ Ereignissen auf, und das Alter „A+1“ tritt nach „~2n“ Ereignissen auf.
Der Grund, warum das Node-Alter auf diese Weise gemessen wird, ergibt sich aus der empirischen Beobachtung, dass Nodes, die x-mal online geblieben sind, wahrscheinlich noch mindestens x-mal online bleiben. Wenn Sie also Zeit „t“ im Netzwerk verbracht haben, ist es wahrscheinlich, dass Ihre Gesamtzeit im Netzwerk am Ende mindestens „2t“ beträgt.
Dies bedeutet einfach, dass je jünger der Knoten ist, desto wahrscheinlicher wird er offline gehen, und je älter, desto wahrscheinlicher, dass er online bleibt.
Sehr stabile und sehr instabile Knoten zu haben, die beide Live-Daten speichern, wie wir es jetzt tun, ist schwer zu verwalten, wenn es viele Abwanderungen gibt. Wenn ein Knoten offline geht, müssen seine Daten zum nächsten XOR-nächsten Kandidaten übertragen werden, was einige Zeit in Anspruch nimmt. Neue Knoten sind nicht zuverlässig und können schnell offline gehen, was viele Datenbewegungen und Kopfschmerzen für die Ältesten bedeutet, die sie verwalten müssen.
Primär- und Sekundärspeicher
Wir betrachten Konzepte rund um einen „stabilen Satz“ von Knoten (dazu später mehr). Aber eine Idee, die uns dies gibt, ist die Aufteilung von Knoten in zwei Speicherebenen, basierend auf dem Alter und (daher) der Wahrscheinlichkeit einer Abwanderung, und ihnen somit unterschiedliche Aufgaben zuzuweisen.
Zum Beispiel möchten wir, dass die stabilsten Knoten (z. B. ab 10 Jahren) für die primäre Datenspeicherung verantwortlich sind. Diese Nodes kümmern sich um die Daten und geben sie auf Anfrage an einen Client weiter. Sie werden wahrscheinlich in absehbarer Zeit nicht abwandern.
Knoten außerhalb eines solchen stabilen Satzes, die noch daran arbeiten, ihr Knotenalter zu erhöhen, halten zusätzliche Kopien von Daten (Sekundärspeicher). Dabei stellen sie Redundanz bereit, um den stabilen Satz zu unterstützen.
Ihr Verhalten im Umgang mit diesen Daten wird auch in üblicher Weise zur Bewertung ihrer Qualität herangezogen. Aber da sie nur zusätzliche Kopien halten, müssen sie von den Ältesten nicht so genau verfolgt werden und können ausfallen, ohne ernsthafte Probleme im Netzwerk zu verursachen oder eine Massendatenmigration zu erfordern.
Dies würde es uns ermöglichen, die Anzahl der Replikationen für Daten zu erhöhen und gleichzeitig eingehende Knoten gründlicher zu testen, ohne dabei die Datenstabilität zu opfern. Alles durch Nutzung unseres bestehenden Node-Age-Systems.
Nützliche Links
Fühlen Sie sich frei, unten mit Links zu Übersetzungen dieses Entwicklungsupdates zu antworten, und die Moderatoren werden sie hier hinzufügen.
Als Open Source-Projekt sind wir immer auf der Suche nach Feedback, Kommentaren und Community-Beiträgen. Seien Sie also nicht schüchtern, machen Sie mit und lassen Sie uns gemeinsam das sichere Netzwerk erstellen!