-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung betrifft Systeme und Verfahren zum adaptiven Partitionieren von verteiltem Cache- oder Speicherungs-Speicher.
-
VERWANDTE OFFENBARUNG
-
Computercluster bestehen aus zwei oder mehr Computerknoten, die durch ein Netzwerk miteinander verbunden sein können. Computercluster können verteilte Speicherungs-Speichersysteme, z. B. verteilte Cache-Systeme, implementieren. Die gesamte Speicherungskapazität des Clusters wird typischerweise in eine Anzahl Slices einer bestimmten Standardgröße aufgeteilt. Die Slices sind über die Computerknoten des Clusters verteilt. Jedes Slice kann bezüglich eines und nur eines Computerknotens lokal sein. Jede Anforderung in einem Computerknoten einer logischen Blockadresse (LBA), die in einem Slice residiert, das einem entfernten Computerknoten gehört, muss zur Verarbeitung auf dem entfernten Knoten über das Netzwerk gesendet werden.
-
Dies kann den Verkehr im Netzwerk vergrößern, was die Netzwerkbandbreite und die Latenz aufgrund von Netzwerkstau verschlechtern kann. Dementsprechend sind Systeme und Verfahren zum geeigneten Verteilen der Slices wünschenswert, die die Auswirkung von Ferndatenanforderungen auf die Netzwerkleistungsfähigkeit vermindern können.
-
KURZFASSUNG
-
Es werden Verfahren und Systeme zum Durchführen adaptiver Partitionierung eines in Cache-Slices partitionierten verteilten Cache bereitgestellt. Die Slices des verteilten Cache werden auf der Basis einer Routingtabelle an verschiedene Computerknoten des Clusters vergeben. Nach einem vorbestimmten Zeitraum können die Cache-Slices auf der Basis von Zugriffsstatistiken neu an andere Computerknoten des Clusters vergeben werden, und es wird eine neue Routingtabelle bereitgestellt, die der Neuvergabe der Cache-Slices an die Computerknoten des Clusters entspricht.
-
Gemäß Aspekten der Offenbarung wird ein Verfahren zur adaptiven Partitionierung eines verteilten Cache in einem Cluster bereitgestellt, das mehrere Computerknoten umfasst, die durch ein Netzwerk verbunden sind, wobei der verteilte Cache in Cache-Slices partitioniert wird. Das Verfahren kann die folgenden Schritte umfassen: Vergeben einer ersten Vielzahl von Cache-Slices an einen ersten Computerknoten auf der Basis einer ersten Routingtabelle, Neuvergeben einer zweiten Vielzahl von Cache-Slices an den ersten Computerknoten und einer ersten Teilmenge der ersten Vielzahl von Cache-Slices an mindestens einen anderen Computerknoten als den ersten Computerknoten nach einem ersten Zeitraum auf der Basis von Zugriffsstatistiken für die Cache-Slices der Computerknoten und Bereitstellen einer zweiten Routingtabelle gemäß Vergaben von Cache-Slices an die Computerknoten nach dem ersten Zeitraum.
-
Gemäß Aspekten der Offenbarung wird ein System zur adaptiven Partitionierung eines verteilten Cache in einem Cluster bereitgestellt, das eine Vielzahl von Computerknoten umfasst, die durch ein Netzwerk verbunden sind. Das System kann einen in Cache-Slices partitionierten verteilten Cache und einen ersten Computerknoten umfassen. Der erste Computerknoten kann ausgelegt sein zum Vergeben einer ersten Vielzahl von Cache-Slices an den ersten Computerknoten auf der Basis einer ersten Routingtabelle, Neuvergeben einer zweiten Vielzahl von Cache-Slices an den ersten Computerknoten und einer ersten Teilmenge der ersten Vielzahl von Cache-Slices an mindestens einen anderen Computerknoten als den ersten Computerknoten nach einem ersten Zeitraum auf der Basis von Zugriffsstatistiken für die Cache-Slices der Computerknoten und Bereitstellen einer zweiten Routingtabelle gemäß Vergaben von Cache-Slices an die Computerknoten nach dem ersten Zeitraum.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Verschiedene Aufgaben, Merkmale und Vorteile der vorliegenden Offenbarung können mit Bezugnahme auf die folgende ausführliche Beschreibung bei Betrachtung in Verbindung mit den folgenden Zeichnungen, in denen gleiche Bezugszahlen gleiche Elemente identifizieren, besser verständlich werden. Die folgenden Zeichnungen dienen nur zur Veranschaulichung und sollen keine Einschränkung der Erfindung sein, deren Schutzumfang in den folgenden Ansprüchen dargelegt wird.
-
1 zeigt ein beispielhaftes Clustersystem gemäß Aspekten der Offenbarung.
-
2 zeigt ein beispielhaftes Clustersystem, Datentransferraten pro Clusterknoten und beispielhafte Slice-Vergaben gemäß Aspekten der Offenbarung.
-
3 zeigt ein beispielhaftes Clustersystem, Datentransferraten pro Clusterknoten und Slice-Neuvergaben gemäß Aspekten der Offenbarung.
-
4 zeigt ein beispielhaftes Verfahren zum Aktualisieren von Routingabbildungen in einem Clustersystem gemäß Aspekten der Offenbarung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es werden Systeme und Verfahren zur adaptiven Partitionierung von verteilten Cache-Systemen offenbart. Der gesamte Cache des Clusters wird in eine Anzahl Slices, aufgeteilt, die den Computerknoten des Clusters zugeordnet sind. Die offenbarten Systeme und Verfahren untersuchen die Netzwerkauslastung des Clusters und können die Slices neu an neue Computerknoten vergeben. Eine neue Routingabbildung, die die neuen Vergaben repräsentiert, kann zu jedem Computerknoten des Clusters geroutet werden.
-
1 zeigt ein beispielhaftes Cluster 100 von Computerknoten. Spezifisch enthält das Cluster 100 Computerknoten 102, 104 und 106. Knoten 102 umfasst Server 108 und Speicherungsvorrichtung 110, Knoten 104 umfasst Server 112 und Speicherungsvorrichtung 114 und Knoten 106 umfasst Server 116 und Speicherungsvorrichtung 118. Die Knoten 102, 104 und 106 sind mittels des Netzwerks 120 miteinander verbunden. Einige vorbekannte verteilte Speicherungssysteme verteilen typischerweise Slices über Computerknoten mittels Striping. Die Daten-Striping-Technik speichert logisch sequenzielle Slices auf physischen Speicherungsvorrichtungen verschiedener Computerknoten, z. B. mittels einer Reigenmethode. Zum Beispiel können die Slices im Cluster 100 aufeinanderfolgend an Knoten 102, 104 und 106 in dieser Reihenfolge vergeben werden. Andere vorbekannte verteilte Speicherungssysteme können die Slices zufällig unter den Knoten des Clusters verteilen, z. B. unter Verwendung einer Hash-Funktion.
-
Diese vorbekannten Systeme weisen schlechte Skalierbarkeit auf. Unter der Annahme einer zufälligen und gleichförmigen Verteilung von Slices unter ”N” Knoten in einem Cluster ist z. B. die Wahrscheinlichkeit, dass ein angefordertes Datenpaket von einem Server eines bestimmten Knotens lokal auf dem Knoten gespeichert ist, nur 1/N. Wenn das angeforderte Datenpaket nicht lokal gespeichert wird, muss eine Anforderung des Datenpakets über das Netzwerk zu dem entfernten Knoten gesendet werden und das Datenpaket muss über das Netzwerk zu dem Knoten transferiert werden, der es angefordert hat. Mit wachsender Anzahl von Knoten muss eine zunehmende Anzahl von Datenpaketen über das Netzwerk transferiert werden, um Datenpaketanforderungen zu erfüllen. Dies kann sich negativ auf die verfügbare Bandbreite des Netzwerks auswirken. Da Anwendungen oberer Schichten auch versuchen können, um Netzwerkbandbreite zu konkurrieren, kann das System aufgrund von Netzwerkstau schlechte Leistungsfähigkeit aufweisen.
-
Ohne Vorkenntnis über Zugriffe können wie oben besprochen die Slices anfänglich über alle Knoten im Cluster gestriped werden. Jeder Knoten kann eine Routingabbildung mit Informationen über jede Slice-Eigentümerschaft im Cluster aufweisen, womit man eine Anforderung zu einem geeigneten Eigentümer routen kann. Jeder Knoten kann auch Zugriffsstatistiken für alle Slices unterhalten. Die Datenstruktur zum Speichern dieser Informationen kann ein Array sein, das gemäß der Anzahl von Slices bemessen werden kann und kann auch ein Feld in dem Array für einen Zeitstempel aufweisen. Auf die Slice-Nummer kann aus dem Arrayindex geschlossen werden, und jeder Index in dem Array kann Zugriffsstatistik für dieses Slice angeben, z. B. die Menge an Daten, die gelesen und/oder in dieses bestimmte Slice von diesem Knoten geschrieben wurde. Es kann ein Zeitstempel für die gesamte Datenstruktur gespeichert werden, so dass die Datenrate (MB/s) für das Intervall seit dem letzten Rücksetzen der Informationen in der Datenstruktur leicht berechnet werden kann.
-
Immer wenn ein bestimmter Knoten eine Anforderung einer logischen Blockadresse (LBA) empfängt, kann er das Slice bestimmen, zu dem die LBA gehört, und kann dann die Routingabbildung konsultieren, um den Eigentümerknoten dieses bestimmten Slice zu bestimmen. Wenn der bestimmte Knoten der Eigentümer des bestimmten Slice ist, kann der die Anforderung lokal versorgen, ohne irgendwelche Netzwerkressourcen zu verbrauchen. Wenn das bestimmte Slice einem anderen Knoten gehört, wird die Anforderung zu diesem Eigentümer geroutet. Der bestimmte Knoten kann auch den Zugriffsstatistikzähler für dieses Slice dementsprechend modifizieren.
-
Gemäß Aspekten der Offenbarung können nach einem vorbestimmten Zeitraum die offenbarten Systeme und Verfahren neue Eigentümer für jedes Slice bestimmen, die die Netzwerkauslastung verringern könnten. Die neuen Eigentümer können nach dem vorbestimmten Zeitraum, in dem ausreichend Informationen über Zugriffsstatistiken gesammelet wurden, bestimmt werden, um die Entscheidung über die neuen Eigentümer zu informieren. Wenn das offenbarte Verfahren bestimmt, dass ein Slice zu einem neuen Eigentümer wechseln kann, kann es dynamisch neu vergeben werden, z. B. ohne Benutzerintervention oder die Notwendigkeit, den Cache neu zu erzeugen.
-
Da mehr als ein Knoten auf Daten im selben Slice zugreifen können, können andere Knoten, nachdem ein Slice neu an einen neuen Eigentümer vergeben wird, immer noch erfordern, aus der Ferne auf das Slice zuzugreifen. Dementsprechend sollte das Netzwerk immer noch Anforderungen des Datenzugriffs in entfernten Knoten nachkommen. Gemäß Aspekten der Offenbarung kann ein Slice auf der Basis der Lokalität des Zugriffs neu an einen Knoten vergeben werden, z. B. an den Knoten, der die meisten Daten transferiert, was zur Minimierung der Auswirkung auf das Netzwerk führen kann.
-
Zusätzlich zu der Netzwerkauslastungsverringerung kann die dynamische Zuteilung von Slices auch die Skalierbarkeit verbessern, da sie die Hinzufügung von mehr Computerknoten in das Cluster erlauben kann. Die offenbarten Systeme und Verfahren können sich auch besser an Änderungen von Zugriffsmustern anpassen, zum Beispiel im Fall von neuen Anwendungen, Anwendungsausfällen oder zum Lastausgleich.
-
2 und 3 zeigen eine beispielhafte dynamische Zuteilung von Slices und die resultierende Netzwerkauslastungsverringerung. Spezifisch zeigt 2 ein Cluster 200 mit 2 Knoten (N1, N2). Der gesamte Cache des Clusters ist in vier Slices 202 aufgeteilt. Anfänglich werden die Slices 202 zwischen Knoten N1 und N2 im Reigenverfahren vergeben, wie in der Routingabbildung 204 dargestellt. Spezifisch werden Slices {0, 2} an Knoten N1 und Slices {1, 3} an Knoten N2 vergeben. Alle empfangenen Anforderungen von Daten in den Slices werden gemäß der Routingabbildung 204 versorgt. Zum Beispiel wird eine Anforderung auf Knoten N1 einer LBA, die im Slice 0 residiert, lokal versorgt. Eine Anforderung auf Knoten N1 einer LBA, die in Slice 1 residiert, wird über das Netzwerk versorgt, z. B. durch Anfordern der LBA von Knoten N2. Wie oben besprochen können nach einem vorbestimmten Zeitraum die offenbarten Systeme und Verfahren neue Eigentümer für die Slices bestimmen, indem zum Beispiel Zugriffsstatistiken für die Knoten in dem Cluster untersucht werden. Als Anschauungsbeispiel zeigt Tabelle 206 die Zugriffsstatistiken für Knoten N1 und Tabelle 208 die Zugriffsstatistiken für Knoten N2. Zum Beispiel zeigt Tabelle 206, dass Knoten N1 Daten von Slice 0 mit einer Transferrate von 50 MB/s 210 anfordert und Daten von Slice 1 mit einer Transferrate von 100 MB/s 212 anfordert. Wie oben besprochen, vergrößern nur Fernanforderungen die Netzwerkauslastung, wodurch die gesamte verfügbare Netzwerkbandbreite verringert wird, und deshalb trägt die Anforderung von Daten in entfernten Slices, z. B. den Slices 1 und 3, für Knoten N1 zur Netzwerkauslastung bei. Für Knoten N2 kann Anforderung von Daten in entfernten Slices, z. B. den Slices 0 und 2, dementsprechend zur Netzwerkauslastung beitragen. Auf der Basis der Zugriffsstatistiken in den Tabellen 206 und 208 kann die Fernanforderungsrate für Knoten N1 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N1) = Transferrate Slice 1 + Transferrate Slice 3 = 100 (Mb/s) + 30 (Mb/s) = 130 (Mb/s)
-
Ähnlich kann die Fernanforderungsrate für Knoten N2 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N2) = Transferrate Slice 0 + Transferrate Slice 2 = 20 (Mb/s) + 60 (Mb/s) = 80 (Mb/s)
-
Die gesamte Netzwerkauslastung ist deshalb 130 MB/s + 80 MB/s = 210 MB/s, was hoch ist. Gemäß Aspekten der Offenbarung können auf der Basis der Ferntransferraten und Gesamtnetzwerkauslastung die Slices neu vergeben werden, um die Gesamtnetzwerkauslastung zu verringern. Dies ist in 3 dargestellt. Zum Beispiel zeigt 3 das Cluster von 2, wobei zwei der Slices neu vergeben wurden. Spezifisch wurde Slice 1, das zuvor an Knoten N2 vergeben war, neu an Knoten N1 302 vergeben, und Slice 2, das zuvor an Knoten N1 vergeben wurde, wurde neu an Knoten N2 304 vergeben. Nach allen Neuvergaben wird die neue Routingabbildung 306 zu allen Knoten zirkuliert, so dass jedem Knoten die neuen Slicevergaben bewusst sein können.
-
Nach den Neuvergaben kann die Fernanforderungsrate für Knoten N1 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N1) = Transferrate Slice 2 + Transferrate Slice 3 = 20 (Mb/s) + 30 (Mb/s) = 50 (Mb/s)
-
Ähnlich kann die Fernanforderungsrate für Knoten N2 auf der Basis der folgenden Gleichung berechnet werden: Fernanforderungsrate (N2) = Transferrate Slice 0 + Transferrate Slice 1 = 20 (Mb/s) + 40 (Mb/s) = 60 (Mb/s)
-
Die gesamte Netzwerkauslastung ist deshalb 50 MB/s + 60 MB/s = 110 MB/s, was wesentlich niedriger ist, z. B. verglichen mit dem anfänglichen Wert um 52,3% niedriger. Jeder Knoten im Cluster kann einen kumulativen Wert der Zugriffsgröße zum Beispiel in Byte für jedes Slice unterhalten, auf das er in einem gegebenen Zeitfenster zugegriffen hat. Die Transferrate für jedes Slice kann dann durch Dividieren der Zugriffsgröße durch die Fenstergröße berechnet werden. Zum Zeitpunkt der Umabbildung kann für jedes Slice ein Umabbildungsalgorithmus die Transferrate jedes Knotens prüfen und kann es an den Knoten vergeben, der die höchste Transferrate aufweist. Falls der aktuelle Eigentümer eines Slice die höchste Transferrate für das bestimmte Slice aufweist, muss das Slice nicht neu abgebildet werden. Wenn mehrere Knoten die höchste Transferrate aufweisen, können Verknüpfungen zum Beispiel unter Verwendung von Zugriffsgröße, Periodizität des Wechsels der Slice-Eigentümerschaft, Cache-Verschmutzung und anderer Heuristik unterbrochen werden. Die ursprüngliche und neue Netzwerkauslastung können durch Summierung von Transferraten für jedes Slice durch entfernte Knoten berechnet werden. Die Statistiken können nach einer Runde der Neuabbildung rückgesetzt werden.
-
Die Häufigkeit der Neuabbildung kann durch einen Administrator bestimmt werden. Zum Beispiel kann sie zu einer bestimmten Zeit während des Tages laufen, z. B. wenn Anforderungsverkehr niedrig ist. Die Neuabbildung kann auch automatisch sein, zum Beispiel kann ein Prozess im Hintergrund die Transferraten von jedem Knoten periodisch abfragen und bestimmen, ob eine Änderung vom stationären Zustand, z. B. aufgrund einer Änderung von Anwendungszugriffsmustern, vorliegt.
-
Gemäß alternativen Aspekten der Erfindung kann andere Heuristik verwendet werden, um eine verbesserte Slice-Platzierung zu bestimmen, wie etwa Cache-Raumauslastung auf einem Knoten, Ausräumung und Menge an schmutzigen Daten, die nach der Eigentümerschaftsänderung migriert werden müssten. Jeder Knoten kann die Menge an schmutzigen Daten, die ausgeräumt werden kann, verfolgen. Die Neuabbildung eines Slice kann vermieden werden, es würde Ausräumen von schmutzigen Daten über eine Schwelle bedeuten. Das Ausräumen massiver Mengen an Daten durch verschiedene Knoten während der Neuabbildung kann zufällige Schreibvorgänge auf dem Datenträger erzeugen und kann sich deshalb auf die Zeit zum Durchführen der Neuabbildung auswirken und kann sich auch auf Anwendungs-E/As auswirken, die Daten aus dem Datenträger bei einem Cache-Fehlen abrufen müssen. Cache-Auslastung kann auch betrachtet werden, weil ein Knoten z. B. auf der Basis der Transferrate der optimale Eigentümer für ein Slice sein kann, was aber nicht bedeutet, dass Speichern dieses Slice auf seinem optimalen Eigentümer die Leistungsfähigkeit verbessern würde. Für jeden Knoten können Prioritäten auf der Basis von Transferraten an diese Slices vergeben werden. Diese Prioritäten können zusammen mit der Cache-Auslastung während des Neuabbildens verwendet werden, um zu bestimmen, ob ein bestimmtes Slice neu auf einem gegebenen Knoten abgebildet werden sollte oder nicht. Wenn die Cache-Auslastung gering ist, kann Neuabbildung auftreten; andernfalls kann Abbilden eines Slice mit niedriger Priorität bewirken, dass Daten von anderen Slices mit höherer Priorität ausgeräumt werden, was sich negativ auf die Leistungsfähigkeit auswirken kann.
-
Nachdem eine neue Routingabbildung erzeugt wurde, ist es wünschenswert, die Routingabbildungen in jedem Cluster dynamisch zu aktualisieren, z. B. ohne jegliche Ausfallzeit, ohne das Cluster zu löschen oder neu zu erzeugen oder die Verarbeitung von Datenanforderungen für lange Dauer anzuhalten.
-
Gemäß Aspekten der Offenbarung kann die neue Routingabbildung atomisch über alle Knoten im Cluster hinweg aktualisiert werden. Zum Beispiel kann einer der Knoten an den Managerknoten vergeben werden, der für das Koordinieren der Aktualisierung verantwortlich sein kann. Der Managerknoten kann die neue Routingabbildung allen anderen Knoten des Clusters bereitstellen und kann von diesen anfordern, den Aktualisierungsprozess zu beginnen. Gemäß Aspekten der Offenbarung kann der Aktualisierungsprozess drei Schritte umfassen. Während des ersten Schritts können alle Knoten einzeln die neue Routingabbildung mit der aktuellen Routingabbildung vergleichen und können bestimmen, welche Slices an sie neu vergeben wurden, z. B. gewonnene Slices, und welche Slices nicht mehr an sie vergeben sind, z. B. verlorene Slices.
-
Aktuelle Slice-Eigentümer können die Daten vom Backend bei einem Cache-Fehlen abrufen. Während der Neuabbildung könnte es, wenn der alte Eigentümer nicht alle schmutzigen Daten ausgespült hat und alle nachfolgenden Schreibvorgänge als Durchschreiben behandelt hat, dazu kommen, dass der neue Eigentümer verfallene Daten vom Backend abruft (nachdem die Ferntrefferperiode vorüber ist). Für alle verlorenen Slice-Eigentümerschaften können die Knoten jegliche schmutzigen Daten, die sie im Cache für diese Slices haben, ausspülen und können diese Slices auch in Durchschreiben verwandeln. Deshalb verschmutzen alle neuen Schreibvorgänge nach dem Ausspülen das Slice nicht nochmal. Dies kann Stimmigkeit mit dem Backend (Cache-gespeicherte Vorrichtung) sicherstellen, so dass im Fall eines etwaigen Fehlers keine Abhängigkeit von dem alten Eigentümer eines Slice bestehen kann.
-
Für alle gewonnenen Slice-Eigentümerschaften können die Knoten etwaige bereits existierende Daten, die im Cache vorliegen, löschen. Diese Aktion wird durchgeführt, weil wie oben erläutert der Prozess für verlorene Slice-Eigentümerschaften die schmutzigen Daten ausspült, ohne Daten zu löschen, die zu Slices gehören, für die der Knoten Eigentümerschaft verloren hat. Diese Aktion führt zu keinerlei Problemen, da die Daten, die zu einem Slice gehören, für das Eigentümerschaft verloren wurde, letztendlich aus dem Cache ausgeräumt werden, während neue Daten Cache-gespeichert werden. Wenn zum Beispiel ein Slice auf einen neuen Eigentümer umabgebildet wurde, kann der alte Eigentümer etwaige schmutzige Daten, die dem Slice zugeordnet sind, vor der Eigentümerschaftsänderung ausspülen. Während einer Ferntrefferperiode nach der Eigentümerschaftsänderung kann der neue Eigentümer den alten Eigentümer nach Daten über ein Cache-Fehlen abfragen, weil es schneller sein kann, die Daten von dem alten Eigentümer zu erhalten, statt sie vom Backend zu erhalten. Dies ist im Allgemeinen wahr, weil Netzwerk- und Halbleiterlaufwerkzugriffe schneller als Festplattenzugriffe sind. Cache-Speicherung auf Bedarf nach Eigentümerschaftsänderung kann auch Cache-Verunreinigung vermeiden, weil nicht alle Blöcke des Slice, die in dem alten Eigentümer Cache-gespeichert wurden, vom neuen Eigentümer benötigt werden. Die Ferntrefferperiode kann für eine endliche Dauer gelten und kann für Aufwärmung des Cache des neuen Eigentümers bestimmt sein. Bei einer Leseanforderung an einen Block kann der neue Eigentümer den alten Eigentümer nach dem Block abfragen und kann ihn Cache-speichern. Wenn der alte Eigentümer nicht über den Block verfügt, kann der neue Eigentümer ihn vom Backend abrufen. Eine Schreibanforderung zu einem späteren Zeitpunkt kann den Block modifizieren, wodurch die Kopie des Blocks auf dem alten Eigentümer verfallen würde. Wenn während einer neuen Runde der Neuabbildung das Slice neu auf seinen alten Eigentümer abgebildet wird, würde, wenn der alte Eigentümer immer noch den Block in seinem Cache hätte, er für eine Leseanforderung dann verfallene Daten zurückgeben. Dies ist der Grund für das Vorreinigen etwaiger existierender Daten, die ein Knoten für ein Slice haben könnte, für das er Eigentümerschaft gewinnt.
-
Nach dem Abschluss dieses Schritts kann jeder Knoten den Managerknoten über den Status des Abschlusses des Schritts informieren, z. B. ob der Knoten erfolgreich die schmutzigen Daten ausgespült und etwaige bereits existierende Daten gelöscht hat oder ob in diesem Schritt ein Fehler aufgetreten ist. Gemäß Aspekten der Offenbarung kann der Managerknoten, wenn alle Knoten angegeben haben, dass sie den Schritt erfolgreich abgeschlossen haben, alle Knoten anweisen, zum zweiten Schritt des Aktualisierungsprozesses überzugehen. Wenn mindestens ein Knoten angegeben hat, dass während des ersten Schritts ein Fehler aufgetreten ist, kann der Managerknoten alle Knoten anweisen, den Aktualisierungsprozess abzubrechen.
-
Im zweiten Schritt kann der Managerknoten alle Knoten anweisen, die Versorgung ihrer Anforderungen individuell anzuhalten, z. B. können die empfangenen Anforderungen in einer Warteschlange gehalten werden, und die neue Routingabbildung anzuwenden. Nach dem Abschluss dieses Schritts kann jeder Knoten den Managerknoten über den Status des Abschlusses des Schritts informieren, z. B. ob sie die neue Abbildung erfolgreich angewandt haben oder ob in diesem Schritt ein Fehler aufgetreten ist. Wenn alle Knoten angeben, dass der Schritt erfolgreich war, kann der Managerknoten alle Knoten anweisen, zum dritten Schritt des Aktualisierungsprozesses überzugehen. Wenn mindestens ein Knoten angegeben hat, dass während des ersten Schritts ein Fehler aufgetreten ist, kann der Managerknoten alle Knoten anweisen, den Aktualisierungsprozess abzubrechen. Wenn die Knoten die Abbruchanweisung empfangen, können die Knoten die neue Routingabbildung verwerfen und Verarbeitung ihrer Anforderungen gemäß der vorherigen Routingabbildung wiederaufnehmen. Gemäß alternativen Aspekten der Offenbarung kann der Managerknoten nach einiger Zeit das Protokoll erneut vom Anfang an versuchen. Im dritten Schritt des Aktualisierungsprozesses können alle Knoten die Versorgung ihrer Anforderungen wieder aufnehmen.
-
4 zeigt ein beispielhaftes Verfahren 400 zum Aktualisieren der Routingabbildung gemäß Aspekten der Offenbarung. Spezifisch kann der Managerknoten die neue Routingabbildung zu allen Knoten senden und kann von ihnen anfordern, den Aktualisierungsprozess zu starten 402. Nachdem die Knoten die neue Routingabbildung empfangen, können die Knoten die neue Routingabbildung mit der aktuellen Routingabbildung vergleichen 404. Die Knoten können dann die Slices bestimmen, die sie gewonnen und/oder verloren haben 406. Für alle verlorenen Slice-Eigentümerschaften spülen die Knoten schmutzige Daten im Cache für diese Slices aus und verwandeln diese Slices in Durchschreiben 408. Für alle gewonnenen Slice-Eigentümerschaften löschen die Knoten etwaige bereits existierende Daten, die im Cache vorliegen könnten 410. Wenn in irgendeinem der Knoten ein Fehler auftritt 412, kann der Managerknoten den Prozess abbrechen 414. Wenn kein Fehler auftritt, können die Knoten die Versorgung ihrer Anforderung stoppen 416 und die neue Routingabbildung anwenden 418. Wenn in irgendeinem der Knoten ein Fehler auftritt 420, kann der Managerknoten den Prozess abbrechen 414. Wenn kein Fehler auftritt, können die Knoten die Versorgung der Anforderungen wieder aufnehmen.
-
Nach dem Aktualisieren der Routingabbildung über alle Knoten hinweg, ist die neue Eigentümerschaft von Slices wirksam. Die neuen Eigentümer enthalten jedoch keinerlei Daten für die Slices, die sie nach der gerade abgeschlossenen Runde der Eigentümerschaftsaktualisierung gewonnen haben. Dadurch entstehen keinerlei Datenstimmigkeitsprobleme, weil vor der Eigentümerschaftsänderung alle schmutzigen Daten, die zu den Slices gehören, deren Eigentümerschaft sich geändert hat, ausgespült werden und deshalb der neue Eigentümer immer die Daten vom Backend abrufen kann, um eine etwaige Anforderung zu versorgen. Dadurch kann jedoch die Latenz vergrößert werden, weil der Cache wiederaufgewärmt werden muss, was nach jeder Runde der Eigentümerschaftsänderung zu Leistungsfähigkeitskurven des Sägezahntyps führen kann.
-
Die offenbarten Systeme und Verfahren können dieses Problem mindern. Gemäß Aspekten der Offenbarung können die Daten vor der Eigentümerschaftsänderung zum neuen Eigentümer transferiert werden, statt zum Backend gespült zu werden. Gemäß alternativen Aspekten der Offenbarung können die Daten nach der Eigentümerschaftsänderung im Hintergrund vom alten Eigentümerknoten zum neuen Eigentümerknoten transferiert werden.
-
Diese Lösungen können potentiell zu Cache-Verunreinigung führen, da nicht häufig auf alle Daten zugegriffen werden könnte, die für ein bestimmtes Slice Cache-gespeichert wurden. Zum Beispiel kann nur auf eine Teilmenge des Slice häufig zugegriffen werden, und auf den Rest wird wenig häufig zugegriffen, wodurch er nicht heiß genug wird, um Cache-gespeichert zu werden. Bei einigen Szenarien kann Transferieren aller Cache-gespeicherten Daten für ein bestimmtes Slice vom alten Eigentümerknoten zum neuen Eigentümerknoten zu Ausräumung von einigen Daten, auf die häufiger zugegriffen wird, vom neuen Eigentümer führen.
-
Gemäß Aspekten der Offenbarung kann Cache-Speichern von Daten auf Bedarf die Sägezahn-Leistungsfähigkeit verbessern und auch Cache-Verunreinigung vermeiden. Das Cache-Speichern von Daten auf Bedarf ist ein zeitbeschränkter Prozess, der als Ferntrefferperiode bezeichnet wird. Durch Konsultieren der neuen und alten Routingabbildung kann das offenbarte Verfahren den aktuellen und alten Eigentümer eines Slice bestimmen. Für jede Anforderung kann, wenn der neue Eigentümer nicht über die Daten verfügt, das offenbarte Verfahren den alten Eigentümer konsultieren und kann prüfen, ob er die Daten immer noch in seinem Cache hat. Dabei wird angenommen, dass während des Prozesses des Aktualisierens der Routingabbildung die Daten für ein verlorenes Slice nicht gelöscht werden. Die Daten können ausgespült werden, so dass es im Cache sauber ist und können letztendlich gemäß Cache-Müllabfuhrrichtlinien ausgeräumt werden.
-
Gemäß Aspekten der Offenbarung kann die Anforderung versorgt werden, wenn der alte Eigentümer immer noch über die Daten verfügt. Die Daten werden auch Cache-gespeichert und in dem neuen Eigentümer angeheftet. Deshalb können Daten auf Bedarf vom alten Eigentümer zum neuen Eigentümer migrieren, wodurch Cache-Verunreinigung vermieden wird. Außerdem kann das Abrufen der Daten vom alten Eigentümer schneller als Abrufen der Daten vom Backend sein und deshalb kann die Sägezahn-Leistungsfähigkeit verbessert werden. Die Daten müssen auf den neuen Eigentümer angeheftet werden, weil sie modifiziert werden könnten, was bewirkt, dass der alte Eigentümer verfallene Daten hat. Dies kann Ausräumung von Daten auf dem neuen Eigentümer, die zu einem neugewonnenen Slice gehören, während der Ferntrefferperiode verhindern. Wenn der alte Eigentümer die Daten nicht in seinem Cache hat, können die Daten vom Backend abgerufen werden und können in dem neuen Eigentümer Cache-gespeichert und angeheftet werden.
-
Nachdem die Ferntrefferperiode vorüber ist, wird der alte Eigentümer nicht mehr bezüglich etwaiger Cache-Fehltreffer konsultiert und die Daten können auf den neuen Eigentümer ent-heftet werden. Die Dauer der Ferntrefferperiode kann unter Verwendung verschiedener Heuristik bestimmt werden, zum Beispiel auf der Basis historischer Zeiten zur Aufwärmung des Cache.
-
Für Fachleute wäre erkennbar, dass die verschiedenen Darstellungen in der Beschreibung und den Zeichnungen, die hier beschrieben werden, als elektronische Hardware, Computersoftware oder Kombinationen von beidem implementiert werden können. Zur Veranschaulichung dieser Austauschbarkeit von Hardware und Software wurden oben verschiedene beispielhafte Blöcke, Module, Elemente, Komponenten, Verfahren und Algorithmen im Hinblick auf ihre Funktionalität beschrieben. Ob solche Funktionalität als Hardware, Software oder Kombination implementiert wird, richtet sich nach der konkreten Anwendung und Entwurfsbeschränkungen, die dem Gesamtsystem auferlegt werden. Fachleute können die beschriebene Funktionalität auf verschiedene Weise für jede konkrete Anwendung implementieren. Verschiedene Komponenten und Blöcke können anders angeordnet werden (zum Beispiel in einer anderen Reihenfolge angeordnet oder auf eine andere Weise partitioniert werden), ohne jeweils vom Schutzumfang der betreffenden Technologie abzuweichen.
-
Ferner kann eine Implementierung des Kommunikationsprotokolls auf zentralisierte Weise in einem Computersystem realisiert werden, oder auf verteilte Weise, wobei verschiedene Elemente über mehrere verbundene Computersysteme verteilt sind. Jede Art von Computersystem oder anderer Vorrichtung, die zur Ausführung der hier beschriebenen Verfahren ausgelegt ist, eignet sich für die Ausführung der hier beschriebenen Funktionen.
-
Eine typische Kombination von Hardware und Software könnte ein Vielzweck-Computersystem mit einem Computerprogramm sein, das, wenn es geladen und ausgeführt wird, das Computersystem so steuert, dass es die hier beschriebenen Verfahren ausführt. Die Verfahren für das Kommunikationsprotokoll können auch in einem Computerprogrammprodukt eingebettet sein, das alle Merkmale umfasst, die die Implementierung der hier beschriebenen Verfahren ermöglichen, und das, wenn es in ein Computersystem geladen ist, diese Verfahren ausführen kann.
-
Computerprogramm oder Anwendung bedeutet im vorliegenden Kontext einen beliebigen Ausdruck in einer beliebigen Sprache, einem beliebigen Code oder einer beliebigen Notation einer Menge von Anweisungen, die dafür bestimmt ist, zu bewirken, dass ein System, das eine Informationsverarbeitungsfähigkeit aufweist, eine bestimmte Funktion entweder direkt ausführt oder nach einem oder beiden von Folgendem: a) Umsetzung in eine andere Sprache, einen anderen Code oder eine andere Notation; b) Reproduktion in einer anderen materiellen Form. Insbesondere kann dieses Kommunikationsprotokoll in anderen spezifischen Formen realisiert werden, ohne vom Wesen oder den wesentlichen Attributen davon abzuweichen, und dementsprechend sollte man sich auf die folgenden Ansprüche beziehen, statt auf die obige Beschreibung, um den Schutzumfang der Erfindung zu bestimmen.
-
Das Kommunikationsprotokoll wurde im Detail mit spezifischer Erwähnung dieser dargestellten Ausführungsformen beschrieben. Es ist jedoch ersichtlich, dass innerhalb des Wesens und Schutzumfangs der Offenbarung, so, wie sie in der obigen Beschreibung beschrieben wird, verschiedene Modifikationen und Änderungen vorgenommen werden können und diese Modifikationen und Änderungen als Äquivalente und Teil der vorliegenden Offenbarung zu betrachten sind.