Dynamisches Cache-Clustering für Hochverfügbarkeit

NCache verfügt über selbstheilendes dynamisches Cache-Clustering basierend auf einer Peer-to-Peer-Architektur, um eine Betriebszeit von 100 % zu gewährleisten. Dies ist ein TCP-basierter Cluster, in dem es keine Master/Slave-Knoten gibt und stattdessen jeder Server im Cluster ein Peer ist. Auf diese Weise können Sie zur Laufzeit beliebige Cache-Server zum Cluster hinzufügen oder daraus entfernen, ohne den Cache oder Ihre Anwendung anzuhalten.

Peer-to-Peer-Architektur (Selbstheilung)

NCache Cluster hat eine Peer-to-Peer-Architektur. Das bedeutet, dass es keine Master/Slave-Knoten gibt und jeder Server ein Peer ist. Es gibt einen Cluster-Koordinator-Knoten, der der älteste Knoten im Cluster ist. Wenn der Cluster-Koordinator-Knoten ausfällt, wird der nächstälteste automatisch zum Koordinator.

Der Cluster-Koordinator verwaltet alle Cluster-bezogenen Vorgänge, einschließlich der Cluster-Mitgliedschaft, wenn Knoten hinzugefügt oder entfernt werden, sowie die Verteilungszuordnung für Partitionierter Cache / Partitionsreplikat-Cache Topologie und andere Cache-Konfigurationsinformationen. Cluster Coordinator verwaltet auch den Cluster-Zustand und entfernt zwangsweise alle Cache-Server, die teilweise mit allen anderen Servern im Cluster verbunden sind.

Dynamischer Cache-Cluster

Dynamisches Clustering

NCache hat eine Dynamische Clustering-Architektur. Das heißt, Sie können hinzufügen oder entfernen Sie einen beliebigen Cache-Server aus dem Cluster, ohne den Cache oder die Anwendungen zu stoppen. Immer wenn Sie einen Cache-Server hinzufügen oder entfernen, wird die Cluster-Mitgliedschaft sofort zur Laufzeit aktualisiert und an alle Server im Cluster sowie alle mit dem Cluster verbundenen Clients weitergegeben. Diese Laufzeitaktualisierung und -weitergabe ermöglicht NCache auch bei solchen Änderungen immer betriebsbereit zu sein.

Dynamisches Clustering ermöglicht Ihnen Folgendes:

  • Cache-Server zur Laufzeit hinzufügen / entfernen: ohne den Cache oder Ihre Anwendung zu stoppen
  • Clustermitgliedschaft: wird zur Laufzeit aktualisiert und an alle Server im Cluster und alle mit dem Cluster verbundenen Clients weitergegeben.

Dynamische Client-Verbindungen

NCache lässt Sie auch hinzufügen oder entfernen Cache-Clients zur Laufzeit, ohne den Cache oder andere Clients zu stoppen. Wenn Sie einen Client hinzufügen, muss dieser Client nur einen beliebigen Cache-Server im Cluster kennen, zu dem er eine Verbindung herstellen kann. Sobald es eine Verbindung zu diesem Server herstellt, erhält es Clustermitgliedschafts- und Caching-Topologieinformationen, auf deren Grundlage es entscheidet, mit welchen anderen Servern eine Verbindung hergestellt werden soll.

  • Clients zur Laufzeit hinzufügen / entfernen: ohne den Cache oder Ihre Anwendung zu stoppen.
  • Partitionierter Cache / Partition-Replikat-Cache: Der Client stellt eine Verbindung zu allen Partitionen in allen Cache-Servern her (nicht zu Replicas, da Partitionen mit ihren Replicas kommunizieren). Dadurch kann der Client direkt dorthin gehen, wo sich die Daten zum Lesen und Schreiben befinden. Und wenn dem Cluster ein neuer Server hinzugefügt wird, erhält der Client aktualisierte Cluster-Mitgliedschaftsinformationen und stellt dann auch eine Verbindung zu diesem neu hinzugefügten Cache-Server her.
  • Replizierter Cache: bei Replizierter Cachestellt der Client nur eine Verbindung zu einem Cache-Server im Cluster her, jedoch mit Lastenausgleich, um sicherzustellen, dass alle Cache-Server über die gleiche Anzahl von Clients verfügen. Der Client erhält die Lastausgleichsinformationen von diesem Cache-Server und verbindet sich auf dieser Grundlage bei Bedarf erneut mit dem entsprechenden Cache-Server. Der Client verbindet sich nur mit einem Cache-Server, da jeder Server über den gesamten Cache verfügt, sodass alle Lese- und Schreibvorgänge direkt dort möglich sind.
  • Gespiegelter Cache: bei Gespiegelter Cache, verbindet sich der Client einfach nur mit dem aktiven Knoten in diesem 2-Knoten-Cluster. Wenn sich der Client mit dem passiven Knoten verbindet, teilt der passive Knoten dem Client den aktiven Knoten mit und der Client verbindet sich automatisch wieder mit dem aktiven Knoten. Wenn der aktive Knoten ausfällt und der passive Knoten aktiv wird, verbinden sich alle Clients automatisch mit dem neuen aktiven Knoten.
