Replikation (Computer) - Replication (computing)

Die Replikation in der Datenverarbeitung umfasst die gemeinsame Nutzung von Informationen, um die Konsistenz zwischen redundanten Ressourcen wie Software- oder Hardwarekomponenten sicherzustellen , um die Zuverlässigkeit, Fehlertoleranz oder Zugänglichkeit zu verbessern .

Terminologie

Die Replikation in der Informatik kann sich beziehen auf:

  • Datenreplikation , bei der dieselben Daten auf mehreren Speichergeräten gespeichert werden
  • Berechnung Replikation , wo die gleiche Rechenaufgabe viele Male ausgeführt wird. Rechenaufgaben können sein:
    • Im Weltraum repliziert , wo Aufgaben auf separaten Geräten ausgeführt werden
    • Zeitlich repliziert , wobei Aufgaben wiederholt auf einem einzigen Gerät ausgeführt werden

Die Replikation im Raum oder in der Zeit ist oft mit Scheduling-Algorithmen verbunden.

Der Zugriff auf eine replizierte Entität ist normalerweise mit dem Zugriff auf eine einzelne nicht replizierte Entität gleich. Die Replikation selbst sollte für einen externen Benutzer transparent sein . In einem Ausfallszenario sollte ein Failover von Replikaten in Bezug auf die Servicequalität so weit wie möglich ausgeblendet werden .

Informatiker beschreiben die Replikation weiter als:

  • Aktive Replikation , die durch die Verarbeitung derselben Anfrage bei jeder Replik durchgeführt wird
  • Passive Replikation , bei der jede Anfrage auf einem einzelnen Replikat verarbeitet und das Ergebnis auf die anderen Replikate übertragen wird

Wenn eine Leader-Replik über die Leader-Wahl bestimmt wird , um alle Anforderungen zu verarbeiten, verwendet das System ein primäres Backup- oder primäres Replikat- Schema, das in Hochverfügbarkeitsclustern vorherrscht . Im Vergleich dazu , wenn eine Replik eine Anforderung und verteilt einen neuen Zustand verarbeiten kann, wird das System unter Verwendung eines mehr primäres oder Multi-Master - Schema. Im letzteren Fall muss eine Form der verteilten Parallelitätssteuerung verwendet werden, wie z. B. ein verteilter Sperrenmanager .

Der Lastausgleich unterscheidet sich von der Aufgabenreplikation, da er eine Last verschiedener Berechnungen auf die Computer verteilt und es ermöglicht, dass eine einzelne Berechnung im Fehlerfall verworfen wird. Der Lastenausgleich verwendet jedoch manchmal intern die Datenreplikation (insbesondere die Multi-Master-Replikation ), um seine Daten auf die Maschinen zu verteilen.

Backup unterscheidet sich von Replikation dadurch, dass die gesicherte Kopie der Daten über einen langen Zeitraum unverändert bleibt. Replikate hingegen werden häufig aktualisiert und verlieren schnell jeglichen historischen Status. Die Replikation ist eines der ältesten und wichtigsten Themen im Gesamtbereich verteilter Systeme .

Sowohl die Datenreplikation als auch die Berechnungsreplikation erfordern Prozesse, um eingehende Ereignisse zu verarbeiten. Prozesse zur Datenreplikation sind passiv und dienen nur dazu, die gespeicherten Daten zu pflegen, auf Leseanforderungen zu antworten und Aktualisierungen anzuwenden. Die Rechenreplikation wird normalerweise durchgeführt, um Fehlertoleranz zu gewährleisten und eine Operation zu übernehmen, wenn eine Komponente ausfällt. In beiden Fällen besteht die zugrunde liegende Anforderung darin, sicherzustellen, dass die Replikate dieselben Ereignisse in äquivalenter Reihenfolge sehen, damit sie in konsistenten Zuständen bleiben und alle Replikate auf Abfragen antworten können.

Replikationsmodelle in verteilten Systemen

