Aller au contenu principal

Modèle de coordination

Clustron Zaris fournit des primitives qui permettent à des instances d'application indépendantes de se coordonner en toute sécurité au travers d'un état partagé. Cet article explique le modèle derrière les verrous, les compteurs et les observateurs (watch) — à quoi ils servent et pourquoi ils se comportent de façon prévisible en cas de défaillance — afin que vous puissiez décider lequel convient à un problème donné.

L'idée fondamentale​

La coordination dans Clustron Zaris repose sur trois idées qui fonctionnent ensemble :

état partagé + propriété contrôlée + récupération automatique

Le store détient l'état partagé, les baux donnent une propriété contrôlée et limitée dans le temps, et l'expiration fournit une récupération automatique lorsqu'un propriétaire échoue. C'est pourquoi les applications coordonnées se comportent de façon prévisible même lorsqu'un processus plante : la même machinerie qui gère la durée de vie des données gère aussi qui est responsable de quoi.

Les primitives ne sont pas des sous-systèmes séparés boulonnés à côté des données. Elles sont construites sur les couches que vous connaissez déjà :

Clés → TTL → Baux → Coordination

Les clés stockent l'état, le TTL gère sa durée de vie, les baux gèrent la propriété, et les primitives de coordination s'appuient par-dessus. Parce qu'elles partagent une fondation unique, elles se composent proprement et échouent en toute sécurité ensemble.

Les trois primitives​

Clustron Zaris vous donne trois primitives de coordination, chacune répondant à une question différente : les verrous répondent à « qui peut agir », les compteurs répondent à « combien », et les observateurs répondent à « qu'est-ce qui a changé ».

Verrous​

Un verrou garantit qu'un seul client peut agir sur une ressource à la fois. Utilisez-en un lorsqu'une section critique doit s'exécuter exactement une fois dans l'ensemble de votre système — pour empêcher l'exécution en double d'un travail, garantir qu'un seul worker traite une tâche, ou protéger une ressource partagée d'une modification concurrente.

Les verrous vous donnent une propriété exclusive, et parce qu'ils sont adossés à des baux, ils sont sûrs en cas de défaillance : si le propriétaire plante, son bail expire et le verrou est libéré automatiquement. Il n'y a pas de nettoyage manuel ni de risque qu'un propriétaire mort bloque tous les autres dans un interblocage.

Compteurs​

Un compteur maintient un état numérique partagé que de nombreux clients mettent à jour en même temps. Utilisez-en un pour suivre des décomptes tels que les workers actifs, pour appliquer des limites de débit, ou pour collecter des métriques distribuées.

Les mises à jour de compteurs sont atomiques et cohérentes entre les nœuds, de sorte que les incrémentations et décrémentations concurrentes ne perdent pas de mises à jour et vous n'avez besoin d'aucune synchronisation manuelle autour d'elles. C'est la façon sûre de maintenir un total courant auquel plusieurs instances contribuent — là où un simple lire-modifier-écrire sur une clé risquerait de perdre des mises à jour.

Observateurs (watch)​

Watch permet à un client d'observer les changements de clés ou de préfixes de clés et de réagir au fur et à mesure qu'ils surviennent. Utilisez-le pour réagir aux changements de configuration, surveiller les transitions d'état, ou déclencher des workflows au moment où les données changent.

Watch livre des notifications en temps réel, fonctionne à travers des nœuds distribués et élimine le sondage : au lieu de vérifier à répétition s'il y a eu des changements, votre application en est informée. Cela transforme un système qui demande « quelque chose a-t-il changé ? » en un système qui réagit quand quelque chose change.

Pourquoi un modèle unique compte​

Construits sans modèle unifié, les systèmes distribués ont tendance à accumuler des infrastructures séparées — un système pour le verrouillage, un autre pour la messagerie, et de la glu écrite à la main pour les coordonner. Clustron Zaris plie tout cela dans un seul système doté d'une API cohérente unique, avec la sécurité et la gestion du cycle de vie intégrées. Vous interagissez avec les verrous, les compteurs et les observateurs de la même façon que vous interagissez avec les données, et ils héritent des mêmes garanties.

Étapes suivantes​