Aller au contenu principal
Architecture

Un cluster qui se coordonne lui-même

Nodus est un cœur de clustering et de messagerie que vous embarquez dans votre processus. Chaque membre exécute les mêmes couches sur un transport partagé — ainsi l'appartenance, le leadership et la messagerie émergent des nœuds eux-mêmes, sans coordinateur externe à exploiter.

La forme de la chose

Des pairs, pas un coordinateur

Chaque membre maintient une connexion persistante vers chaque pair et exécute les mêmes quatre couches. Il n'y a aucun nœud privilégié dont les autres dépendent — le leader est simplement le membre qu'ils élisent tous.

Votre service — un processus par membreNodus est une bibliothèque que vous embarquez · aucun coordinateur externe à exploiterCLUSTER PAIR À PAIR · chaque membre exécute les mêmes couchesnode-1LEADER · époque 3TransportAppartenanceCoordinationMessagerienode-2suiveurTransportAppartenanceCoordinationMessagerienode-3suiveurTransportAppartenanceCoordinationMessageriebattements de cœur · condensé de gossip · messages typés — une connexion persistante par pair
Les couches

Quatre couches, une seule dépendance

Les parties difficiles de l'exécution de plus d'une instance — résolues une fois pour toutes et embarquées, pour que vous écriviez du code applicatif, pas de la plomberie de systèmes distribués.

Transport

Connexions persistantes et priorisées

Une connexion durable vers chaque pair transporte tous les plans — appartenance, messagerie, événements et santé — avec une voie prioritaire pour que le trafic de contrôle ne soit jamais affamé par les charges utiles volumineuses.

Appartenance

Qui fait partie du cluster, à l'instant présent

Les nœuds s'admettent mutuellement à partir d'un ensemble de pairs et tiennent à jour un registre vivant. Les arrivées et départs apparaissent sous forme d'événements ; un condensé de gossip s'ajoute au trafic existant pour réconcilier les vues sans service de registre.

Coordination

Élection de leader déterministe

Chaque membre exécute la même élection sur les mêmes pairs joignables et choisit indépendamment le même leader — portée par un compteur d'époque afin qu'un leader obsolète soit toujours distinguable de l'actuel.

Messagerie

Point à point typé, diffusion et événements

Envoyez une charge utile typée à un pair ou à tous, attendez une réponse typée appariée par identifiant de corrélation, ou publiez sur un bus d'événements à l'échelle du cluster — le tout sur le même transport.

Le pari de conception

Aucun coordinateur externe, par conception

  • Pas de ZooKeeper, etcd ni ConsulLa coordination vit à l'intérieur de votre processus sous forme de bibliothèque. Il n'y a aucun service de quorum externe à déployer, sécuriser, mettre à niveau ou maintenir en vie — un système distribué de moins à exploiter.
  • Chaque nœud exécute la même logiqueIl n'y a aucun processus coordinateur spécial. Chaque membre calcule l'appartenance et le leadership à partir des mêmes entrées, de sorte que le cluster continue de fonctionner tant que les membres peuvent se joindre.
  • Se forme et se répare lui-mêmeLes nœuds découvrent leurs pairs, s'accordent sur un leader et reconvergent d'eux-mêmes après les arrivées, les départs et les pannes — le cluster est une propriété émergente des membres, pas un service dont ils dépendent.
Époques

Le leadership porté par une époque

Chaque résultat d'élection est estampillé d'une époque croissante de façon monotone. Lorsqu'un nœud rejoint le cluster ou que le leader tombe en panne, les survivants réélisent et l'époque avance — de sorte qu'un message ou une revendication d'un leader obsolète peut toujours être distingué de l'actuel, et que le basculement ne laisse jamais deux nœuds se croire chacun leader.

  • Stratégie déterministe — identifiant le plus élevé ou nœud le plus ancien — sur les mêmes pairs joignables
  • Un départage résout les collisions d'époque égale vers un leader unique
  • L'époque s'incrémente à chaque changement, de sorte que le leadership est toujours ordonnable

Voyez-le s'exécuter dans votre propre service

Embarquez Nodus, rejoignez un cluster et suivez le leader en quelques lignes — puis lisez comment l'appartenance et la détection de panne le gardent honnête.