Für die Datenreplikation gibt es drei häufig zitierte Modelle mit jeweils eigenen Eigenschaften und Leistungen:

  • Transaktionsreplikation : Wird zum Replizieren von Transaktionsdaten verwendet , z. B. einer Datenbank. Es wird das One-Copy-Serialisierbarkeitsmodell verwendet, das gültige Ergebnisse einer Transaktion auf replizierten Daten in Übereinstimmung mit den ACID- Gesamteigenschaften (Atomizität, Konsistenz, Isolation, Dauerhaftigkeit) definiert, die Transaktionssysteme garantieren wollen.
  • Zustandsmaschinenreplikation : nimmt an, dass der replizierte Prozess ein deterministischer endlicher Automat ist und dass eine atomare Übertragung jedes Ereignisses möglich ist. Es basiert auf einem verteilten Konsens und hat viele Gemeinsamkeiten mit dem Transaktionsreplikationsmodell. Dies wird manchmal fälschlicherweise als Synonym für aktive Replikation verwendet. Die Replikation des Zustandsautomaten wird normalerweise durch ein repliziertes Protokoll implementiert, das aus mehreren aufeinander folgenden Runden des Paxos-Algorithmus besteht . Dies wurde durch das Chubby-System von Google populär gemacht und ist der Kern des Open-Source- Datenspeichers Keyspace .
  • Virtuelle Synchronität : umfasst eine Gruppe von Prozessen, die zusammenarbeiten, um speicherinterne Daten zu replizieren oder Aktionen zu koordinieren. Das Modell definiert eine verteilte Einheit, die als Prozessgruppe bezeichnet wird . Ein Prozess kann einer Gruppe beitreten und erhält einen Prüfpunkt, der den aktuellen Status der von den Gruppenmitgliedern replizierten Daten enthält. Prozesse können dann Multicasts an die Gruppesendenund sehen eingehende Multicasts in der gleichen Reihenfolge. Mitgliedschaftsänderungen werden als spezieller Multicast behandelt, der den Prozessen in der Gruppe eine neue "Mitgliedschaftsansicht" liefert.

Datenbankreplikation

Die Datenbankreplikation kann auf vielen Datenbankverwaltungssystemen (DBMS) verwendet werden, normalerweise mit einer Primär-/Replikatbeziehung zwischen dem Original und den Kopien. Der Master protokolliert die Aktualisierungen, die dann an die Replikate weitergegeben werden. Jedes Replikat gibt eine Nachricht aus, dass es das Update erfolgreich empfangen hat und ermöglicht so das Senden nachfolgender Updates.

Bei der Multi-Master-Replikation können Aktualisierungen an jeden Datenbankknoten gesendet und dann an andere Server weitergegeben werden. Dies ist häufig erwünscht, führt jedoch zu erheblich erhöhten Kosten und Komplexität, was es in manchen Situationen unpraktisch machen kann. Die häufigste Herausforderung bei der Multi-Master-Replikation ist die Verhinderung oder Lösung von Transaktionskonflikten . Die meisten synchronen (oder eifrigen) Replikationslösungen führen eine Konfliktvermeidung durch, während asynchrone (oder träge) Lösungen eine Konfliktlösung durchführen müssen. Wenn beispielsweise derselbe Datensatz auf zwei Knoten gleichzeitig geändert wird, würde ein Eager Replication-System den Konflikt erkennen, bevor es den Commit bestätigt und eine der Transaktionen abbricht. Ein Lazy-Replication- System würde es beiden Transaktionen ermöglichen, während der Resynchronisierung festzuschreiben und eine Konfliktlösung auszuführen. Die Auflösung eines solchen Konflikts kann auf einem Zeitstempel der Transaktion, auf der Hierarchie der Ursprungsknoten oder auf einer viel komplexeren Logik basieren , die konsistent über alle Knoten hinweg entscheidet.

Die Datenbankreplikation wird komplexer, wenn sie horizontal und vertikal skaliert wird . Horizontales Scale-up hat mehr Datenreplikate, während vertikales Scale-up Datenreplikate hat, die sich in größeren physischen Abständen befinden. Probleme , die durch horizontale Scale-up erhöht durch ein Multi-Layer, Multi-View - Zugriff gelindert werden Protokoll . Die frühen Probleme der vertikalen Skalierung wurden größtenteils durch die Verbesserung der Zuverlässigkeit und Leistung des Internets angegangen .

Wenn Daten zwischen Datenbankservern repliziert werden, so dass die Informationen im gesamten Datenbanksystem konsistent bleiben und Benutzer nicht sagen oder sogar wissen, welchen Server im DBMS sie verwenden, spricht man von einer Replikationstransparenz des Systems.

