-
HINTERGRUND
-
Cloud Computing ermöglicht eine verbesserte Leistung und Bereitstellung von Anwendungen und Diensten, indem die Rechenlast durch Virtualisierung auf ein Netz von Computern oder Servern verteilt wird. Anwendungen können als eine Reihe von Microservices entwickelt werden, die in Containern ausgeführt werden. In einem Container werden die Arbeitslast und die Abhängigkeiten von der Arbeitslast so gebündelt, dass die Arbeitslast auf Servern an verschiedenen geografischen Standorten ausgeführt werden kann. Jeder Workload kann Konfigurationseinstellungen, Eigenschaften und Attribute enthalten, die in Datendateien gespeichert werden können. Die Datendateien können lokal auf einem Host-Server oder an einem entfernten Speicherort gespeichert sein.
-
Figurenliste
-
Diese und andere Merkmale, Aspekte und Vorteile der vorliegenden Spezifikation werden besser verstanden, wenn die folgende detaillierte Beschreibung mit Bezug auf die beigefügten Zeichnungen gelesen wird, in denen gleiche Zeichen gleiche Teile in den Zeichnungen darstellen, wobei:
- 1 zeigt ein Beispiel für ein vernetztes System zur Synchronisierung von Datendateien in einem verteilten Netzwerk von Knoten, in Übereinstimmung mit einem Beispiel;
- In den 2A und 2B sind Sperrdateien gemäß einem Beispiel dargestellt;
- 3 ist ein Flussdiagramm, das ein Verfahren zur Synchronisierung verteilter Datendateien gemäß einem anderen Beispiel zeigt;
- 4 ist ein Flussdiagramm, das ein Verfahren zur Synchronisierung verteilter Datendateien mit Massenänderungen darstellt, die von einer Vielzahl von Threads durchgeführt werden, die mit der Arbeitslast verbunden sind, in Übereinstimmung mit einem Beispiel;
- 5A, 5B, 5C und 5D zeigen die Änderungen, die von den mit der Arbeitslast verbundenen Threads an den Datendateien vorgenommen werden, gemäß einem Beispiel;
- 6 ist ein Flussdiagramm, das ein Verfahren zur Synchronisierung von Datendateien in einem verteilten Netzwerk in regelmäßigen Abständen gemäß einem Beispiel darstellt; und
- 7 ist ein Blockdiagramm, das eine Verarbeitungsressource und ein maschinenlesbares Medium darstellt, das mit Beispielanweisungen zur Synchronisierung von Datendateien in einem verteilten Netzwerk gemäß einem Beispiel kodiert ist.
-
Es wird betont, dass die verschiedenen Merkmale in den Zeichnungen nicht maßstabsgetreu gezeichnet sind. Vielmehr sind die Abmessungen der verschiedenen Merkmale in den Zeichnungen willkürlich vergrößert oder verkleinert worden, um die Diskussion zu verdeutlichen.
-
DETAILLIERTE BESCHREIBUNG
-
Die folgende detaillierte Beschreibung bezieht sich auf die beigefügten Zeichnungen. Wo immer es möglich ist, werden in den Zeichnungen und in der folgenden Beschreibung gleiche Bezugsnummern verwendet, um auf gleiche oder ähnliche Teile zu verweisen. Es wird ausdrücklich darauf hingewiesen, dass die Zeichnungen nur der Veranschaulichung und Beschreibung dienen. Obwohl in diesem Dokument mehrere Beispiele beschrieben werden, sind Änderungen, Anpassungen und andere Ausführungen möglich. Dementsprechend schränkt die folgende detaillierte Beschreibung die offengelegten Beispiele nicht ein. Stattdessen kann der richtige Umfang der offengelegten Beispiele durch die beigefügten Ansprüche definiert werden.
-
Die hier verwendete Terminologie dient der Beschreibung bestimmter Beispiele und ist nicht als einschränkend zu verstehen. Die hier verwendeten Singularformen „ein“, „ein“ und „die“ schließen auch die Pluralformen ein, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Der hier verwendete Begriff „ein anderer“ ist definiert als mindestens eine Sekunde oder mehr. Der hier verwendete Begriff „gekoppelt“ ist definiert als verbunden, entweder direkt ohne dazwischenliegende Elemente oder indirekt mit mindestens einem dazwischenliegenden Element, sofern nicht anders angegeben. Beispielsweise können zwei Elemente mechanisch, elektrisch oder kommunikativ über einen Kommunikationskanal, -pfad, -netz oder -system miteinander verbunden sein. Darüber hinaus bezieht sich der Begriff „und/oder“, wie er hier verwendet wird, auf alle möglichen Kombinationen der aufgeführten Elemente und schließt diese ein. Es versteht sich auch, dass, obwohl die Begriffe erste, zweite, dritte, vierte usw. zur Beschreibung verschiedener Elemente verwendet werden, diese Elemente durch diese Begriffe nicht eingeschränkt werden sollten, da diese Begriffe nur zur Unterscheidung eines Elements von einem anderen verwendet werden, sofern nicht anders angegeben oder aus dem Kontext hervorgeht. Wie hierin verwendet, bedeutet der Begriff „beinhaltet“, dass er beinhaltet, aber nicht darauf beschränkt ist, der Begriff „einschließlich“ bedeutet, dass er beinhaltet, aber nicht darauf beschränkt ist. Der Begriff „basierend auf“ bedeutet zumindest teilweise basierend auf.
-
Cloud Computing erleichtert die Verbesserung der Leistung und Bereitstellung von Anwendungen und Diensten durch die Verteilung der Rechenlast auf ein Netzwerk von Computern oder Servern durch Virtualisierung. Anwendungen oder Arbeitslasten können als eine Reihe von Microservices entwickelt werden, die in Containern ausgeführt werden. In einem Container werden die Arbeitslast und die Abhängigkeiten von der Arbeitslast gebündelt, so dass die Arbeitslast auf verschiedenen Servern an unterschiedlichen geografischen Standorten über ein Weitverkehrsnetz ausgeführt und gestartet werden kann, wodurch den Verbrauchern weltweit bessere Dienste angeboten werden.
-
Beispiele für Workloads können unter anderem eine containerisierte Anwendung, ein Container, ein Pod, eine virtuelle Maschine oder ein beliebiges Stück Code sein, das als Microservice realisiert werden kann. Workloads können über ein Workload-Orchestrierungssystem verwaltet werden. Verschiedene Merkmale des Cloud Computing wie Microservice-Architektur, modernes Design, Containerisierung, Automatisierung usw. ermöglichen eine schnellere Entwicklung und Bereitstellung neuer Workloads und kürzere Zeiten für die Problemlösung.
-
Viele Cloud-basierte Anwendungen werden mit einer eingebundenen Datenbankbibliothek entwickelt, z. B. einer relationalen Datenbank, die die Daten auf der Festplatte speichert. Solche Anwendungen können eine Kopie der Datendateien lokal auf dem bereitgestellten Server speichern. Die Datendateien können Konfigurationseinstellungen, Eigenschaften und Attribute der Anwendungen enthalten. Die Skalierung solcher Anwendungen auf einen Cluster von Servern bringt mehrere Herausforderungen mit sich. Wenn beispielsweise eine Transaktion oder Änderung an der Datendatei von einer Anwendungsinstanz auf einem Server durchgeführt wird, wissen andere Instanzen derselben Anwendung, die auf anderen Servern eingesetzt werden, möglicherweise nichts von diesen Transaktionen.
-
Bei einigen Lösungen, z. B. in hybriden Cloud-Umgebungen, können die von den Anwendungen verwendeten Daten auf einem zentralen Server gespeichert werden, bei dem es sich in einigen Beispielen um einen Remote-Server handeln kann. Immer wenn eine Anwendung die neueste Version einer Datendatei anfordert, kann auf die Daten vom zentralen Server zugegriffen werden, um die lokalen Datendateien zu synchronisieren und zu aktualisieren. In diesem Beispiel können jedoch die Anwendungen, die auf dieselben Datendateien zugreifen, die auf dem gemeinsamen zentralen Server gespeichert sind, aufgrund hoher Latenzzeiten und geringer Bandbreite langsamer laufen als erwartet. Eine verzögerte Kommunikation kann beispielsweise auftreten, wenn die Server weit vom zentralen Speicher entfernt sind und/oder die gemeinsam genutzten Datendateien groß sind.
-
Ein Wechsel des Datenbanktyps, z. B. zu einer Client-Server-Datenbank, kann zu Problemen führen. So bieten andere Datenbanktypen möglicherweise keine automatische Erkennung oder Synchronisierung neu instanzierter Anwendungen und zugehöriger Datendateien im Netz. Insbesondere bieten andere Datenbanken möglicherweise keine Synchronisierung der verteilten Datendateien, wenn neue Anwendungen in anderen Cloud-Umgebungen über das Weitverkehrsnetz gestartet oder bereitgestellt werden. Selbst wenn eine Synchronisierung erreicht wird, kann es zu einem erheblichen Netzwerk-Overhead kommen. Darüber hinaus können Anwendungen so kodiert sein, dass sie ein Dateiformat einer Festplattendatenbank verwenden; eine Änderung des Datenbanktyps für die Anwendungen würde daher ein Neuschreiben der Anwendungen erfordern, was mühsam und arbeitsintensiv sein kann.
-
Zu diesem Zweck wird in Übereinstimmung mit den Aspekten der vorliegenden Offenbarung eine Lösung für die Synchronisierung verteilter Datendateien vorgestellt. In einigen Beispielen erwirbt ein Host-Knoten eine Sperrdatei mit einer ersten Knotenliste und einer zweiten Knotenliste von einem zentralen Knoten, der eine zentrale Kopie von Datendateien speichert. Die erste Knotenliste zeigt die Identitäten eines ersten Satzes von Knoten an, die über die neueste Version der Datendateien verfügen, und eine zweite Knotenliste zeigt die Identitäten eines zweiten Satzes von Knoten an, die die Datendateien geändert haben. Wenn die Identität des Host-Knotens nicht in der ersten Knotenliste angegeben ist, wird ein nächstgelegener Knoten aus der ersten Knotenliste identifiziert. Der Host-Knoten erhält einen aktualisierten Teil einer neuesten Version der Datendateien vom nächstgelegenen Knoten, um eine lokale Kopie zu synchronisieren. Der Host-Knoten führt Änderungen an der lokalen Kopie durch und aktualisiert die Sperrdatei, indem er die Identität in der ersten Knotenliste und der zweiten Knotenliste angibt. Der Host-Knoten liefert dann einen geänderten Teil der lokalen Kopie an den zentralen Knoten, um die zentrale Kopie mit der lokalen Kopie zu synchronisieren.Die hier vorgestellten Beispiele erleichtern die verbesserte Synchronisierung verteilter Dateien. Die hier vorgestellten Beispiele stellen sicher, dass Änderungen oder Transaktionen, die von mehreren beteiligten Knoten durchgeführt werden, in der richtigen Reihenfolge abgerufen und angewendet werden, bevor eine Transaktion in der lokalen Kopie durchgeführt wird. Die effiziente Synchronisierung der verteilten Datendateien kann eine verbesserte Leistung und Ausführung der Arbeitslasten in den Zielumgebungen (z. B. Cluster von Arbeitslast-Orchestrierungssystemen) entweder in einem privaten Cloud-Rechenzentrum vor Ort, das dem Kunden gehört oder von ihm geleast wird, oder als As-a-Service-Angebot eines öffentlichen Cloud-Anbieters (z. B. über ein nutzungsabhängiges oder verbrauchsbasiertes Finanzierungsmodell) ermöglichen. Darüber hinaus wird durch die verbesserte Synchronisierung verteilter Datendateien, wie sie durch verschiedene hier vorgestellte Beispielaspekte bewirkt wird, der iterative Erwerb von Sperrdateien durch einen Host-Knoten zur Synchronisierung von Transaktionen, die von jedem Thread in der Arbeitslast eingeleitet werden, reduziert oder beseitigt. So kann der Host-Knoten beispielsweise Änderungen oder Transaktionen abschließen, die von Threads in einer Arbeitslast durchgeführt werden, und dann die Sperrdatei an den zentralen Knoten zurückgeben. Darüber hinaus bieten die hier vorgestellten Beispiele auch eine effiziente Synchronisierung verteilter Datendateien, wenn eine neue Arbeitslastinstanz über ein Weitverkehrsnetz bereitgestellt wird.
-
In 1 ist ein vernetztes System 100 gemäß einem Beispiel abgebildet. Das vernetzte System 100 kann eine Vielzahl von Knoten 102, 104, 106 und einen zentralen Knoten 108 umfassen, die über ein Netzwerk 110 miteinander verbunden sind. In einigen Beispielen kann es sich bei dem vernetzten System 100 um ein verteiltes System handeln, bei dem sich die Knoten 102-106 und der zentrale Knoten 108 an physisch unterschiedlichen Orten befinden können (z. B. auf verschiedenen Racks, in verschiedenen Gehäusen, in verschiedenen Gebäuden, in verschiedenen Städten, in verschiedenen Ländern usw.), während sie über das Netzwerk 110 verbunden sind. In einem weiteren Beispiel können der zentrale Knoten 108 und die Knoten 102-106 gemeinsam untergebracht sein.
-
Beispiele für das Netzwerk 110 können unter anderem ein Internetprotokoll (IP) oder ein nicht-IP-basiertes lokales Netzwerk (LAN), ein drahtloses LAN (WLAN), ein Metropolitan Area Network (MAN), ein Wide Area Network (WAN), ein Storage Area Network (SAN), ein Personal Area Network (PAN), ein zellulares Kommunikationsnetzwerk, ein Public Switched Telephone Network (PSTN) und das Internet sein. Die Kommunikation über das Netzwerk 110 kann in Übereinstimmung mit verschiedenen Kommunikationsprotokollen erfolgen, wie z. B. Transmission Control Protocol und Internet Protocol (TCP/IP), User Datagram Protocol (UDP), IEEE 802.11 und/oder zellulären Kommunikationsprotokollen, ohne darauf beschränkt zu sein. Die Kommunikation über das Netzwerk 110 kann über eine drahtgebundene (z. B. Kupferkabel, optische Kommunikation usw.) oder drahtlose Kommunikationstechnologie erfolgen. In einigen Beispielen kann das Netzwerk 110 über private Kommunikationsverbindungen aktiviert werden, einschließlich, aber nicht beschränkt auf Kommunikationsverbindungen, die über drahtlose, verdrahtete (z. B. Kupfer) und ähnliche Technologien hergestellt werden. In einigen Beispielen können die privaten Kommunikationsverbindungen direkte Kommunikationsverbindungen zwischen den Knoten 102-106 und dem zentralen Knoten 108 sein.
-
Jeder Knoten 102-106 kann Ressourcen, z. B. Rechen-, Speicher- und/oder Netzwerkkapazitäten, für eine oder mehrere darauf auszuführende Arbeitslasten bereitstellen. Bei den Knoten 102-106 kann es sich um Systeme mit einem Prozessor oder Mikrocontroller und/oder einer anderen elektronischen Komponente oder um ein Gerät oder System handeln, das verschiedene Rechen- und/oder Datenspeicherdienste ermöglicht. Die Knoten 102-106 können in einer bestimmten Implementierung des vernetzten Systems 100 ähnliche oder unterschiedliche Hardware- und/oder Softwarekonfigurationen aufweisen. In einigen Beispielen kann der zentrale Knoten 108 Speicher- und Netzwerkfähigkeiten für die zentrale Speicherung von Datendateien im Zusammenhang mit den Arbeitslasten bieten. Alternativ kann der zentrale Knoten in anderen Beispielen auch Rechenkapazitäten für die Ausführung der einen oder mehreren Arbeitslasten bereitstellen. Beispiele für die Knoten 102-106 und den zentralen Knoten 108 können unter anderem einen Server, Server-Cluster, Container-Orchestrierungssysteme, Cluster von Container-Orchestrierungssystemen, eine Computer-Appliance, eine Workstation, einen Desktop-Computer, einen Laptop, ein Smartphone, ein Speichersystem oder ein konvergentes oder hyperkonvergentes System und Ähnliches umfassen. Ferner können die Knoten 102-106 in bestimmten Beispielen eine virtuelle Maschine oder eine containerisierte Anwendung sein, die auf der Hardware des vernetzten Systems 100 ausgeführt wird. Beispielsweise können einige Knoten 102-106 über High-End-Rechenkapazitäten verfügen, einige Knoten können eine hohe Datensicherheit ermöglichen und bestimmte Knoten können über verbesserte thermische Fähigkeiten verfügen.
-
In einigen Beispielen können die Knoten 102-106 eine Verarbeitungsressource 112, 114, 116 und ein maschinenlesbares Medium 118, 120, 122 umfassen. Das maschinenlesbare Medium 118-122 kann ein beliebiges elektronisches, magnetisches, optisches oder anderes physisches Speichergerät sein, das Daten und/oder ausführbare Anweisungen 124, 126, 128 speichern kann. Zum Beispiel kann das maschinenlesbare Medium 118-122 einen oder mehrere Random Access Memory (RAM), einen Electrically Erasable Programmable Read-Only Memory (EEPROM), ein Speicherlaufwerk, einen Flash-Speicher, einen Compact Disc Read Only Memory (CD-ROM) und dergleichen umfassen. Das maschinenlesbare Medium 118-122 kann nicht-übertragbar sein. Wie hier im Detail beschrieben, kann das maschinenlesbare Medium 118-122 mit den ausführbaren Anweisungen 124-128 kodiert sein, um eine oder mehrere Methoden durchzuführen, zum Beispiel die in den 3, 4 und 6.
-
In einigen Beispielen können die Knoten 102-106 Workloads 130, 132, 134 ausführen. In einer Beispielimplementierung können die Workloads 130-134 verschiedene Instanzen desselben Workloads sein. Der Begriff Workload kann sich auf eine Rechenressource beziehen, einschließlich, aber nicht beschränkt auf eine Anwendung (z. B. maschinenausführbare Anweisungen), eine virtuelle Maschine (VM), einen Container, einen Pod oder eine containerisierte Anwendung. In einigen Beispielen können die Workloads 130-134 jeden Code enthalten, der als Microservice entwickelt werden kann. Wie zu verstehen ist, kann eine Arbeitslast wie eine VM eine Instanz eines Betriebssystems sein, die auf einem bestimmten Knoten über ein VM-Host-Programm, wie z. B. einen Hypervisor, gehostet wird. Darüber hinaus kann eine Arbeitslast, wie z. B. ein Container, eine paketierte Anwendung mit ihren Abhängigkeiten (z. B. Betriebssystemressourcen, Verarbeitungszuweisungen, Speicherzuweisungen usw.) sein, die über ein Container-Host-Programm, wie z. B. eine Container-Laufzeitumgebung (z. B. Docker Engine), auf einem bestimmten Knoten gehostet wird. Darüber hinaus können Arbeitslasten in einigen Beispielen Pods enthalten, die durch Gruppierung eines oder mehrerer Container gebildet werden. So kann beispielsweise eine Gruppe von Containern, die einer gemeinsamen Anwendung zugeordnet sind, zu einem Pod zusammengefasst werden.
-
In der Beschreibung werden die Arbeitslasten 130-134 als Anwendungen und die Knoten 102-106 als Server in verschiedenen Rechenzentren an verschiedenen geografischen Standorten beschrieben. Im Beispiel von 1 können die Knoten 102-106 als Host für verschiedene Instanzen derselben Arbeitslast betrachtet werden. Die Knoten 102-106 können die Ausführung einer beliebigen Anzahl von Arbeitslasten 130-134 in Abhängigkeit von den jeweiligen Hardware- und/oder Softwarekonfigurationen ermöglichen. Jeder Knoten 102-106 kann auch On-Disk-Datenbanken zum Speichern einer lokalen Kopie der Datendateien ermöglichen, die mit den im jeweiligen Knoten gehosteten Arbeitslastinstanzen 130-134 verbunden sind. In einigen Beispielen können die Knoten 102-106 eine Kombination aus verschiedenen Speichertypen wie Festplatten, Flash-Speicher, Solid-State-Laufwerke (SSDs) usw. enthalten. In verschiedenen Beispielen kann die lokale Kopie der Datendateien 136-140 in das Ende des Workloads 130-134 als eingebettete Datenbank für die lokale Speicherung eingebettet werden. Beispiele für die eingebettete Datenbank können relationale Datenbankmanagementsysteme, Key-Value-Datenbankbibliotheken, plattenbasierte Multithreading-Tabellen, transaktionale Datenbank-Engines und Ähnliches sein.
-
Darüber hinaus kann die Verarbeitungsressource 112-116 ein physisches Gerät sein, z. B. eine oder mehrere Zentraleinheiten (CPU), ein oder mehrere Mikroprozessoren auf Halbleiterbasis, eine oder mehrere Grafikverarbeitungseinheiten (GPU), anwendungsspezifische integrierte Schaltungen (ASIC), ein FPGA (Field Programmable Gate Array), andere Hardwaregeräte, die in der Lage sind, im maschinenlesbaren Medium 118-122 gespeicherte Anweisungen 124-128 abzurufen und auszuführen, oder Kombinationen davon. Die Verarbeitungsressource 112-116 kann die in dem maschinenlesbaren Medium 118-122 gespeicherten Anweisungen 124-128 abrufen, dekodieren und ausführen, um die mit der Arbeitslast verbundenen Datendateien zu synchronisieren (wie weiter unten beschrieben). Alternativ oder zusätzlich zur Ausführung der Anweisungen 124-128 kann die Verarbeitungsressource 112-116 mindestens einen integrierten Schaltkreis (IC), eine Steuerlogik, elektronische Schaltkreise oder Kombinationen davon enthalten, die eine Reihe elektronischer Komponenten zur Ausführung der Funktionen umfassen, die vom Knoten 102-106 ausgeführt werden sollen. Darüber hinaus können in bestimmten Beispielen, in denen der Knoten 102-106 eine virtuelle Maschine oder eine containerisierte Anwendung sein kann, die Verarbeitungsressource 112-116 und das maschinenlesbare Medium 118-122 eine Verarbeitungsressource und ein maschinenlesbares Medium der Hardware oder eines Computersystems darstellen, das den Knoten 102-106 als virtuelle Maschine oder containerisierte Anwendung hostet.
-
Obwohl das vernetzte System 100 in 1 mit drei Knoten 102-106 dargestellt ist, kann das vernetzte System 100 eine beliebige Anzahl von Knoten umfassen, ohne den Umfang der vorliegenden Offenbarung einzuschränken. Ebenso kann das vernetzte System 100, obwohl ein einziger zentraler Knoten 108 gezeigt wird, mehr als einen zentralen Knoten 108 umfassen, der sich an verschiedenen geografischen Orten befindet, ohne den Umfang der vorliegenden Offenbarung einzuschränken. Zu Erklärungszwecken kann der Knoten 102 im Folgenden als Host-Knoten oder prozessorbasiertes System 102 bezeichnet werden. In ähnlicher Weise können die Knoten 104, 106 im Folgenden gemeinsam als teilnehmende Host-Knoten oder teilnehmende Knoten 104, 106 bezeichnet werden.
-
Während des Betriebs des Host-Knotens 102 kann die Verarbeitungsressource 112 eine Sperrdatei 142 vom zentralen Knoten 108 erwerben, in der eine zentrale Kopie der verteilten Datendateien 144 gespeichert sein kann, die mit den über das Netzwerk 110 verteilten Arbeitslastinstanzen 130-134 verbunden sind. Die verteilten Datendateien können transaktionale Datendateien oder gemeinsam genutzte Datendateisysteme sein. Bei den verteilten Datendateien kann es sich um ACID-konforme (Atomarität, Konsistenz, Isolation, Dauerhaftigkeit) Datenbankdateien handeln. In der gesamten Beschreibung können die Begriffe „Datendateien“ und „verteilte Datendateien“ austauschbar verwendet werden. In den 2A und 2B sind Beispiele für die Sperrdatei 142 dargestellt. Wie in 2A dargestellt, kann die Sperrdatei 142 eine erste Knotenliste 202 und eine zweite Knotenliste 204 enthalten. In einigen Beispielen kann die erste Knotenliste 202 die Identitäten eines ersten Satzes von Knoten anzeigen, die eine neueste Version der Datendateien haben, und die zweite Knotenliste 204 kann die Identitäten eines zweiten Satzes von Knoten anzeigen, die kürzlich Änderungen an den Datendateien vorgenommen haben. Die zweite Knotenliste 204 kann die zweite Gruppe von Knoten in der Reihenfolge angeben, in der die Knoten die Datendateien geändert haben. Die Identität des Knotens, der möglicherweise die letzte Änderung vorgenommen hat, wird oben, d. h. als erster Eintrag, in der Liste angegeben. In der Sperrdatei 142-1 ist beispielsweise die erste Knotenidentität (die oben in der zweiten Knotenliste 204 angegeben ist) Host #2, was bedeutet, dass Host 104 die letzten Änderungen an den Datendateien vorgenommen haben könnte.
-
In einigen Beispielen kann bei Erwerb der Sperrdatei 142 durch einen Knoten (z. B. den Host-Knoten 102) die zentrale Kopie der Datendateien 144 vor Änderungen durch andere Hosts (z. B. teilnehmende Knoten 104, 106) im Netz 110 geschützt oder deaktiviert werden. In einigen Beispielen kann ein Sperrmechanismus, wie z. B. eine POSIX-Sperre (Portable Operating System Interface), implementiert werden, um die zentrale Kopie der Datendateien 144 vor Änderungen durch andere Knoten 104, 106 zu schützen. In einigen Beispielen kann die Beschaffung der Sperrdatei 142 die Implementierung einer FUSE-Schnittstelle (Filesystemat-User-Space) zur Erstellung einer Fernaufrufanforderung an den zentralen Knoten 108 für exklusive Lese-/Schreibrechte für die zentrale Kopie der Datendateien 144 umfassen.
-
Zurück zu 1: Die Verarbeitungsressource 112 kann prüfen, ob die Identität des Host-Knotens 102 mit den Identitäten übereinstimmt, die in der ersten Knotenliste 202 in der Sperrdatei 142 angegeben sind. Wenn die Identitäten nicht übereinstimmen, kann die Verarbeitungsressource 112 den nächstgelegenen teilnehmenden Knoten 104, 106 identifizieren, der die neueste Version der Datendateien aus dem ersten Satz von Knoten in der ersten Knotenliste 202 hat. Die Verarbeitungsressource 112 kann einen aktualisierten Teil der neuesten Version der Datendateien von dem identifizierten nächstgelegenen teilnehmenden Knoten 104, 106 erhalten. Die Verarbeitungsressource 112 kann die lokale Kopie der Datendatei 136 mit der neuesten Version unter Verwendung des aktualisierten Teils synchronisieren. Die Verarbeitungsressource 112 kann die lokale Kopie der Datendateien 136 nach der Synchronisierung ändern. In einigen Beispielen kann das Modifizieren das Hinzufügen, Löschen oder Aktualisieren von Zeilen in einer Datenbanktabelle umfassen, die in den Datendateien enthalten ist (wie hierin in Bezug auf die 5A-5D beschrieben).
-
Nach dem Ändern der lokalen Kopie der Datendateien 136 kann die Verarbeitungsressource 112 die Sperrdatei 142 aktualisieren, indem sie die Identität des Wirtsknotens 102 in der ersten Knotenliste 202 und der zweiten Knotenliste 204 angibt. In einigen Beispielen kann das Aktualisieren der Sperrdatei 142 nach der Änderung das Löschen oder Entfernen der Identitäten des ersten Satzes von Knoten in der ersten Knotenliste 202 und das Angeben der Identität des Host-Knotens 102 umfassen. Wie in 2B gezeigt, werden „Host #2“ und „Host #3“ aus der Sperrdatei 142-1 gelöscht, und „Host #1“ wird in der ersten Knotenliste 202 in der Sperrdatei 142-2 angegeben. Außerdem wird die Identität des Host-Knotens 102 oben angehängt, d. h. als erster Eintrag in der zweiten Knotenliste 204. Daher zeigt die zweite Knotenliste 204 „Host #1“ über „Host #2“ an, der zuvor die Datendateien geändert hat. In einigen Beispielen kann die Identität der Host-Knoten mit IP-Adressen der jeweiligen Host-Knoten angegeben werden.
-
Die Verarbeitungsressource 112 kann den geänderten Teil der lokalen Kopie der Datendateien 136 dem zentralen Knoten 108 zur Synchronisierung der zentralen Kopie der Datendateien 144 mit der geänderten lokalen Kopie der Datendateien 136 bereitstellen. Der Host-Knoten 102 kann dann die Sperrdatei 142 zurück an den zentralen Knoten 108 freigeben, und die Sperrdatei 142 kann den teilnehmenden Knoten 104, 106 zur Erfassung zur Verfügung gestellt werden. Wie man sieht, erleichtern die hier vorgestellten Knoten 102-106 die verbesserte Bereitstellung und Ausführung der Arbeitslastinstanzen 130 -134. Insbesondere aufgrund der verbesserten Synchronisierung der Datendateien, wie sie durch verschiedene hier vorgestellte Beispielaspekte bewirkt wird, können die Workload-Instanzen 130-134 auf einem gut ausgestatteten Host-Knoten ausgeführt werden, der über ausreichende Ressourcen zur Erfüllung der Anforderungen der Workloads verfügt. Die Synchronisierung der mit den Workloads verbundenen Datendateien kann eine verbesserte Leistung und Ausführung von Workloads auf vernetzten Systemen (z. B. Clustern von Workload-Orchestrierungssystemen) vor Ort beim Kunden oder im Rahmen eines As-a-Service-Angebots ermöglichen. Darüber hinaus kann die Synchronisierung der Datendateien nach Massenänderungen der Datendateien durch eine Vielzahl von Threads der Arbeitslast 130-134 durchgeführt werden, wodurch Latenz- und Bandbreitenprobleme reduziert werden (hierin ausführlicher beschrieben mit Bezug auf 4).
-
3 zeigt ein Flussdiagramm, das ein Verfahren 300 zur Synchronisierung von Datendateien in einem verteilten Netzwerk 110 gemäß einem Beispiel darstellt. Zur Veranschaulichung wird das Verfahren 300 in Verbindung mit dem vernetzten System 100 von 1 beschrieben. Das Verfahren 300 kann Verfahrensblöcke 302, 304, 306, 308, 310, 312 und 314 (im Folgenden gemeinsam als Blöcke 302-314 bezeichnet) umfassen, die von einem prozessorbasierten System wie beispielsweise dem Host-Knoten 102 ausgeführt werden können. Insbesondere können die Vorgänge in jedem der Verfahrensblöcke 302-314 von der Verarbeitungsressource 112 durch Ausführen der auf dem maschinenlesbaren Medium 118 gespeicherten Anweisungen 124 ausgeführt werden (siehe 1). Außerdem ist zu beachten, dass in einigen Beispielen die Reihenfolge der Ausführung der Blöcke 302-314 anders sein kann als in 3 dargestellt. So können die Blöcke 302-314 beispielsweise in Reihe, parallel oder in einer Reihen-Parallel-Kombination ausgeführt werden.
-
In Block 302 kann die Verarbeitungsressource 112 die Sperrdatei 142 vom zentralen Knoten 108 abrufen, der eine zentrale Kopie der Datendateien 144 speichern kann, die mit der Arbeitslast 130 im Netzwerk 110 verbunden sind. Wie bereits beschrieben, kann die Sperrdatei 142 eine erste Knotenliste enthalten, die die Identitäten eines ersten Satzes von Knoten angibt, die über eine neueste Version der Datendateien verfügen, und eine zweite Knotenliste, die die Identitäten eines zweiten Satzes von Knoten angibt, die die Datendateien beispielsweise kürzlich geändert haben. In einigen Beispielen kann die Größe der Sperrdatei 142 im Vergleich zur Größe der Datendateien (z. B. der zentralen Kopie der Datendateien 144) minimal oder vernachlässigbar sein. Beispielsweise kann die Sperrdatei 142 weniger als 1-2 Megabyte an Daten umfassen, während die zentrale Kopie der Datendateien 144 mehr als 20 Megabyte groß sein kann.
-
Die Verarbeitungsressource 112 kann anhand der Sperrdatei 142 prüfen, ob der Host-Knoten 102 über die neueste Version der Datendateien verfügt. So kann die Verarbeitungsressource 112 beispielsweise prüfen, ob die erste Knotenliste die Identität des Wirtsknotens 102 angibt. Die Verarbeitungsressource 112 kann einen nächstgelegenen teilnehmenden Knoten 104, 106 aus der ersten Knotenliste 202 identifizieren, wenn die Identität des Host-Knotens 102 nicht mit den in der ersten Knotenliste 202 angegebenen Identitäten übereinstimmt, und zwar in Block 304. In einigen Beispielen kann die Identifizierung des nächstgelegenen teilnehmenden Knotens 104, 106 auf der Grundlage des Standorts oder der geografischen Nähe zum Host-Knoten 102 durchgeführt werden. In anderen Beispielen kann die Identifizierung des nächstgelegenen teilnehmenden Knotens 104, 106 auf der geringsten Latenz oder der höchsten Bandbreite basieren, die mit den Knoten 102-106 verbunden sind.
-
Ferner kann die Verarbeitungsressource 112 in Block 306 einen aktualisierten Teil der neuesten Version der Datendateien von dem nächstgelegenen teilnehmenden Knoten 104, 106 erhalten. In Block 308 kann die Verarbeitungsressource 112 die auf dem Host-Knoten 102 gespeicherte lokale Kopie der Datendateien 136 mit der neuesten Version unter Verwendung des aktualisierten Teils synchronisieren. Ferner kann die Verarbeitungsressource 112 die lokale Kopie der Datendateien 136 ändern. In einigen Beispielen kann das Ändern der lokalen Kopie der Datendateien 136 durch eine Vielzahl von Threads initiiert werden, die mit der Arbeitslast 130 verbunden sind (hierin ausführlicher mit Bezug auf 4 beschrieben). In Block 312 kann die Verarbeitungsressource 112 die Sperrdatei 142 aktualisieren, indem sie die Identität des Host-Knotens 102 in der ersten Knotenliste 202 und der zweiten Knotenliste 204 angibt. In einigen Beispielen kann das Aktualisieren der ersten Knotenliste 202 nach der Änderung das Entfernen der Identitäten des ersten Satzes von Knoten und das Angeben der Identität des Wirtsknotens 102 in der ersten Knotenliste umfassen. In einigen Beispielen kann das Aktualisieren der zweiten Knotenliste 204 das Anhängen der Identität des Wirtsknotens 102 an den Anfang des zweiten Satzes von Knoten 204 umfassen. Ferner kann die Verarbeitungsressource 112 in Block 314 einen modifizierten Teil der lokalen Kopie der Datendateien 136 an den zentralen Knoten 108 liefern, um die zentrale Kopie 144 mit der lokalen Kopie der Datendateien 136 unter Verwendung des modifizierten Teils zu synchronisieren. In einigen Beispielen kann das Verfahren, wenn eine neue Instanz der Arbeitslast auf einem neuen Knoten im Netzwerk bereitgestellt wird, ferner den Erwerb der Sperrdatei 142 vom zentralen Knoten 108 und das Abrufen der zentralen Kopie der Datendateien 144 vom zentralen Knoten 108 umfassen. Die Änderung kann in ähnlicher Weise wie in den Verfahrensblöcken 302-314 beschrieben durchgeführt werden.
-
4 ist ein Flussdiagramm, in dem ein Verfahren zur Synchronisierung von Datendateien dargestellt ist, das Änderungen beinhaltet, die von einer Vielzahl von mit der Arbeitslast verbundenen Threads durchgeführt werden, in Übereinstimmung mit einem anderen Beispiel. In Block 402 empfängt die Verarbeitungsressource 112 ein Änderungskennzeichen von einem Thread der Arbeitslast 130. Das Änderungskennzeichen kann eine Benachrichtigung sein, die anzeigt, dass mindestens ein mit der Arbeitslast 130 verbundener Thread die lokale Kopie der Datendateien 136 geändert hat. 5A, 5B, 5C und 5D zeigen die Änderungen, die von den mit einer Arbeitslast verbundenen Threads an den Datendateien vorgenommen werden, gemäß einem Beispiel. Wie in 500A von 5A dargestellt, kann ein Arbeitslastprozess 502 eine Vielzahl von Threads 504-N umfassen. Jeder Thread 504-N kann eine Folge von Anweisungen im Arbeitslastprozess 502 sein, die Änderungen oder Transaktionen an der lokalen Kopie der Datendateien 136 durchführen können. Die lokale Kopie der Datendateien 136 kann eine transaktionale Datenbanktabelle 506 mit einer Vielzahl von Zeilen und Spalten enthalten, die Schlüssel-Wert-Paare von Daten angeben.
-
Als Reaktion auf den Empfang des Änderungskennzeichens kann die Verarbeitungsressource 112 eine doppelte Prüfung durchführen, ob mit Hilfe der Sperrdatei 142 Änderungen vorgenommen wurden. Beispielsweise kann die Verarbeitungsressource 112 in Block 404 die Sperrdatei 142 überprüfen und feststellen, dass die Identität des Host-Knotens 102 am Anfang der zweiten Knotenliste angegeben ist, um zu bestätigen, dass eine Änderung an der lokalen Kopie der Datendateien 136 am Host-Knoten 102 vorgenommen wurde. In verschiedenen Beispielen kann eine Vielzahl von Änderungen oder Massenänderungen der lokalen Kopie der Datendateien 136 von der Vielzahl von Threads 504-N durchgeführt werden, die mit der Arbeitslast 130 verbunden sind. Wie in 500B von 5B gezeigt, kann der Thread 504-1 einen Hinzufügungsvorgang einer neuen Zeile von Schlüsselwertpaaren (4, Instanz 4, Instanz 2, Host 2) zur Datenbanktabelle durchführen. In 500C von 5C kann der Thread 504-2 eine Aktualisierungsoperation durchführen, indem er den Hostnamen in Zeile 3 der Datenbanktabelle aktualisiert. In 500D von 5D kann der Thread 504-3 eine Löschoperation an der lokalen Kopie der Datendateien 136 durchführen, indem er die Schlüssel-Wert-Paare in Zeile 4 (4, Instanz 4, Instanz 2, Host 2) löscht. Die Änderungen durch die Vielzahl von Threads 504-N können seriell oder parallel an der Datenbanktabelle vorgenommen werden. In einigen Beispielen kann die Mehrzahl der Threads die Änderungen sequentiell durchführen, d. h. warten, bis die Änderung durch einen Thread abgeschlossen ist, bevor die eigene Änderung des Threads durchgeführt wird.
-
In Block 406 kann die Verarbeitungsressource 112 die geänderten Teile der lokalen Kopie der Datendateien 136 an den zentralen Knoten 108 übermitteln. In einigen Beispielen können die geänderten Teile dem zentralen Knoten 108 in Echtzeit bereitgestellt werden. Alternativ können die geänderten Teile dem zentralen Knoten 108 nach Abschluss der Änderungen einer Upstream-Übertragung zur Verfügung gestellt werden. Die geänderten Teile der lokalen Kopie der Datendateien 136 können die Delta-Änderungen enthalten, die sich aus der Vielzahl von Änderungen ergeben, die von der Vielzahl von Threads 504-N durchgeführt werden. In einigen Beispielen können die von den einzelnen Threads vorgenommenen Änderungen dem zentralen Knoten 108 in einem einzigen Vorgang übermittelt werden, anstatt die Änderungen getrennt bereitzustellen. Als Reaktion auf die Feststellung, dass eine Änderung an der lokalen Kopie der Datendateien 136 vorgenommen wurde, kann die Verarbeitungsressource 112 warten, bis die Änderungen abgeschlossen sind. Beispielsweise kann die Verarbeitungsressource 112 in Block 408 warten, bis eine Benachrichtigung empfangen wird, die den Abschluss der mehreren Änderungen an der lokalen Kopie der Datendateien 136 anzeigt, die von den mehreren Threads 504-N durchgeführt wurden. In einigen Beispielen kann die Verarbeitungsressource 112 den Block 408 ausführen und dann den Block 406 ausführen oder umgekehrt. In einigen Beispielen kann die Verarbeitungsressource 112 die Blöcke 406 und 408 gleichzeitig ausführen. In Block 410 kann die Verarbeitungsressource 112 die Sperrdatei 142 an den zentralen Knoten 108 zurückgeben, nachdem sie die geänderten Teile bereitgestellt hat. Bei Freigabe der Sperrdatei 142 können andere teilnehmende Host-Knoten 104, 106 auf die zentrale Kopie der Datendateien 144 und die Sperrdatei 142 zugreifen. Zum Beispiel kann der teilnehmende Host-Knoten 104 die Sperrdatei 142 erwerben und das in den 3 und 4 dargestellt ist.
-
6 ist ein Flussdiagramm, das ein Verfahren zur Synchronisierung von Datendateien im verteilten Netzwerk 110 in regelmäßigen Abständen gemäß einem Beispiel darstellt. In Block 602 kann die Verarbeitungsressource 112 prüfen, ob ein Änderungskennzeichen von einem mit der Arbeitslast 130 verbundenen Thread 504-N empfangen wird. Wenn das Änderungskennzeichen für eine vorbestimmte Zeitspanne nicht empfangen wird, kann die Verarbeitungsressource 112 in Block 604 die Sperrdatei 142 von dem zentralen Knoten 108 erwerben. In Block 606 kann die Verarbeitungsressource 112 prüfen, ob die Identität des Host-Knotens 102 oben in der zweiten Knotenliste 204 angegeben ist. Wenn die Identität des Wirtsknotens 102 oben in der zweiten Knotenliste 204 angegeben ist, kann die Sperrdatei 142 an den Zentralknoten 108 zurückgegeben werden. Wenn die Identität des Host-Knotens nicht oben in der zweiten Knotenliste 204 angegeben ist, kann der Host-Knoten 102 die letzte Kopie von einem anderen Knoten 104, 106 erhalten. In Block 608 kann die Verarbeitungsressource 112 einen aktualisierten Teil der neuesten Version der Datendateien von einem in der ersten Knotenliste 202 angegebenen nächstgelegenen Knoten erhalten. In Block 610 kann die Verarbeitungsressource 112 die lokale Kopie der Datendateien 136 mit der neuesten Version der Datendateien unter Verwendung des aktualisierten Teils, der von dem nächstgelegenen Knoten erhalten wurde, synchronisieren. In Block 612 kann die Verarbeitungsressource 112 die Identität des Host-Knotens 102 an die erste Knoten-Liste 202 anhängen. In Block 614 kann die Verarbeitungsressource 112 die Sperrdatei 108 an den zentralen Knoten 108 zurückgeben.
-
7 zeigt ein Blockdiagramm 700, das eine Verarbeitungsressource 702 und ein maschinenlesbares Medium 704 darstellt, das mit Beispielanweisungen kodiert ist, um die Synchronisierung von Datendateien 136-140 zu erleichtern, die mit den Arbeitslasten 130-134 verbunden sind, gemäß einem Beispiel. Das maschinenlesbare Medium 704 kann nicht-transitory sein und wird alternativ als nicht-transitory maschinenlesbares Medium 704 bezeichnet. In einigen Beispielen kann auf das maschinenlesbare Medium 704 von der Verarbeitungsressource 702 zugegriffen werden. In einigen Beispielen kann die Verarbeitungsressource 702 ein Beispiel für die Verarbeitungsressource 112 des Host-Knotens 102 darstellen. Ferner kann das maschinenlesbare Medium 704 ein Beispiel für das maschinenlesbare Medium 118 des Host-Knotens 102 darstellen.
-
Das maschinenlesbare Medium 704 kann ein beliebiges elektronisches, magnetisches, optisches oder anderes physikalisches Speichergerät sein, das Daten und/oder ausführbare Anweisungen speichern kann. Daher kann das maschinenlesbare Medium 704 beispielsweise ein RAM, ein EEPROM, ein Speicherlaufwerk, ein Flash-Speicher, eine CD-ROM und dergleichen sein. Wie hier im Detail beschrieben, kann das maschinenlesbare Medium 704 mit ausführbaren Anweisungen 706, 708, 710, 712, 714, 716 und 718 (im Folgenden gemeinsam als Anweisungen 706-718 bezeichnet) zur Durchführung des in 3 beschriebenen Verfahrens 300 kodiert sein. Obwohl nicht dargestellt, kann das maschinenlesbare Medium 704 in einigen Beispielen mit bestimmten zusätzlichen ausführbaren Anweisungen kodiert sein, um das Verfahren 300 von 3 und/oder andere vom Knoten 102 durchgeführte Operationen durchzuführen, ohne den Umfang der vorliegenden Offenbarung einzuschränken.
-
Die Verarbeitungsressource 702 kann ein physisches Gerät sein, z. B. eine oder mehrere CPUs, ein oder mehrere halbleiterbasierte Mikroprozessoren, eine oder mehrere GPUs, ASICs, FPGAs, andere Hardwaregeräte, die in der Lage sind, die im maschinenlesbaren Medium 704 gespeicherten Anweisungen 706-718 abzurufen und auszuführen, oder Kombinationen davon. In einigen Beispielen kann die Verarbeitungsressource 702 die im maschinenlesbaren Medium 704 gespeicherten Anweisungen 706-718 abrufen, dekodieren und ausführen, um die Datendateien der auf einem oder mehreren Knoten 102-106 und dem zentralen Knoten 108 bereitgestellten Arbeitslasten zu synchronisieren. In bestimmten Beispielen kann die Verarbeitungsressource 702 alternativ oder zusätzlich zum Abrufen und Ausführen der Anweisungen 706-718 mindestens einen IC, eine andere Steuerlogik, andere elektronische Schaltungen oder Kombinationen davon enthalten, die eine Reihe elektronischer Komponenten zum Ausführen der Funktionalitäten umfassen, die vom Host-Knoten 102 von 1 ausgeführt werden sollen.
-
Die Anweisungen 706 können, wenn sie von der Verarbeitungsressource 702 ausgeführt werden, die Verarbeitungsressource 702 veranlassen, die Sperrdatei 142 von dem zentralen Knoten 108 zu erwerben, der die zentrale Kopie der Datendateien 144 speichert, die mit der über das Netzwerk 110 verteilten Arbeitslast verbunden sind. Wie bereits beschrieben, enthält die Sperrdatei 142 die erste Knotenliste, die die Identitäten eines ersten Satzes von Knoten mit einer neuesten Version der Datendateien anzeigt, und eine zweite Knotenliste, die die Identitäten eines zweiten Satzes von Knoten anzeigt, die die Datendateien geändert haben. Ferner können die Anweisungen 708, wenn sie von der Verarbeitungsressource 702 ausgeführt werden, die Verarbeitungsressource 702 veranlassen, einen nächstgelegenen Knoten aus der ersten Knotenliste zu identifizieren, wenn eine Identität des prozessorbasierten Systems nicht mit den in der ersten Knotenliste angegebenen Identitäten übereinstimmt. Außerdem können die Anweisungen 710, wenn sie von der Verarbeitungsressource 702 ausgeführt werden, die Verarbeitungsressource 702 veranlassen, einen aktualisierten Teil der neuesten Version der Datendateien von dem nächstgelegenen Knoten zu erhalten. Darüber hinaus können die Anweisungen 712, wenn sie von der Verarbeitungsressource 702 ausgeführt werden, die Verarbeitungsressource 702 veranlassen, eine lokale Kopie der auf dem Knoten 102 gespeicherten Datendateien mit der neuesten Version unter Verwendung des aktualisierten Teils zu synchronisieren. Ferner können die Anweisungen 714, wenn sie von der Verarbeitungsressource 702 ausgeführt werden, die Verarbeitungsressource 702 veranlassen, die lokale Kopie der Datendateien zu ändern. Die Anweisungen 716 können, wenn sie von der Verarbeitungsressource 702 ausgeführt werden, die Verarbeitungsressource 702 veranlassen, die Sperrdatei zu aktualisieren, indem die Identität des Knotens 102 in der ersten Knotenliste und in der zweiten Knotenliste angegeben wird. Die Anweisungen 712 können, wenn sie von der Verarbeitungsressource 702 ausgeführt werden, die Verarbeitungsressource 702 veranlassen, den geänderten Teil der lokalen Kopie der Datendateien an den zentralen Knoten 108 zu übermitteln, um die zentrale Kopie mit der lokalen Kopie der Datendateien zu synchronisieren.
-
Obwohl bestimmte Implementierungen oben gezeigt und beschrieben wurden, können verschiedene Änderungen in Form und Details vorgenommen werden. So können beispielsweise einige Merkmale und/oder Funktionen, die in Bezug auf eine Implementierung und/oder einen Prozess beschrieben wurden, auf andere Implementierungen übertragen werden. Mit anderen Worten: Prozesse, Merkmale, Komponenten und/oder Eigenschaften, die in Bezug auf eine Implementierung beschrieben wurden, können auch in anderen Implementierungen nützlich sein. Darüber hinaus ist zu beachten, dass die hier beschriebenen Systeme und Verfahren verschiedene Kombinationen und/oder Unterkombinationen der Komponenten und/oder Merkmale der verschiedenen beschriebenen Implementierungen umfassen können.
-
In der vorstehenden Beschreibung sind zahlreiche Details aufgeführt, um das Verständnis des hierin offengelegten Gegenstands zu erleichtern. Die Umsetzung kann jedoch auch ohne einige oder alle dieser Details erfolgen. Andere Implementierungen können Modifikationen, Kombinationen und Variationen der oben beschriebenen Details beinhalten. Es ist beabsichtigt, dass die folgenden Ansprüche solche Modifikationen und Variationen abdecken.