Zum Hauptinhalt springen

Leases

Eine Lease ist Ownership mit begrenzter Lebensdauer. Sie erlaubt es einem Client, eine Ressource sicher zu halten, und garantiert bei einem Ausfall dieses Clients, dass die Ressource freigegeben wird, sodass ein anderer Client übernehmen kann — und genau das macht sie zur Grundlage der Koordination in Clustron Zaris.

Die Grundidee​

Eine Lease kombiniert zwei Eigenschaften, die einzeln schwer korrekt umzusetzen sind:

exklusive Ownership + automatischer Ablauf

Die Ownership stellt sicher, dass immer nur ein Client eine Ressource kontrolliert. Der Ablauf stellt sicher, dass sich das System selbst erholt, falls dieser Client verschwindet. Zusammen ergeben sie zeitgebundene Ownership: Sie halten die Ressource, solange Sie die Lease am Leben halten, und nicht länger.

Warum es Leases gibt​

In einem verteilten System ist ein Ausfall der Normalfall, nicht die Ausnahme. Prozesse stürzen ab, Maschinen fallen aus, und Netzwerkverbindungen brechen ab — oft ohne Vorwarnung und ohne Gelegenheit zum Aufräumen. Eine durch einen einfachen Lock geschützte Ressource ist in dieser Welt gefährlich: Stirbt der Owner, während er den Lock hält, wird der Lock nie freigegeben, die Ressource bleibt für immer blockiert, und kein anderer Client kann feststellen, ob eine Übernahme sicher ist.

Eine Lease beseitigt diese Falle, indem sie die Ownership zeitgebunden macht. Weil jede Lease abläuft, sofern sie nicht erneuert wird, kann Ownership nie versehentlich dauerhaft werden. Das System heilt sich selbst, statt auf manuelles Eingreifen zu warten.

Der Lease-Lebenszyklus​

Eine Lease durchläuft einen vorhersagbaren Lebenszyklus, und sein Verständnis genügt, um das Verhalten des Systems im Normalbetrieb wie im Fehlerfall vorherzusagen:

Acquire → Active → Renew (optional) → Expire → Released

Sie erwerben (Acquire) eine Lease für eine gewählte Dauer, und sie ist sofort aktiv. Solange sie aktiv (Active) ist, besitzen Sie sie und können sicher auf der geschützten Ressource arbeiten. Vor dem Ablauf können Sie sie erneuern (Renew), wodurch der Ablauf-Timer zurückgesetzt wird und Sie für ein weiteres Intervall Owner bleiben. Wenn Sie die Erneuerung einstellen, läuft die Lease automatisch ab (Expire) und die Ownership wird freigegeben. Sobald sie freigegeben (Released) ist, kann ein anderer Client sie erwerben.

Der Renew-Schritt ist der Herzschlag des Modells: Solange ein gesunder Client weiter erneuert, bleibt er Owner; sobald er nicht mehr erneuern kann — weil er abgestürzt ist oder das Netzwerk verloren hat — läuft die Zeit ab und die Ownership geht über.

Ein konkretes Beispiel​

Stellen Sie sich einen Hintergrund-Worker vor, der Jobs verarbeitet. Worker A erwirbt eine Lease und beginnt mit der Verarbeitung, wobei er die Lease während der Arbeit erneuert. Stürzt Worker A mitten im Job ab, hört er auf zu erneuern, die Lease läuft ab, und der Job steht wieder zur Verfügung. Worker B erwirbt die Lease und übernimmt. Kein Operator muss den Ausfall bemerken, und kein Bereinigungsskript muss laufen — die Wiederherstellung erfolgt automatisch.

Keys an eine Lease binden​

Ein Key kann an eine Lease gebunden werden, sodass seine Existenz an diese Ownership geknüpft ist. Solange die Lease aktiv ist, existiert der Key; läuft die Lease ab, wird der Key automatisch mit bereinigt.

Dadurch wird eine Lease zu einem Mittel, um Live-Zustand darzustellen, der mit seinem Owner verschwindet. Sie eignet sich gut für temporäre Ownership, Ressourcenverfolgung und Presence — etwa für einen Worker, der einen an eine Lease gebundenen Key schreibt, um zu melden, dass er lebt, und dessen Key in dem Moment verschwindet, in dem er die Erneuerung einstellt.

Verhalten im Fehlerfall​

Leases sind so gebaut, dass sich Fehler von selbst sicher auflösen. Stürzt ein Client ab, verliert seine Netzwerkverbindung oder stellt einfach die Erneuerung ein, ist das Ergebnis dasselbe: Die Lease läuft ab. Daraus ergeben sich zwei Garantien, auf die Sie sich verlassen können — die Ownership wird irgendwann freigegeben, und es bleibt keine veraltete Ownership zurück. Sie müssen nie über eine Ressource nachdenken, die einem nicht mehr existierenden Prozess gehört.

Leases im Vergleich zu Locks​

Eine Lease ist wie ein Lock, aber sicherer im Fehlerfall. Ein herkömmlicher Lock hält die Ownership, bis er explizit freigegeben wird, sodass ein abgestürzter Owner ihn für immer gehalten lassen und alle anderen in einen Deadlock stürzen kann. Eine Lease hält die Ownership nur bis zu ihrem Ablauf, sodass sich ein Fehler von selbst auflöst.

Deshalb basiert die Koordination in Clustron Zaris auf Leases: Locks sind hier Lease-gestützt, erben also die automatische Freigabe und können nicht durch einen gestorbenen Owner zum Deadlock führen. Sie erhalten exklusiven Zugriff ohne das klassische Risiko, das damit sonst einhergeht.

Nächste Schritte​