Dynamische Client-Verbindungen

Dynamische Konfiguration

NCache bietet auch eine dynamische Konfiguration des Caches und der Clients. Der Zweck besteht darin, Ihnen zu ermöglichen, später Änderungen vorzunehmen, wenn der Cache ausgeführt wird, ohne den Cache oder Ihre Anwendung zu stoppen.

  • Zur Laufzeit an alle Server und Clients weitergeben: dazu gehören alle Konfigurationen und deren Änderungen sowie die Verteilungskarte.
  • Cache-Konfiguration: Wenn eine Cache-Konfiguration über Verwaltungstools erstellt wird, werden diese Konfigurationsinformationen auf alle zu diesem Zeitpunkt bekannten Cache-Server kopiert. Und jeder neue Server, der zur Laufzeit hinzugefügt wird, erhält diese gesamte Cache-Konfiguration und kopiert sie auf seine lokale Festplatte.
  • Hot Apply-Konfigurationsänderungen: Sie können einen Teil der Cache-Konfiguration zur Laufzeit durch ein "Heiß anwenden„Merkmal von NCache. Wenn Sie dies tun, werden die aktualisierten Konfigurationsinformationen zur Laufzeit an alle Cache-Server weitergegeben und auf deren Festplatten gespeichert. Ein Teil dieser Informationen wird auch an alle Kunden gesendet, die für ihre Bedürfnisse relevant sind.
  • Verteilungskarte (Partitionierter / Partitionsreplikat-Cache): diese wird beim Starten des Cache erstellt und dann auf alle Cache-Server und Cache-Clients kopiert. Diese Verteilungskarte enthält Informationen darüber, welche Buckets (von insgesamt 1000 Buckets im geclusterten Cache) sich auf welcher Partition befinden.

Verbindungs-Failover innerhalb des Clusters

Alle Cache-Server im Cluster sind über TCP miteinander verbunden. Und jeder Cache-Server ist mit allen anderen Cache-Servern im Cluster verbunden, einschließlich aller neu zur Laufzeit hinzugefügten Server. NCache bietet verschiedene Möglichkeiten, um sicherzustellen, dass alle Verbindungen innerhalb des Clusters trotz Verbindungsunterbrechung aufrechterhalten werden. Verbindungsunterbrechungen treten normalerweise aufgrund eines Netzwerkfehlers aufgrund eines Routers oder einer Firewall oder eines Problems mit der Netzwerkkarte oder dem Netzwerktreiber auf.

  • Verbindungsversuche: wenn die Verbindung zwischen zwei Cache-Servern abbricht, NCache Der Server unternimmt automatisch mehrere Wiederholungsversuche, um diese Verbindung herzustellen. Diese Wiederholungen werden durchgeführt, bis die „Timeout“-Periode aufgebraucht ist. In den meisten Situationen wird dadurch die Verbindung wiederhergestellt.
  • Keep-Alive-Herzschlag: NCache hat auch eine Funktion, mit der jeder Cache-Server einige kleine Datenpakete als Herzschlag an alle anderen Server senden kann. Dadurch wird sichergestellt, dass die Cache-Server bei einem Problem mit einem Ausfall des Netzwerk-Sockets davon erfahren und es durch Wiederholungsversuche beheben.
  • Teilweise verbundene Server: Trotz Wiederholungsversuchen kann es vorkommen, dass eine Verbindung nicht innerhalb des Timeout-Zeitraums wiederhergestellt wird und ein Cache-Server davon ausgeht, dass einer oder mehrere der anderen Cache-Server ausgefallen sind. Es funktioniert also ohne sie weiter. Aber in Wirklichkeit sind die anderen Server nicht heruntergefahren und werden tatsächlich von einigen anderen Servern im Cluster gesehen. Dies wird als teilweise verbundene Server bezeichnet. Wenn dies geschieht, nimmt der Cluster-Koordinator dies zur Kenntnis und entfernt den "Partially Connected"-Server zwangsweise aus dem Cluster. Dadurch wird der Cluster wieder gesund. Und der entfernte Server kann dem Cluster durch manuellen Eingriff wieder beitreten.

