Unterstützung für mehrere Cluster

Die Multiclusterunterstützung wurde in v2 entfernt. Die folgende Dokumentation bezieht sich auf Orleans v1. In Orleans v.1.3.0 wurde Unterstützung für das Zusammenschließen mehrerer Orleans-Cluster zu einem lose verbundenen Multicluster hinzugefügt, der als einzelner Dienst fungiert. Multicluster erleichtern die Geoverteilung als Dienst, d. h. die Ausführung einer Orleans-Anwendung in mehreren Rechenzentren auf der ganzen Welt. Ein Multicluster kann auch in einem einzelnen Rechenzentrum ausgeführt werden, um eine bessere Fehler- und Leistungsisolation zu erzielen.

Alle Mechanismen sind mit besonderem Augenmerk auf Folgendes konzipiert:

  1. Die Kommunikation zwischen Clustern soll minimiert werden.
  2. Jeder Cluster soll eigenständig ausgeführt werden, auch wenn andere Cluster ausfallen oder nicht erreichbar sind.

Konfiguration und Betrieb

Im Folgenden wird dokumentiert, wie ein Multicluster konfiguriert und betrieben wird.

Kommunikation. Cluster kommunizieren über die gleichen Silo-zu-Silo-Verbindungen, die in einem Cluster verwendet werden. Zum Austauschen von Status- und Konfigurationsinformationen verwenden Cluster einen Gossip-Mechanismus und Implementierungen von Gossip-Kanälen.

Silokonfiguration. Silos müssen so konfiguriert werden, dass sie wissen, zu welchem Cluster sie gehören (jeder Cluster wird durch eine eindeutige Zeichenfolge identifiziert). Außerdem muss alle Silos mit Verbindungszeichenfolgen konfiguriert werden, die es ihnen ermöglichen, beim Start eine Verbindung mit einem oder mehreren Gossip-Kanälen herzustellen.

Einfügen der Multiclusterkonfiguration. Zur Laufzeit können Dienstoperator*innen die Multiclusterkonfiguration angeben und/oder ändern. Diese enthält eine Liste von Cluster-IDs, um anzugeben, welche Cluster Teil des aktuellen Multiclusters sind. Dies geschieht durch Aufrufen des Management-Grains in einem der Cluster.

Multicluster-Grains

Im Folgenden wird dokumentiert, wie Multiclusterfunktionen auf Anwendungsebene verwendet werden.

Globale Grains mit Einzelinstanz. Entwickler*innen können angeben, wann und wie Cluster ihre Grain-Verzeichnisse in Bezug auf eine bestimmte Grain-Klasse koordinieren sollen. Das GlobalSingleInstanceAttribute bedeutet, dass wir das gleiche Verhalten wie bei der Ausführung von Orleans in einem einzelnen globalen Cluster wünschen. Das heißt, dass alle Aufrufe an eine einzelne Aktivierung des Grains weitergeleitet werden. Im Gegensatz dazu gibt das OneInstancePerClusterAttribute an, dass für jeden Cluster eine eigene unabhängige Aktivierung möglich ist. Diese Einstellung ist geeignet, wenn Kommunikation zwischen Clustern unerwünscht ist.

Protokollansicht-Grains(nicht in v.1.3.0). Eine spezielle Art von Grain, die eine neue API verwendet, ähnlich dem Ereignissourcing, um den Grain-Zustand zu synchronisieren oder beizubehalten. Es kann verwendet werden, um den Zustand eines Grains zwischen Clustern und im Speicher automatisch und effizient zu synchronisieren. Da die Synchronisierungsalgorithmen sicher mit erneut eingefügten Grains verwendet werden können und für Batchverarbeitung und Replikation optimiert sind, kann die Leistung besser sein als bei Standard-Grains, wenn in mehreren Clustern häufig auf ein Grain zugegriffen wird und/oder wenn ein Grain häufig in den Speicher geschrieben wird. Die Unterstützung für Protokollansicht-Grains gehört noch nicht zum Mainbranch. Im geo-orleans-Branch finden Sie ein Vorabrelease mit Beispielen und etwas Dokumentation. Diese Art Grain wird derzeit einer Early Adopter-Auswertung in der Produktion unterzogen.