Aller au contenu principal

Baux

Un bail est une possession à durée de vie limitée. Il permet à un client de détenir une ressource en toute sécurité et, si ce client défaille, garantit que la ressource est libérée afin qu'un autre client puisse prendre le relais — c'est ce qui en fait le fondement de la coordination dans Clustron Zaris.

L'idée centrale​

Un bail combine deux propriétés difficiles à obtenir isolément :

possession exclusive + expiration automatique

La possession garantit qu'un seul client contrôle une ressource à la fois. L'expiration garantit que le système se rétablit de lui-même si ce client disparaît. Ensemble, elles vous donnent une possession limitée dans le temps : vous détenez la ressource aussi longtemps que vous gardez le bail actif, et pas davantage.

Pourquoi les baux existent​

Dans un système distribué, la défaillance est la norme, pas l'exception. Les processus plantent, les machines tombent en panne et les connexions réseau se coupent — souvent sans préavis et sans possibilité de nettoyer. Une ressource gardée par un simple verrou est dangereuse dans ce monde : si le propriétaire meurt alors qu'il détient le verrou, celui-ci n'est jamais libéré, la ressource reste bloquée pour toujours, et aucun autre client ne peut déterminer s'il est sûr de prendre le relais.

Un bail supprime ce piège en rendant la possession limitée dans le temps. Parce que chaque bail expire à moins d'être renouvelé, la possession ne peut jamais devenir permanente par accident. Le système se répare de lui-même au lieu d'attendre une intervention manuelle.

Le cycle de vie d'un bail​

Un bail traverse un cycle de vie prévisible, et le comprendre suffit à prédire le comportement du système en fonctionnement normal comme en cas de défaillance :

Acquérir → Actif → Renouveler (optionnel) → Expirer → Libéré

Vous acquérez un bail pour une durée choisie, et il devient actif immédiatement. Pendant qu'il est actif, vous le détenez et pouvez opérer en toute sécurité sur la ressource qu'il garde. Avant qu'il n'expire, vous pouvez le renouveler, ce qui réinitialise le minuteur d'expiration et vous maintient propriétaire pour un intervalle de plus. Si vous cessez de le renouveler, le bail expire automatiquement et la possession est libérée. Une fois libéré, un autre client est libre de l'acquérir.

L'étape de renouvellement est le battement de cœur du modèle : tant qu'un client sain continue de renouveler, il reste propriétaire ; dès qu'il ne peut plus renouveler — parce qu'il a planté ou perdu le réseau — le compte à rebours s'épuise et la possession passe à un autre.

Un exemple concret​

Considérez un worker d'arrière-plan qui traite des tâches. Le Worker A acquiert un bail et commence à traiter, renouvelant le bail au fur et à mesure qu'il travaille. Si le Worker A plante en pleine tâche, il cesse de renouveler, le bail expire et la tâche redevient disponible. Le Worker B acquiert le bail et prend le relais. Aucun opérateur n'a à remarquer la défaillance et aucun script de nettoyage n'a à s'exécuter — la reprise est automatique.

Lier des clés à un bail​

Une clé peut être attachée à un bail de sorte que son existence soit liée à cette possession. Tant que le bail est actif, la clé existe ; lorsque le bail expire, la clé est automatiquement nettoyée avec lui.

Cela transforme un bail en un moyen de représenter un état vivant qui disparaît quand son propriétaire disparaît. Cela convient bien à la possession temporaire, au suivi des ressources et à la présence — par exemple, un worker qui écrit une clé liée à un bail pour annoncer qu'il est vivant, et dont la clé s'évanouit à l'instant où il cesse de renouveler.

Comportement en cas de défaillance​

Les baux sont conçus pour que la défaillance se résolve d'elle-même en toute sécurité. Si un client plante, perd sa connexion réseau ou cesse simplement de renouveler, le résultat est le même : le bail expire. De là, le système fournit deux garanties sur lesquelles vous pouvez compter — la possession finit par être libérée, et aucune possession périmée n'est laissée derrière. Vous n'avez jamais à raisonner sur une ressource détenue par un processus qui n'existe plus.

Les baux comparés aux verrous​

Un bail est comme un verrou, mais plus sûr en cas de défaillance. Un verrou traditionnel conserve la possession jusqu'à ce qu'elle soit explicitement libérée, de sorte qu'un propriétaire planté peut le laisser détenu pour toujours et provoquer un interblocage pour tous les autres. Un bail ne conserve la possession que jusqu'à son expiration, de sorte que la défaillance se résout d'elle-même.

C'est pourquoi la coordination dans Clustron Zaris repose sur des baux : les verrous ici s'appuient sur des baux, ce qui signifie qu'ils héritent de la libération automatique et ne peuvent pas provoquer d'interblocage parce qu'un propriétaire est mort. Vous obtenez un accès exclusif sans le risque classique qui l'accompagne.

Étapes suivantes​