Replikation von Festplattenspeichern

Speicherreplikation

Die aktive (Echtzeit-)Speicherreplikation wird normalerweise durch die Verteilung von Updates eines Blockgeräts auf mehrere physische Festplatten implementiert . Auf diese Weise kann jedes vom Betriebssystem unterstützte Dateisystem ohne Modifikation repliziert werden, da der Dateisystemcode auf einer Ebene oberhalb der Blockgerätetreiberschicht arbeitet. Sie ist entweder in Hardware (in einem Disk-Array-Controller ) oder in Software (in einem Gerätetreiber ) implementiert .

Die einfachste Methode ist die Festplattenspiegelung , die typisch für lokal verbundene Festplatten ist. Die Speicherindustrie schränkt die Definitionen ein, sodass die Spiegelung ein lokaler Vorgang (Kurzdistanz) ist. Eine Replikation ist über ein Computernetzwerk erweiterbar , sodass sich die Platten an physisch entfernten Standorten befinden können, und normalerweise wird das Master-Slave-Datenbankreplikationsmodell angewendet. Der Zweck der Replikation besteht darin, Schäden durch Ausfälle oder Katastrophen zu verhindern , die an einem Ort auftreten können – oder, falls solche Ereignisse eintreten, die Fähigkeit zur Wiederherstellung von Daten zu verbessern. Für die Replikation ist die Latenz der Schlüsselfaktor, da sie entweder bestimmt, wie weit die Sites voneinander entfernt sein können oder welche Replikationsart verwendet werden kann.

Das Hauptmerkmal einer solchen standortübergreifenden Replikation besteht darin, wie Schreibvorgänge entweder durch asynchrone oder synchrone Replikation gehandhabt werden; Die synchrone Replikation muss bei jedem Schreibvorgang auf die Antwort des Zielservers warten, während dies bei der asynchronen Replikation nicht der Fall ist.

Die synchrone Replikation garantiert "null Datenverlust" durch atomare Schreiboperationen, wobei die Schreiboperation nicht als abgeschlossen gilt, bis sie sowohl vom lokalen als auch vom entfernten Speicher bestätigt wird. Die meisten Anwendungen warten, bis eine Schreibtransaktion abgeschlossen ist, bevor sie mit der weiteren Arbeit fortfahren, daher nimmt die Gesamtleistung erheblich ab. Die Leistung sinkt von Natur aus proportional zur Entfernung, da die minimale Latenz von der Lichtgeschwindigkeit bestimmt wird . Bei einer Entfernung von 10 km dauert der schnellstmögliche Roundtrip 67 μs, während ein vollständiger lokaler Cache-Schreibvorgang in etwa 10–20 μs abgeschlossen ist.

Bei der asynchronen Replikation gilt der Schreibvorgang als abgeschlossen, sobald der lokale Speicher ihn bestätigt. Der Remote-Speicher wird mit einer kleinen Verzögerung aktualisiert . Die Leistung wird stark erhöht, aber im Falle eines Ausfalls des lokalen Speichers kann nicht garantiert werden, dass der Remote-Speicher über die aktuelle Kopie der Daten verfügt (die neuesten Daten können verloren gehen).

Die halbsynchrone Replikation betrachtet einen Schreibvorgang normalerweise als abgeschlossen, wenn er vom lokalen Speicher bestätigt und vom Remote-Server empfangen oder protokolliert wird. Der eigentliche Remote-Schreibvorgang wird asynchron ausgeführt, was zu einer besseren Leistung führt, aber der Remote-Speicher hinkt dem lokalen Speicher hinterher, so dass im Falle eines Ausfalls des lokalen Speichers keine Garantie für Dauerhaftigkeit (dh nahtlose Transparenz) besteht.

Die Point-in-Time-Replikation erzeugt regelmäßige Snapshots, die anstelle des Primärspeichers repliziert werden. Damit sollen statt des gesamten Volumes nur die geänderten Daten repliziert werden. Da mit dieser Methode weniger Informationen repliziert werden, kann die Replikation über kostengünstigere Bandbreitenverbindungen wie iSCSI oder T1 anstelle von Glasfaserleitungen erfolgen.

