Was ist Clustron?
Clustron ist eine Familie kombinierbarer .NET-Bausteine für verteilte Systeme. Dieser Artikel erklärt, welche Probleme jeder Baustein löst, wie die Bausteine zum Flaggschiff, dem verteilten Key/Value-Store, zusammenspielen und wo Sie je nach Bedarf beginnen sollten.
Jeder Baustein löst einen schwierigen Teil beim Betrieb von Software über mehr als einen Prozess, eine Maschine oder einen Container hinweg — einen Cluster bilden, Aufrufer autorisieren, messen, was passiert, und gemeinsamen Zustand speichern — und jeder ist ein NuGet-Paket, das Sie in Ihre eigene Anwendung einbetten. Es gibt keinen externen Koordinator zu betreiben (kein ZooKeeper, etcd oder Consul), keine separate Steuerungsebene zu betreuen und nichts, was Sie zwingt, den gesamten Stack auf einmal einzuführen.
Sie können einen einzelnen Baustein für sich nehmen oder mehrere kombinieren. Das Flaggschiff Clustron Zaris entsteht, wenn alle zu einem System zusammengesetzt werden: einem verteilten Key/Value-Store.
Das Problem, das Clustron löst
Eine Einzelprozess-Anwendung hat einfache Antworten auf schwierige Fragen. Wer hat das Sagen? Dieser Prozess. Lebt mein Kollaborationspartner noch? Es ist derselbe Prozess. Wo sind die Daten? Im Arbeitsspeicher, genau hier.
Sobald Ihre Anwendung als mehr als eine Instanz läuft — für Skalierung, für Verfügbarkeit oder weil sie in Containern lebt —, wird jede dieser Antworten zu einem Problem verteilter Systeme:
- Koordination. Welche Instanz führt den Singleton-Job aus, und wie erfahren die anderen, wenn sie ausfällt?
- Mitgliedschaft und Ausfallerkennung. Wer gehört gerade zum Cluster, und wie unterscheiden Sie „langsam" von „weg"?
- Autorisierung. Eine Anfrage trifft bei irgendeiner Instanz ein — wie entscheidet jede einzelne konsistent, ob der Aufrufer die Aktion ausführen darf?
- Observability. Wie hoch sind der tatsächliche Durchsatz und die Fehlerrate pro Node, kostengünstig genug, um sie auf dem Hot Path zu messen?
- Gemeinsamer Zustand. Wo liegen Daten, sodass jede Instanz eine konsistente Sicht hat, den Verlust eines Nodes übersteht und mit zusätzlicher Kapazität skaliert?
Diese Probleme sind bekanntermaßen leicht fast richtig und bekanntermaßen teuer wirklich richtig zu lösen. Clustron stellt jede Antwort als erprobte, einbettbare Komponente bereit, sodass Sie darauf aufbauen, statt sie neu zu bauen.
Die Bausteine
Das Diagramm zeigt, wie Nodus zu Zaris zusammengesetzt wird und wie Nodus auch eigenständig nutzbar ist.
Nodus — Clustering- und Messaging-Kern
Nodus gibt einem Prozess alles, was er braucht, um einem Peer-to-Peer-Cluster beizutreten, sich auf einen Leader zu einigen, typisierte Nachrichten Punkt-zu-Punkt oder clusterweit auszutauschen und den Zustand seiner Peers zu beobachten — ohne externen Koordinator.
Verwenden Sie es direkt, wann immer eine Menge von Prozessen einander finden, einen Koordinator wählen und trotz Ausfällen einig bleiben muss: ein Scheduler nur für den Leader, ein Work Distributor, ein Cache, der Peers invalidieren muss. Nodus ist die Grundlage, auf der Zaris clustert, und eigenständig voll nutzbar.
Siehe den Nodus-Überblick.
Zaris — verteilter Key/Value-Store
Zaris ist das Flaggschiff: ein verteilter In-Memory-Key/Value-Store. Er clustert auf Nodus und ergänzt darauf partitionierte Speicherung, Replikation, Transaktionen, Watches, Leases, verteilte Locks, Counter, TTL sowie eine Steuerungsebene aus Management-Dienst und Web-Konsole.
Sicherheit ist integriert — Mutual TLS, offline verifizierte Bearer-Tokens und rollenbasierte Zugriffskontrolle (RBAC), die standardmäßig verweigert —, sodass die Autorisierung an jedem Durchsetzungspunkt lokal beantwortet wird, ohne pro Anfrage einen zentralen Server aufzurufen. Observability ist ebenfalls integriert — hochfrequente operative Metriken (Anfrageraten, Operationszähler, Gauges und .NET-Runtime-Statistiken), erfasst in einer rollierenden Zeitfenster-Registry, die auf dem Hot Path günstig ist und über OTLP exportiert wird.
Verwenden Sie ihn, wenn Sie einen verteilten Cache oder einen koordinationsfähigen Datenspeicher brauchen, den ein Team in Produktion betreiben kann — In-Process für die Entwicklung und remote im großen Maßstab.
Siehe den Zaris-Überblick.
Wie die Bausteine zusammenspielen
Die Bausteine sind geschichtet, nicht verflochten. Zaris hängt von Nodus ab, und Nodus ist allein nützlich.
| Schicht | Baustein | Hängt ab von | Eigenständig nutzbar? |
|---|---|---|---|
| Anwendungsdaten | Zaris | Nodus | Es ist das zusammengesetzte Produkt |
| Koordination | Nodus | — | Ja |
Das ist eine bewusste Designentscheidung: Sie werden nie gezwungen, die ganze Familie einzuführen. Wenn Sie nur Clustering brauchen, nehmen Sie Nodus. Wenn Sie einen verteilten Store brauchen, in dem Sicherheit, Metriken und Koordination bereits verdrahtet und gehärtet sind, nehmen Sie Zaris.
Entwurfsprinzipien
Alles in Clustron folgt denselben wenigen Prinzipien, sodass sich die Bausteine wie eine Familie anfühlen.
- Einbettbar, nicht betriebsintensiv. Jeder Baustein ist eine Bibliothek, auf die Sie verweisen, kein Server, den Sie bereitstellen. Zaris ergänzt einen optionalen Management-Dienst und eine Konsole, aber die Primitive selbst laufen innerhalb Ihres Prozesses.
- Kein externer Koordinator. Nodus bildet und heilt einen Cluster selbst. Es gibt kein ZooKeeper, etcd oder Consul, das Sie neben Ihrer App aufsetzen, absichern und am Leben halten müssten.
- Offline-first, wo es zählt. Die Sicherheitsschicht verifiziert Tokens und wertet Richtlinien lokal aus, mit einem Change-Watch, sodass die Autorisierung nicht bei jeder Anfrage einen Netzwerk-Hop hinzufügt. Metriken werden in eine In-Process-Registry geschrieben, nicht an einen Remote-Collector.
- Breite .NET-Reichweite. Die Kernabstraktionen zielen auf
netstandard2.0und laufen daher unter .NET Framework 4.8 und .NET 8+; die umfangreicheren Adapter (ASP.NET Core, Exporter, Hosts) zielen aufnet8.0. - Standardmäßig verweigern und laut scheitern. Die Sicherheit lehnt ab, was sie nicht beweisen kann; die Bereitstellung wirft Fehler, statt stillschweigend zu degradieren. Das sichere Ergebnis ist der Default.
Wo Sie beginnen
Wählen Sie Ihren Einstiegspunkt nach dem Problem, das Sie tatsächlich haben:
- Ein verteilter Cache oder KV-Store — beginnen Sie mit Zaris und seinem Leitfaden „Erste Schritte". Sie können ihn In-Process mit wenigen Zeilen ausführen und dann auf einen echten Cluster wechseln.
- Leader-Election, Ausfallerkennung oder Peer-Messaging — beginnen Sie mit Nodus.
- Erst verstehen, wie alles zusammenpasst — lesen Sie Die Clustron-Produktfamilie.