Aller au contenu principal
Clustron Nodus logoClustron Nodus
Cœur de clustering et de messagerie

Clustering et coordination, sans coordinateur à exécuter

Nodus est un cœur léger de clustering et de messagerie qui permet à votre service de rejoindre un cluster pair-à-pair, de s'accorder sur un leader, d'échanger des messages typés et de détecter les pannes — sans coordinateur externe comme ZooKeeper, etcd ou Consul à déployer, sécuriser ou maintenir. C'est une bibliothèque que vous embarquez, de sorte que le cluster se forme et se répare de lui-même.

LEADERnode-1epoch 3node-2node-3node-4node-5node-6Cluster: orders · 6 members
0
coordinateurs externes
P2P
appartenance auto-formée
1 leader
élection déterministe
~20s
suspicion avant éviction
Capabilities

Les parties difficiles de l'exécution de plusieurs instances — résolues et embarquées

Dès que votre application s'exécute en plusieurs processus, l'appartenance, la coordination, la messagerie et la détection de pannes deviennent des problèmes de systèmes distribués. Nodus livre les quatre dans une seule dépendance qui s'exécute à l'intérieur de votre processus.

Appartenance pair-à-pair

Les nœuds se découvrent et s'admettent mutuellement à partir d'un ensemble de pairs statique ou dynamique. Les adhésions et les départs remontent sous forme d'événements, sans service de registre à exploiter.

Élection de leader

Des stratégies déterministes de type bully — plus grand id ou nœud le plus ancien — avec un compteur d'époque et un départage pour les collisions à époque égale, de sorte que le cluster s'accorde sur exactement un coordinateur.

Messagerie typée

Envoyez une charge utile typée en point à point, diffusez à chaque membre, ou descendez au message filaire brut pour les identifiants de corrélation et le plan de priorité.

Requête / réponse

Posez une question à un nœud et attendez une réponse typée, appariée par identifiant de corrélation, avec un timeout que vous contrôlez.

Événements à l'échelle du cluster

Un bus de publication/abonnement typé, distinct de la messagerie directe, qui propage les événements de cycle de vie et personnalisés à chaque membre.

Santé et détection de pannes

Les battements de cœur, la joignabilité par pair et une fenêtre de suspicion gardent l'appartenance honnête — distinguant « lent » de « parti » sans oscillation — et un condensé de gossip chevauche le même trafic.

How it works

Les nœuds s'accordent — même quand le cluster change de forme

Chaque membre exécute la même élection déterministe sur les mêmes pairs joignables, de sorte qu'ils choisissent indépendamment le même leader sans scrutin multi-tours. Quand un nœud rejoint ou que le leader tombe, les survivants réélisent et l'époque avance — de sorte qu'un leader obsolète peut toujours être distingué du leader actuel.

  • Un point d'entrée unique construit le conteneur, rejoint le cluster et renvoie un handle en cours d'exécution.
  • La perte du leader est détectée rapidement lors d'un départ gracieux, ou après la fenêtre de suspicion lors d'un arrêt brutal.
  • Chaque survivant calcule le même nouveau leader et l'époque s'incrémente.
  • La libération quitte le cluster proprement, afin que les pairs évincent promptement et que le basculement soit rapide.
rejoindreLEADERnode-1epoch 3node-2node-3node-4en cours d'adhésionles membres réélisent · s'accordent sur le même leader
Use cases

Partout où un ensemble de processus doit s'accorder

Faites appel à Nodus dès que votre service s'exécute en plusieurs instances et doit se coordonner — et il fonctionne avec votre application dès aujourd'hui.

Applications distribuées

Construire des services conscients du cluster

Donnez à tout service multi-instances une vue en direct de ses pairs, un leader partagé et un moyen de communiquer directement avec les membres — la fondation sur laquelle Zaris lui-même se met en cluster.

Coordination

Singletons et planificateurs réservés au leader

Exécutez une tâche de type cron sur exactement une instance, conditionnée à IsSelf, et laissez un survivant prendre le relais automatiquement à une époque supérieure quand le leader tombe.

Résilience

Détection de pannes et appartenance auto-réparatrice

Les battements de cœur et une fenêtre de suspicion évincent les pairs morts et admettent les nouveaux, maintenant le cluster exact à travers les plantages et les redémarrages.

Services

Messagerie typée et requête-réponse

Adressez un pair spécifique, envoyez-lui du travail et attendez une réponse typée — ou diffusez à tous — sur un transport persistant et priorisé.

Mise en cache

Cache et invalidation entre pairs

Diffusez une éviction à chaque membre dès qu'une valeur change, afin qu'aucune instance ne serve une entrée obsolète.

Débit

Répartition du travail entre les nœuds

Laissez un coordinateur distribuer des lots de travail entre les membres actifs et agréger les résultats — exactement ce que fait l'exemple de coordination de cluster fourni.

In your code

Rejoindre un cluster et suivre le leader

Un point d'entrée construit le nœud, rejoint le cluster et renvoie un handle en cours d'exécution. Abonnez-vous au leadership et conditionnez le travail singleton au nœud qui dirige.

Read the docs
Nodus example
using Clustron.Nodus.Abstractions;
using Clustron.Nodus.Client;

// this process's slice of the cluster, resolved from a launch input
var self = config.Cluster.Nodes.Single(n => n.NodeId == myId);

await using INodusNode node = await NodusNode
.Configure(config)
.WithNodeIdentity(self)
.StartAsync();

// react the moment the cluster agrees on a coordinator
node.Leadership.Changed += (leader, epoch) =>
Console.WriteLine($"leader is now {leader.NodeId} (epoch {epoch})");

// run the singleton only where we lead
if (node.Leadership.IsSelf)
await RunTheSingletonJob();

Ready to build with Nodus?

Get started in minutes, or talk to us about your architecture.