Verteilte Sperren implementieren
- Auf der Redis-Website wurde der Redlock-Algorithmus entdeckt, der behauptet, fehlertolerante verteilte Sperren auf Redis zu implementieren.
- Es existieren bereits mehrere unabhängige Implementierungen von Redlock, und da sich möglicherweise Menschen auf diesen Algorithmus verlassen, hat der Autor beschlossen, seine Notizen zu teilen.
- Redis ist nützlich, um flüchtige und sich schnell ändernde Daten zwischen Servern zu teilen, aber es ist bedenklich, dies auf den Bereich der Datenverwaltung auszuweiten, in dem starke Konsistenz und Dauerhaftigkeit gefordert sind.
Zweck von Sperren
- Sperren dienen dazu sicherzustellen, dass von mehreren Knoten nur einer eine bestimmte Aufgabe ausführt.
- Wenn Sperren aus Effizienzgründen verwendet werden, ist die Nutzung einer einzelnen Redis-Instanz möglicherweise die bessere Wahl.
- Wenn Sperren für Korrektheit verwendet werden, ist Redlock nicht geeignet.
Ressourcen mit Sperren schützen
- Sperren in verteilten Systemen unterscheiden sich von Mutexen in Multithread-Anwendungen.
- Sie verhindern, dass ein anderer Client denselben Vorgang ausführt, während ein Client eine Datei liest, sie verändert und anschließend wieder zurückschreibt.
Sichere Sperren mit Fencing implementieren
- Sichere Sperren lassen sich implementieren, indem Fencing-Tokens erzeugt und in Schreibanfragen einbezogen werden.
- Redlock ist nicht sicher, da es keine Fencing-Tokens erzeugen kann.
Zeit für Konsens verwenden
- Redlock macht im Gegensatz zu Algorithmen im asynchronen Modell viele Annahmen über die Zeit.
- Wenn sich Systemuhren ungewöhnlich verhalten, kann das Ablaufen von Schlüsseln früher oder später als erwartet erfolgen.
Die Zeitannahmen von Redlock brechen
- Redlock setzt ein synchrones Systemmodell voraus und funktioniert nur korrekt, wenn Netzwerklatenz, Prozesspausen und Uhrfehler begrenzt sind.
- Fälle wie der 90-sekündige Paketverzögerungsvorfall bei GitHub können die Sicherheit von Redlock gefährden.
Fazit
- Redlock ist für auf Effizienz optimierte Sperren unnötig schwergewichtig und für Situationen, die Korrektheit erfordern, nicht sicher genug.
- Wenn Sperren für Korrektheit erforderlich sind, empfiehlt sich der Einsatz eines geeigneten Konsenssystems wie ZooKeeper.
Zusammenfassung von GN⁺
- Der Redlock-Algorithmus liefert eine wichtige Diskussion über die Implementierung von Sperren in verteilten Systemen.
- Dieser Artikel hebt Zeitannahmen und Sicherheitsprobleme in verteilten Systemen hervor und erklärt die Bedeutung einer korrekten Sperren-Implementierung.
- Er empfiehlt alternative Systeme wie ZooKeeper und hilft dabei, die Komplexität verteilter Systeme zu verstehen.
1 Kommentare
Hacker-News-Kommentare
SET-Operation umgewandelt habe.