Verbindungs-Failover mit Clients

Alle Cache-Clients sind abhängig von den Caching-Topologien über TCP mit einem oder mehreren Cache-Servern im Cluster verbunden. Beim partitionierten/partitionierten Replikat-Cache ist jeder Client mit allen Cache-Servern verbunden. Beim replizierten Cache ist jeder Client normalerweise über einen von den Cache-Servern verwendeten Lastausgleichsalgorithmus mit nur einem der Cache-Server verbunden. Und für Mirrored Cache sind alle Clients nur mit dem aktiven Knoten verbunden und verbinden sich nur mit dem passiven Knoten, wenn der aktive Knoten ausfällt und der passive Knoten zum aktiven Knoten wird.

  • Verbindungsversuche: wenn eine Verbindung zwischen einem Client und Cache-Servern unterbrochen wird, NCache Client macht automatisch mehrere Verbindungsversuche um diese Verbindung herzustellen. Diese Wiederholungen werden durchgeführt, bis die "Timeout"-Periode aufgebraucht ist. In den meisten Situationen wird dadurch die Verbindung wiederhergestellt, ohne dass die Client-Anwendung dies überhaupt bemerkt. Wenn keine Verbindung hergestellt werden kann, wird eine Ausnahme an die Clientanwendung geworfen, damit sie damit umgehen kann.
  • Keep-Alive-Herzschlag: NCache hat auch eine Funktion, mit der jeder Client einige kleine Datenpakete senden kann Herzschlag an alle Cache-Server, mit denen es verbunden ist. Dadurch wird sichergestellt, dass der Client bei einem Problem mit einem Netzwerk-Socket-Fehler davon erfährt und es durch erneute Verbindungsversuche behebt.
  • Teilweise verbundene Clients (partitionierter / Partition-Replica-Cache): Trotz Wiederholungsversuchen kann es vorkommen, dass eine Verbindung nicht innerhalb des Timeout-Zeitraums wiederhergestellt wird und ein Cache-Client davon ausgeht, dass er einen oder mehrere der anderen Cache-Server nicht erreichen kann, obwohl sie möglicherweise nicht ausgefallen sind. Im Fall von Partitioned / Partition-Replica Cache interagiert es also mit anderen Servern, um alle Daten zu lesen oder zu schreiben, obwohl seine Distribution Map ihm sagt, dass der Server, mit dem es nicht kommunizieren kann, die Daten hat. In diesem Fall fungiert der andere Cache-Server als Vermittler, um die Operation erfolgreich durchzuführen.
  • Trennung mit Server (replizierter / gespiegelter Cache): Bei Replicated Cache ist der Client nur mit einem Server verbunden und wenn diese Verbindung unterbrochen wird, verbindet sich der Client automatisch mit einem der anderen Cache-Server. Wenn der Client im Fall von Mirrored Cache keine Verbindung zum aktiven Knoten herstellen kann, geht er davon aus, dass er ausgefallen ist, und versucht, eine Verbindung zum passiven Knoten herzustellen.

Was macht man als nächstes?

© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.