Distributed Lock
Problem
Fünf Anwendungsinstanzen können alle ausgeführt werden:
GenerateDailyReport()
Aber nur einer sollte es zu einem Zeitpunkt ausführen.
Eine normale In-Process-Sperre schützt nur eine Maschine.
Lösung — Distributed Lock
Koordinieren Sie das Eigentum durch gemeinsame Infrastruktur.
Beispielsweise steht eine kleine Datei namens report.lock in Azure Blob Storage für die Sperre. Vor der Berichtserstellung fordert jede Anwendungsinstanz eine exklusive Lease für 60 Sekunden an, also ein zeitlich begrenztes Nutzungsrecht.
Azure gewährt Instanz A die Lease und lehnt die Versuche von B und C ab; deren Anwendungscode wartet und versucht es erneut. A erstellt den Bericht, erneuert die Lease bei Bedarf und gibt sie anschließend frei. Stürzt A ab, läuft die Lease aus und eine andere Instanz kann sie übernehmen.
Die Anwendung beginnt erst nach Erhalt der Lease und muss die Arbeit bei deren Verlust einstellen. Azure schützt die Sperrdatei; die Anwendung steuert die Berichtsausführung.
Instanz A → hält Sperre Instanz B → warten Instanz C → warten
Kerngedanke: Distributed Locks koordinieren exklusive Arbeit über mehrere Prozesse oder Maschinen hinweg.