Implementierungen

Viele verteilte Dateisysteme verwenden die Replikation, um Fehlertoleranz zu gewährleisten und einen Single Point of Failure zu vermeiden.

Viele kommerzielle synchrone Replikationssysteme frieren nicht ein, wenn die Remote-Reproduktion ausfällt oder die Verbindung verliert – ein Verhalten, das einen Null-Datenverlust garantiert –, sondern werden lokal weiter betrieben und verlieren das gewünschte Null- Wiederherstellungspunkt-Ziel .

Techniken der Weitverkehrsnetz(WAN)-Optimierung können angewendet werden, um die durch die Latenz auferlegten Grenzen zu überwinden.

Dateibasierte Replikation

Die dateibasierte Replikation führt die Datenreplikation auf der logischen Ebene (dh einzelnen Datendateien) statt auf der Speicherblockebene durch. Dafür gibt es viele verschiedene Möglichkeiten, die fast ausschließlich auf Software beruhen.

Capture mit einem Kernel-Treiber

Ein Kernel-Treiber (insbesondere ein Filter-Treiber ) kann verwendet werden, um Aufrufe der Dateisystemfunktionen abzufangen und jede Aktivität aufzuzeichnen, sobald sie auftritt. Dabei wird dieselbe Art von Technologie verwendet, die aktive Echtzeit-Virenprüfer verwenden. Auf dieser Ebene werden logische Dateioperationen wie Datei öffnen, Schreiben, Löschen usw. erfasst. Der Kernel-Treiber überträgt diese Befehle an einen anderen Prozess, im Allgemeinen über ein Netzwerk an eine andere Maschine, die die Operationen der Quellmaschine nachahmt. Wie die Speicherreplikation auf Blockebene ermöglicht die Replikation auf Dateiebene sowohl synchrone als auch asynchrone Modi. Im synchronen Modus werden Schreibvorgänge auf dem Quellcomputer angehalten und dürfen nicht ausgeführt werden, bis der Zielcomputer die erfolgreiche Replikation bestätigt hat. Der synchrone Modus ist bei Dateireplikationsprodukten weniger verbreitet, obwohl es einige Lösungen gibt.

Replikationslösungen auf Dateiebene ermöglichen fundierte Entscheidungen über die Replikation basierend auf dem Speicherort und Typ der Datei. Beispielsweise könnten temporäre Dateien oder Teile eines Dateisystems, die keinen Geschäftswert haben, ausgeschlossen werden. Die übermittelten Daten können auch granularer sein; schreibt eine Anwendung 100 Byte, werden statt eines kompletten Plattenblocks (in der Regel 4.096 Byte) nur die 100 Byte übertragen. Dadurch wird die von der Quellmaschine gesendete Datenmenge und die Speicherbelastung der Zielmaschine erheblich reduziert.

Nachteile dieser reinen Softwarelösung sind der Bedarf an Implementierung und Wartung auf Betriebssystemebene sowie eine erhöhte Belastung der Rechenleistung der Maschine.

Replikation des Dateisystemjournals

Ähnlich wie bei Datenbank - Transaktionsprotokolle , viele Dateisysteme haben die Fähigkeit, Zeitschrift ihre Tätigkeit. Das Journal kann periodisch oder in Echtzeit per Streaming an einen anderen Rechner gesendet werden. Auf der Replikatseite kann das Journal verwendet werden, um Dateisystemänderungen abzuspielen.

Eine der bemerkenswerten Implementierungen ist Microsoft ‚s System Center Data Protection Manager (DPM), im Jahr 2005 veröffentlicht, die regelmäßigen Aktualisierungen führt aber nicht Replikation in Echtzeit bieten.

Batch-Replikation

Dies ist der Prozess, bei dem die Quell- und Zieldateisysteme verglichen und sichergestellt werden, dass das Ziel mit der Quelle übereinstimmt. Der Hauptvorteil besteht darin, dass solche Lösungen in der Regel kostenlos oder kostengünstig sind. Der Nachteil ist, dass der Synchronisierungsprozess ziemlich systemintensiv ist und dieser Prozess daher im Allgemeinen selten ausgeführt wird.

Eine der bemerkenswerten Implementierungen ist rsync .

