Laden...

Distributed Mesh Storage

Erstellt von MeisterM vor 10 Jahren Letzter Beitrag vor 10 Jahren 633 Views
M
MeisterM Themenstarter:in
17 Beiträge seit 2012
vor 10 Jahren
Distributed Mesh Storage

Hallo Leute,

ich grübel derzeit über ein Konzept um Daten zwischen verschiedenen Mesh Nodes (Wifi Tablets) innerhalb eines Wifi Meshs zu synchronisieren. Die Geräte sind dabei so verbunden, dass sie bereits auf Netzwerkebene über das Meshnetzwerk mit allen Knoten (also nicht nur den direkten Nachbarn) kommunizieren können.

In meiner Anwendung machen sich dann alle Peers über Broadcasts miteinander bekannt. Dies ist kein weiteres Problem. Meine Anwendung soll nun aber einen Datenspeicher enthalten, der über alle Nodes synchronisiert wird. D.h. kommt ein neuer Node dazu erhält er direkt die aktuellen Daten. Verschwindet ein Node und macht Änderungen müssen diese beim Wiedereintritt in das Mesh mit allen anderen abgeglichen werden. Dies ist jetzt leider nicht mehr so trivial und ich bin an der Überlegung wie der Nachrichtenfluss aussehen könnte.

Die Datenstruktur soll eine UniqueID (GUID) sowie ein Objekt enthalten (Hashtable). Der Inhalt des Objekts ist immer das, was zuletzt geschrieben wurde. (Also hier dann zusätzlich noch den Timestamp der letzten Änderung) Gelöschte Objekte müssen natürlich auch auf allen Nodes gelöscht werden.

Ich habe mir jetzt einige Dinge angeschaut und überlegt weiß aber bei manchen Themen nicht weiter:

  • Wenn ein Node betritt, mit wem synchronisiert er sich? Schickt er ein Broadcast mit z.B. einem Hash seiner aktuellen Daten und die Gegenstellen antworten, wenn sie einen anderen Wert haben? Wer sendet dann die aktuellen Daten? Sollte es dann in jedem Teil-Mesh einen Master geben?
  • Wie werden gelöschte Daten mitgeteilt? Müssen alle Nodes eine History vorhalten um auch den Zeitpunkt der Löschung an alle übertragen zu können? Denn ein nicht vorhandener Eintrag (UniqueID) bei einem Peer muss ja nicht bedeuten, dass der Eintrag gelöscht wurde, sondern kann ja auch bedeuten dass der Eintrag neu ist.

Habt ihr schonmal versucht so etwas zu Implementieren?
Welchen Ansatz würdet ihr weiterverfolgen?

Viele Grüße
MeisterM

A
350 Beiträge seit 2010
vor 10 Jahren

Ich weiß nicht ob dir das so passt aber wir hatten mal eine Lösung für eine Art Dezentralen Messanger :

Wir wollten einen Messanger ohne Zentralen Server. Der erste Client der sich einloggt ist dann der Masterserver. Sobald neue Clients dazukommen, fragen diese nach dem Master und kriegen von da die Daten. Sobald der Master Offline geht wandert der Mastertoken weiter.

Wie gesagt, dass ist seeeehr Grob umrissen wie das System funktioniert, bei weiteren Fragen und wenn das irgendwie zu dir passt, melde dich einfach.

Grüße