Zum Hauptinhalt springen
Clustron Nodus logoClustron Nodus
Clustering- & Messaging-Kern

Clustering und Koordination — ohne Koordinator, den Sie betreiben müssen

Nodus ist ein schlanker Clustering- und Messaging-Kern, mit dem Ihr Service einem Peer-to-Peer-Cluster beitreten, sich auf einen Leader einigen, typisierte Nachrichten austauschen und Ausfälle erkennen kann — ohne externen Koordinator wie ZooKeeper, etcd oder Consul, den Sie aufsetzen, absichern oder am Laufen halten müssten. Es ist eine Bibliothek zum Einbetten, sodass sich der Cluster selbst bildet und selbst heilt.

LEADERnode-1epoch 3node-2node-3node-4node-5node-6Cluster: orders · 6 members
0
externe Koordinatoren
P2P
selbstbildende Mitgliedschaft
1 leader
deterministische Wahl
~20s
Verdacht vor Ausschluss
Capabilities

Die schwierigen Teile beim Betrieb mehrerer Instanzen — gelöst und eingebettet

Sobald Ihre App als mehr als ein Prozess läuft, werden Mitgliedschaft, Koordination, Messaging und Fehlererkennung zu Problemen verteilter Systeme. Nodus liefert alle vier in einer einzigen Abhängigkeit, die in Ihrem Prozess läuft.

Peer-to-Peer-Mitgliedschaft

Nodes erkennen und akzeptieren sich gegenseitig aus einem statischen oder dynamischen Peer-Set. Beitritte und Austritte werden als Events bereitgestellt — ohne Registry-Service, den Sie betreiben müssen.

Leader-Election

Deterministische Bully-artige Strategien — höchste ID oder ältester Node — mit einem Epochenzähler und einem Tiebreaker für Kollisionen bei gleicher Epoche, sodass sich der Cluster auf genau einen Koordinator einigt.

Typisiertes Messaging

Senden Sie einen typisierten Payload punktuell, per Broadcast an jedes Mitglied, oder greifen Sie auf die rohe Wire-Nachricht für Korrelations-IDs und die Prioritätsebene zurück.

Request / Reply

Stellen Sie einem Node eine Frage und warten Sie auf eine typisierte Antwort, zugeordnet per Korrelations-ID, mit einem Timeout, den Sie selbst steuern.

Clusterweite Events

Ein typisierter Publish/Subscribe-Bus, getrennt vom direkten Messaging, der Lifecycle- und benutzerdefinierte Events an jedes Mitglied weitergibt.

Health- & Fehlererkennung

Heartbeats, Erreichbarkeit pro Peer und ein Verdachtsfenster halten die Mitgliedschaft korrekt — sie unterscheiden „langsam“ von „weg“, ohne zu flattern — und ein Gossip-Digest läuft über denselben Datenverkehr mit.

How it works

Nodes einigen sich — auch wenn sich der Cluster verändert

Jedes Mitglied führt dieselbe deterministische Wahl über dieselben erreichbaren Peers durch und wählt so unabhängig denselben Leader, ohne mehrstufige Abstimmung. Wenn ein Node beitritt oder der Leader ausfällt, wählen die verbleibenden Mitglieder neu und die Epoche rückt vor — so lässt sich ein veralteter Leader stets vom aktuellen unterscheiden.

  • Ein einziger Einstiegspunkt baut den Container auf, tritt dem Cluster bei und liefert ein laufendes Handle zurück.
  • Der Verlust des Leaders wird bei einem geordneten Austritt schnell erkannt, bei hartem Abbruch nach Ablauf des Verdachtsfensters.
  • Jedes verbleibende Mitglied berechnet denselben neuen Leader, und die Epoche wird erhöht.
  • Beim Dispose verlässt der Node den Cluster sauber, sodass Peers ihn zügig ausschließen und das Failover schnell erfolgt.
BeitrittLEADERnode-1epoch 3node-2node-3node-4tritt beiMitglieder wählen neu · einigen sich auf denselben Leader
Use cases

Überall dort, wo sich mehrere Prozesse einigen müssen

Greifen Sie zu Nodus, sobald Ihr Service als mehr als eine Instanz läuft und koordiniert werden muss — und es funktioniert schon heute mit Ihrer App.

Verteilte Apps

Cluster-fähige Services bauen

Geben Sie jedem Service mit mehreren Instanzen einen Live-Überblick über seine Peers, einen gemeinsamen Leader und eine Möglichkeit, Mitglieder direkt anzusprechen — die Grundlage, auf der Zaris selbst clustert.

Koordination

Leader-only-Singletons & Scheduler

Führen Sie einen Cron-ähnlichen Job auf genau einer Instanz aus, abgesichert über IsSelf, und lassen Sie automatisch ein verbleibendes Mitglied in einer höheren Epoche übernehmen, wenn der Leader ausfällt.

Ausfallsicherheit

Fehlererkennung & selbstheilende Mitgliedschaft

Heartbeats und ein Verdachtsfenster schließen ausgefallene Peers aus und nehmen neue auf, sodass der Cluster auch bei Abstürzen und Neustarts korrekt bleibt.

Services

Typisiertes Messaging & Request-Reply

Sprechen Sie einen bestimmten Peer an, senden Sie ihm Arbeit und warten Sie auf eine typisierte Antwort — oder senden Sie per Broadcast an alle — über einen persistenten, priorisierten Transport.

Caching

Cache- & Peer-Invalidierung

Senden Sie eine Eviction per Broadcast an jedes Mitglied, sobald sich ein Wert ändert, damit keine Instanz einen veralteten Eintrag ausliefert.

Durchsatz

Arbeitsverteilung über Nodes hinweg

Lassen Sie einen Koordinator Arbeitspakete auf aktive Mitglieder verteilen und die Ergebnisse aggregieren — genau das, was das mitgelieferte Cluster-Coordination-Beispiel tut.

In your code

Einem Cluster beitreten und dem Leader folgen

Ein Einstiegspunkt baut den Node auf, tritt dem Cluster bei und liefert ein laufendes Handle zurück. Abonnieren Sie die Leadership und binden Sie Singleton-Arbeit an den Node, der führt.

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.