Saltar al contenido principal

Leases

Un lease es propiedad con un tiempo de vida limitado. Permite que un cliente mantenga un recurso de forma segura y, si ese cliente falla, garantiza que el recurso se libere para que otro cliente pueda tomar el relevo — que es lo que lo convierte en el fundamento de la coordinación en Clustron Zaris.

La idea central​

Un lease combina dos propiedades que son difíciles de lograr por separado:

propiedad exclusiva + expiración automática

La propiedad asegura que solo un cliente controla un recurso a la vez. La expiración asegura que el sistema se recupera por sí solo si ese cliente desaparece. Juntas te dan propiedad acotada en el tiempo: mantienes el recurso mientras mantengas activo el lease, y no más.

Por qué existen los leases​

En un sistema distribuido, el fallo es lo normal, no la excepción. Los procesos se bloquean, las máquinas se caen y las conexiones de red se cortan — a menudo sin aviso y sin oportunidad de limpiar. Un recurso protegido por un lock simple es peligroso en este mundo: si el propietario muere mientras mantiene el lock, el lock nunca se libera, el recurso queda atascado para siempre, y ningún otro cliente puede saber si es seguro tomar el relevo.

Un lease elimina esa trampa al hacer que la propiedad esté acotada en el tiempo. Como cada lease expira a menos que se renueve, la propiedad nunca puede volverse permanente por accidente. El sistema se cura a sí mismo en lugar de esperar una intervención manual.

El ciclo de vida de un lease​

Un lease avanza por un ciclo de vida predecible, y entenderlo basta para predecir cómo se comporta el sistema tanto en operación normal como ante un fallo:

Adquirir → Activo → Renovar (opcional) → Expirar → Liberado

Adquieres un lease por una duración elegida, y se vuelve activo de inmediato. Mientras está activo, eres su propietario y puedes operar con seguridad sobre el recurso que protege. Antes de que expire puedes renovarlo, lo que restablece el temporizador de expiración y te mantiene como propietario durante otro intervalo. Si dejas de renovar, el lease expira automáticamente y la propiedad se libera. Una vez liberado, otro cliente es libre de adquirirlo.

El paso de renovación es el latido del modelo: mientras un cliente sano siga renovando, sigue siendo el propietario; en el momento en que ya no pueda renovar — porque se bloqueó o perdió la red — el reloj se agota y la propiedad pasa a otro.

Un ejemplo concreto​

Considera un worker en segundo plano que procesa trabajos. El Worker A adquiere un lease y empieza a procesar, renovando el lease a medida que trabaja. Si el Worker A se bloquea a mitad de trabajo, deja de renovar, el lease expira, y el trabajo vuelve a estar disponible. El Worker B adquiere el lease y toma el relevo. Ningún operador tiene que advertir el fallo y ningún script de limpieza tiene que ejecutarse — la recuperación es automática.

Ligar claves a un lease​

Una clave puede adjuntarse a un lease de modo que su existencia quede ligada a esa propiedad. Mientras el lease está activo, la clave existe; cuando el lease expira, la clave se limpia automáticamente junto con él.

Esto convierte un lease en una forma de representar estado vivo que desaparece cuando lo hace su propietario. Es muy adecuado para la propiedad temporal, el seguimiento de recursos y la presencia — por ejemplo, un worker que escribe una clave ligada a un lease para anunciar que está vivo, y cuya clave se desvanece en el instante en que deja de renovar.

Comportamiento ante fallos​

Los leases están construidos de modo que el fallo se resuelve de forma segura por sí solo. Si un cliente se bloquea, pierde su conexión de red, o simplemente deja de renovar, el resultado es el mismo: el lease expira. De ahí el sistema proporciona dos garantías en las que puedes confiar — la propiedad acaba por liberarse, y no queda ninguna propiedad obsoleta. Nunca tienes que razonar sobre un recurso que pertenece a un proceso que ya no existe.

Leases comparados con locks​

Un lease es como un lock, pero más seguro ante fallos. Un lock tradicional mantiene la propiedad hasta que se libera explícitamente, de modo que un propietario bloqueado puede dejarlo retenido para siempre y poner a todos los demás en un deadlock. Un lease mantiene la propiedad solo hasta que expira, así que el fallo se resuelve por sí mismo.

Por eso la coordinación en Clustron Zaris se construye sobre leases: los locks aquí están respaldados por leases, lo que significa que heredan la liberación automática y no pueden entrar en deadlock porque un propietario muriera. Obtienes acceso exclusivo sin el riesgo clásico que lo acompaña.

Próximos pasos​