10 Stimmen

Wie lassen sich große Datenmengen am besten mit der ganzen Welt synchronisieren?

Ich habe eine große Menge an Daten, die ich über 4 oder 5 Standorte auf der ganzen Welt synchronisieren muss, etwa ein halbes Terabyte an jedem Standort. Täglich kommen etwa 1,4 Gigabyte hinzu oder ändern sich, und die Daten können sich an jedem der vier Standorte ändern.

Ein großer Prozentsatz (30 %) der Daten sind doppelte Pakete (vielleicht gepackte JDKs), so dass die Lösung eine Möglichkeit beinhalten müsste, die Tatsache zu erkennen, dass solche Dinge auf dem lokalen Rechner herumliegen und sie zu holen, anstatt sie von einer anderen Website herunterzuladen.

Die Kontrolle der Versionierung ist kein Thema, da es sich nicht um eine Codebasis an sich handelt.

Ich bin nur daran interessiert, ob es irgendwelche Lösungen gibt (vorzugsweise Open-Source), die einer solchen Sache nahe kommen?

Mein kleines Skript mit rsync reicht nicht mehr aus, ich möchte eine komplexere, intelligente Synchronisierung durchführen.

Danke

Bearbeiten : Dies sollte UNIX-basiert sein :)

12voto

Vinko Vrsalovic Punkte 252104

Haben Sie versucht Unisono ?

Ich habe damit gute Erfahrungen gemacht. Es ist im Grunde ein intelligenteres rsync, was vielleicht das ist, was Sie wollen. Es gibt eine Liste zum Vergleich von Dateisynchronisationstools aquí .

5voto

ADEpt Punkte 5434

Das klingt nach einem Job für BitTorrent.

Erstellen Sie für jede neue Datei an jedem Standort eine Bittorrent-Seed-Datei und legen Sie sie in einem zentralen, über das Internet zugänglichen Verzeichnis ab.

Jede Website lädt dann (über Bittorrent) alle Dateien herunter. Auf diese Weise erhalten Sie eine gemeinsame Nutzung der Bandbreite und eine automatische Wiederverwendung lokaler Kopien.

Das tatsächliche Rezept hängt von Ihrem Bedarf ab. Sie können zum Beispiel 1 Bittorrent-Seed für jede Datei auf jedem Host erstellen und die Änderungszeit der Seed-Datei mit der Änderungszeit der Datei selbst übereinstimmen lassen. Da Sie dies täglich (stündlich?) tun werden, ist es besser, etwas wie "make" zu verwenden, um Seed-Dateien nur für neue oder aktualisierte Dateien (neu) zu erstellen.

Dann kopieren Sie alle Seed-Dateien von allen Hosts an den zentralen Speicherort ("tracker dir") mit der Option "overwrite only if newer". So erhalten Sie eine Reihe von Torrent-Seeds für alle neuesten Kopien aller Dateien.

Dann lädt jeder Host alle Seed-Dateien herunter (wiederum mit der Einstellung "Überschreiben, wenn neuer") und startet den Bittorrent-Download für alle. Dadurch werden alle neuen/aktualisierten Dateien heruntergeladen/neu heruntergeladen.

Täglich wiederholen und wiederholen.

Übrigens wird es kein "Herunterladen von sich selbst" geben, wie Sie in Ihrem Kommentar sagten. Wenn die Datei bereits

1voto

Marko Punkte 29192

Sie haben eine Vielzahl von Möglichkeiten:

  • Sie können versuchen, Folgendes einzurichten replizierte DB um Daten zu speichern.
  • Verwenden Sie eine Kombination aus rsync o lftp und benutzerdefinierte Skripte, aber das passt nicht zu Ihnen.
  • Verwenden Sie git Repos mit maximaler Komprimierung und Synchronisierung zwischen ihnen mit Hilfe einiger Skripte
  • Da die Datenmenge ziemlich groß und wahrscheinlich wichtig ist, sollten Sie entweder eine eigene Entwicklung durchführen oder einen Experten beauftragen ;)

1voto

bbqchickenrobot Punkte 3464

Schauen Sie sich super flexible.... es ist ziemlich cool, habe es nicht in einer großen Umgebung verwendet, aber auf einem 3-Knoten-System schien es perfekt zu funktionieren.

0voto

Echostorm Punkte 9442

S F

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X