Verteilte Shared Memory-Replikation

Ein weiteres Beispiel für die Verwendung der Replikation erscheint in verteilten gemeinsam genutzten Speichersystemen, bei denen viele Knoten des Systems die gleiche Seite des Speichers. Dies bedeutet normalerweise, dass jeder Knoten eine separate Kopie (Replik) dieser Seite hat.

Primär-Backup und Multi-Primär-Replikation

Viele klassische Replikationsansätze basieren auf einem primären Backup-Modell, bei dem ein Gerät oder Prozess einseitige Kontrolle über einen oder mehrere andere Prozesse oder Geräte hat. Der primäre Server kann beispielsweise einige Berechnungen durchführen und ein Aktualisierungsprotokoll an einen Backup-(Standby-)Prozess streamen, der dann übernehmen kann, wenn der primäre Server ausfällt. Dieser Ansatz ist bei der Replikation von Datenbanken üblich, obwohl das Risiko besteht, dass, wenn ein Teil des Protokolls während eines Fehlers verloren geht, die Sicherung möglicherweise nicht identisch mit der primären Sicherung ist und Transaktionen dann verloren gehen könnten.

Eine Schwäche von Primär-Backup-Schemata besteht darin, dass nur eines tatsächlich Operationen durchführt. Fehlertoleranz wird gewonnen, aber das identische Backup-System verdoppelt die Kosten. Aus diesem Grund beginnend mit c.  1985 begann die Forschungsgemeinschaft verteilter Systeme, alternative Methoden zur Datenreplikation zu erforschen. Ein Ergebnis dieser Arbeit waren Schemata, bei denen eine Gruppe von Replikaten zusammenarbeiten konnte, wobei jeder Prozess als Backup fungierte und gleichzeitig einen Teil der Arbeitslast abwickelte.

Der Informatiker Jim Gray analysierte Multi-Primär-Replikationsschemata nach dem Transaktionsmodell und veröffentlichte ein vielzitiertes Papier, das dem Ansatz "The Dangers of Replication and a Solution" skeptisch gegenübersteht. Er argumentierte, dass, wenn die Daten nicht auf natürliche Weise aufgeteilt werden, so dass die Datenbank als n n getrennte Unterdatenbanken behandelt werden kann, Konflikte bei der Parallelitätskontrolle zu ernsthaften Leistungseinbußen führen und die Gruppe von Replikaten wahrscheinlich als Funktion von n langsamer wird . Gray schlug vor, dass die gebräuchlichsten Ansätze wahrscheinlich zu einer Verschlechterung führen, die als O(n³) skaliert . Seine Lösung, die darin besteht, die Daten zu partitionieren, ist nur in Situationen praktikabel, in denen Daten tatsächlich einen natürlichen Partitionierungsschlüssel haben.

In den Jahren 1985-1987 wurde das virtuelle Synchroniemodell vorgeschlagen und als weit verbreiteter Standard etabliert (es wurde in den Systemen Isis Toolkit, Horus, Transis, Ensemble, Totem, Spread , C-Ensemble, Phoenix und Quicksilver verwendet und ist die Basis für den fehlertoleranten Rechenstandard CORBA ). Virtuelle Synchronität ermöglicht einen multiprimären Ansatz, bei dem eine Gruppe von Prozessen zusammenarbeitet, um einige Aspekte der Anforderungsverarbeitung zu parallelisieren. Das Schema kann nur für einige Formen von In-Memory-Daten verwendet werden, kann jedoch eine lineare Beschleunigung der Gruppengröße bieten.

Eine Reihe moderner Produkte unterstützt ähnliche Systeme. Das Spread Toolkit unterstützt beispielsweise dasselbe virtuelle Synchronie-Modell und kann verwendet werden, um ein Multi-Primär-Replikationsschema zu implementieren; es wäre auch möglich, C-Ensemble oder Quicksilver auf diese Weise zu verwenden. WANdisco ermöglicht eine aktive Replikation, bei der jeder Knoten in einem Netzwerk eine exakte Kopie oder Replik ist und somit jeder Knoten im Netzwerk gleichzeitig aktiv ist; Dieses Schema ist für die Verwendung in einem Weitverkehrsnetz (WAN) optimiert .

Siehe auch

Verweise