DE102021127538A1 - Synchronisierung verteilter datenbestände - Google Patents

Synchronisierung verteilter datenbestände Download PDF

Info

Publication number
DE102021127538A1
DE102021127538A1 DE102021127538.5A DE102021127538A DE102021127538A1 DE 102021127538 A1 DE102021127538 A1 DE 102021127538A1 DE 102021127538 A DE102021127538 A DE 102021127538A DE 102021127538 A1 DE102021127538 A1 DE 102021127538A1
Authority
DE
Germany
Prior art keywords
data files
node
central
copy
local copy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021127538.5A
Other languages
English (en)
Inventor
Upendra GOPU
Sudhakarareddy Mallavarapu
Dharmendra Chaudhary
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102021127538A1 publication Critical patent/DE102021127538A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Die hier beschriebenen Beispiele beziehen sich auf die Synchronisierung verteilter Datendateien. Ein Host-Knoten erwirbt eine Sperrdatei mit einer ersten Knotenliste und einer zweiten Knotenliste von einem zentralen Knoten, der eine zentrale Kopie von Datendateien speichert. Ein nächstgelegener Knoten aus der ersten Knotenliste kann identifiziert werden, wenn die Identität des Host-Knotens nicht in der ersten Knotenliste angegeben ist. 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 des Host-Knotens in der ersten Knotenliste und der zweiten Knotenliste angibt. Der Host-Knoten liefert einen geänderten Teil der lokalen Kopie an den zentralen Knoten, um die zentrale Kopie mit der lokalen Kopie zu synchronisieren.

Description

  • 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.

Claims (20)

  1. Ein Verfahren, das Folgendes umfasst: Erfassen einer Sperrdatei von einem zentralen Knoten, der eine zentrale Kopie von Datendateien speichert, die mit einer Arbeitslast verbunden sind, durch ein prozessorbasiertes System, wobei die Datendateien und die Arbeitslast über ein Netzwerk von Knoten verteilt sind und wobei die Sperrdatei eine erste Knotenliste enthält, die Identitäten eines ersten Satzes von Knoten anzeigt, die eine letzte Version der Datendateien haben, und eine zweite Knotenliste, die Identitäten eines zweiten Satzes von Knoten anzeigt, die die Datendateien modifiziert haben; Identifizierung eines nächstgelegenen Knotens aus der ersten Knotenliste durch das prozessorbasierte System als Reaktion auf eine Identität des prozessorbasierten Systems, die nicht mit den in der ersten Knotenliste angegebenen Identitäten übereinstimmt; Abrufen eines aktualisierten Teils der letzten Version der Datendateien vom nächstgelegenen Knotenpunkt durch das prozessorgestützte System; Synchronisierung einer lokalen Kopie der auf dem prozessorbasierten System gespeicherten Datendateien mit der neuesten Version unter Verwendung des aktualisierten Teils durch das prozessorbasierte System; Änderung der lokalen Kopie der Datendateien durch das prozessorgestützte System; Aktualisieren der Sperrdatei durch das prozessorbasierte System, indem die Identität des prozessorbasierten Systems in der ersten Knotenliste und der zweiten Knotenliste angegeben wird; und Bereitstellen eines modifizierten Teils der lokalen Kopie der Datendateien durch das prozessorbasierte System an den zentralen Knoten, wobei die zentrale Kopie mit der lokalen Kopie der Datendateien unter Verwendung des modifizierten Teils synchronisiert wird.
  2. Verfahren nach Anspruch 1, wobei das Modifizieren der lokalen Kopie der Datendateien durch eine Vielzahl von Threads durchgeführt wird, die mit der Arbeitslast verbunden sind, und wobei das Modifizieren das Hinzufügen, Löschen oder Aktualisieren von Zeilen in der lokalen Kopie der Datendateien umfasst.
  3. Das Verfahren nach Anspruch 2 umfasst ferner: Empfangen einer Benachrichtigung durch das prozessorbasierte System, die den Abschluss einer Vielzahl von Änderungen der lokalen Kopie der Datendateien anzeigt, die von der Vielzahl von Threads durchgeführt wurden; und Bereitstellen, durch das prozessorbasierte System, eines modifizierten Teils, der die Vielzahl von Modifikationen der lokalen Kopie der Datendateien enthält, an den zentralen Knoten, wobei die zentrale Kopie mit der lokalen Kopie der Datendateien unter Verwendung des modifizierten Teils synchronisiert wird.
  4. Verfahren nach Anspruch 3, das ferner Folgendes umfasst: Freigabe der Sperrdatei zurück an den zentralen Knoten nach Synchronisierung der zentralen Kopie mit der lokalen Kopie der Datendateien.
  5. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Abrufen der zentralen Kopie der Datendateien vom zentralen Knoten als Reaktion auf die Bereitstellung einer neuen Instanz der Arbeitslast.
  6. Verfahren nach Anspruch 1, wobei das Aktualisieren der Sperrdatei weiterhin umfasst: Entfernen der Identitäten des ersten Satzes von Knoten in der ersten Knotenliste durch das prozessorgestützte System; Anzeige der Identität des prozessorbasierten Systems in der ersten Knotenliste durch das prozessorbasierte System; und Anhängen der Identität des prozessorbasierten Systems an die zweite Knotenliste durch das prozessorbasierte System.
  7. Verfahren nach Anspruch 1, das ferner das Sperren der Änderung der zentralen Kopie der Datendateien durch die Knoten als Reaktion auf den Erhalt der Sperrdatei vom zentralen Knoten umfasst.
  8. Verfahren nach Anspruch 1, wobei das Identifizieren des nächstgelegenen Knotens das Auswählen des Knotens aus der ersten Knotenliste auf der Grundlage des Standorts, der Bandbreite oder der mit dem Knoten verbundenen Latenzzeit umfasst.
  9. Ein System, das Folgendes umfasst: eine Verarbeitungsressource; ein maschinenlesbares Medium, auf dem Anweisungen gespeichert sind, die, wenn sie von der Verarbeitungsressource ausgeführt werden, die Verarbeitungsressource veranlassen: eine Sperrdatei von einem zentralen Knoten zu erwerben, der eine zentrale Kopie von Datendateien speichert, die mit einer Arbeitslast verbunden sind, wobei die Datendateien und die Arbeitslast über ein Netzwerk von Knoten verteilt sind und wobei die Sperrdatei eine erste Knotenliste, die Identitäten eines ersten Satzes von Knoten mit einer neuesten Version der Datendateien anzeigt, und eine zweite Knotenliste enthält, die Identitäten eines zweiten Satzes von Knoten anzeigt, die die Datendateien modifiziert haben; Identifizierung eines nächstgelegenen Knotens aus der ersten Knotenliste als Reaktion auf eine Identität des Systems, die nicht mit den in der ersten Knotenliste angegebenen Identitäten übereinstimmt; einen aktualisierten Teil der letzten Version der Datendateien vom nächstgelegenen Knotenpunkt erhalten; eine lokale Kopie der auf dem System gespeicherten Datendateien mit der neuesten Version unter Verwendung des aktualisierten Teils zu synchronisieren; die lokale Kopie der Datendateien ändern; Aktualisierung der Sperrdatei durch Angabe der Identität des Systems in der ersten Knotenliste und der zweiten Knotenliste; und Bereitstellen eines modifizierten Teils der lokalen Kopie der Datendateien an den zentralen Knoten, wobei die zentrale Kopie mit der lokalen Kopie der Datendateien unter Verwendung des modifizierten Teils synchronisiert wird.
  10. System nach Anspruch 9, wobei die Arbeitslast eine Vielzahl von Threads umfasst, die die lokale Kopie der Datendateien modifizieren, wobei das Modifizieren der lokalen Kopie der Datendateien das Hinzufügen, Löschen oder Aktualisieren von Zeilen in den Datendateien umfasst.
  11. System nach Anspruch 10, wobei die Verarbeitungsressource eine oder mehrere der Anweisungen ausführt, um: eine Benachrichtigung empfangen, die den Abschluss einer Vielzahl von Änderungen der lokalen Kopie der Datendateien anzeigt, die von der Vielzahl von Threads durchgeführt wurden; und Bereitstellen eines modifizierten Teils, der die Vielzahl von Modifikationen der lokalen Kopie der Datendateien enthält, an den zentralen Knoten, wobei die zentrale Kopie mit der lokalen Kopie der Datendateien unter Verwendung des modifizierten Teils synchronisiert wird.
  12. System nach Anspruch 11, wobei die Verarbeitungsressource einen oder mehrere der Befehle ausführt, um die Sperrdatei nach der Synchronisierung der zentralen Kopie mit der lokalen Kopie der Datendateien wieder an den zentralen Knoten freizugeben.
  13. System nach Anspruch 9, wobei zur Aktualisierung der Sperrdatei die Verarbeitungsressource eine oder mehrere der Anweisungen ausführt, um: die Identitäten der ersten Gruppe von Knoten in der ersten Knotenliste entfernen; die Identität des Systems in der ersten Knotenliste angeben; und die Identität des Systems an den Anfang der zweiten Knotenliste anhängen.
  14. System nach Anspruch 9, wobei zur Identifizierung des nächstgelegenen Knotens die Verarbeitungsressource einen oder mehrere der Befehle ausführt, um den Knoten aus der ersten Knotenliste auf der Grundlage des Standorts, der Bandbreite oder der mit dem Knoten verbundenen Latenz auszuwählen.
  15. Das System nach Anspruch 9, wobei die Arbeitslast eine Anwendung, einen Container, einen Pod, eine virtuelle Maschine oder eine containerisierte Anwendung umfasst.
  16. Ein nicht-transitorisches, maschinenlesbares Medium, das Anweisungen speichert, die von einer Verarbeitungsressource ausgeführt werden können, wobei die Anweisungen Folgendes umfassen: Anweisungen zum Erfassen einer Sperrdatei von einem zentralen Knoten, der eine zentrale Kopie von Datendateien speichert, die mit einer Arbeitslast verbunden sind, wobei die Datendateien und die Arbeitslast über ein Netzwerk von Knoten verteilt sind, und wobei die Sperrdatei eine erste Knotenliste, die Identitäten eines ersten Satzes von Knoten mit einer neuesten Version der Datendateien anzeigt, und eine zweite Knotenliste, die Identitäten eines zweiten Satzes von Knoten anzeigt, die die Datendateien modifiziert haben, enthält; Anweisungen zum Identifizieren eines nächstgelegenen Knotens aus der ersten Knotenliste als Reaktion auf eine Identität eines Systems, die nicht mit den in der ersten Knotenliste angegebenen Identitäten übereinstimmt; Anweisungen, um einen aktualisierten Teil der neuesten Version der Datendateien vom nächstgelegenen Knoten zu erhalten; Anweisungen zum Synchronisieren einer lokalen Kopie der auf dem System gespeicherten Datendateien mit der neuesten Version unter Verwendung des aktualisierten Teils; Anweisungen zur Änderung der lokalen Kopie der Datendateien; Anweisungen zur Aktualisierung der Sperrdatei durch Angabe der Identität des Systems in der ersten Knotenliste und der zweiten Knotenliste; und Anweisungen zur Bereitstellung eines modifizierten Teils der lokalen Kopie der Datendateien an den zentralen Knoten, wobei die zentrale Kopie mit der lokalen Kopie der Datendateien unter Verwendung des modifizierten Teils synchronisiert wird.
  17. Das nicht-übertragbare maschinenlesbare Medium nach Anspruch 16, das außerdem Anweisungen zum: eine Benachrichtigung empfangen, die den Abschluss einer Vielzahl von Änderungen der lokalen Kopie der Datendateien anzeigt, die von einer Vielzahl von mit der Arbeitslast verbundenen Threads durchgeführt wurden; und Bereitstellen eines modifizierten Teils, der die Vielzahl von Modifikationen der lokalen Kopie der Datendateien enthält, an den zentralen Knoten, wobei die zentrale Kopie mit der lokalen Kopie der Datendateien unter Verwendung des modifizierten Teils synchronisiert wird.
  18. Nicht-übertragbares maschinenlesbares Medium nach Anspruch 17, das ferner Anweisungen zur Freigabe der Sperrdatei zurück an den zentralen Knoten nach der Synchronisierung der zentralen Kopie mit der lokalen Kopie der Datendateien umfasst.
  19. Nicht-übertragbares maschinenlesbares Medium nach Anspruch 16, wobei die Anweisungen zum Aktualisieren der Sperrdatei ferner Anweisungen zum: die Identitäten der ersten Gruppe von Knoten in der ersten Knotenliste entfernen; die Identität des Systems in der ersten Knotenliste angeben; und die Identität des Systems an den Anfang der zweiten Knotenliste anhängen.
  20. Nicht-übertragbares maschinenlesbares Medium nach Anspruch 16, das ferner Anweisungen zum Deaktivieren der Änderung der zentralen Kopie der Datendateien durch die Knoten als Reaktion auf den Erwerb der Sperrdatei vom zentralen Knoten umfasst.
DE102021127538.5A 2021-03-22 2021-10-22 Synchronisierung verteilter datenbestände Pending DE102021127538A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN202141012168 2021-03-22
IN202141012168 2021-03-22

Publications (1)

Publication Number Publication Date
DE102021127538A1 true DE102021127538A1 (de) 2022-09-22

Family

ID=83114794

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021127538.5A Pending DE102021127538A1 (de) 2021-03-22 2021-10-22 Synchronisierung verteilter datenbestände

Country Status (3)

Country Link
US (1) US11687496B2 (de)
CN (1) CN115114257A (de)
DE (1) DE102021127538A1 (de)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716182B2 (en) * 2005-05-25 2010-05-11 Dassault Systemes Enovia Corp. Version-controlled cached data store
US20080154905A1 (en) * 2006-12-21 2008-06-26 Nokia Corporation System, Method, Apparatus and Computer Program Product for Providing Content Selection in a Network Environment
US8370424B2 (en) * 2007-06-22 2013-02-05 Aol Inc. Systems and methods for caching and serving dynamic content
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US10452620B2 (en) * 2011-09-30 2019-10-22 International Business Machines Corporation Automatic file version verification within electronic mail
KR102074006B1 (ko) 2012-01-10 2020-02-25 유니콤 시스템스, 인코포레이티드. 클라우드-기반 분산 데이터 시스템
US8856256B1 (en) 2013-03-13 2014-10-07 CoralTree Inc. System and method for file sharing and updating
WO2016085541A1 (en) 2014-11-28 2016-06-02 Nasuni Corporation Versioned file system with global lock
US10929357B2 (en) * 2016-02-29 2021-02-23 Red Hat, Inc. Detecting stale storage layouts without using client locks
US10467198B2 (en) * 2016-09-15 2019-11-05 Oracle International Corporation Network partition tolerance in a high available centralized VCS implementation
US11113312B2 (en) * 2017-06-29 2021-09-07 Microsoft Technology Licensing, Llc Reliable hierarchical storage management with data synchronization

Also Published As

Publication number Publication date
CN115114257A (zh) 2022-09-27
US20220300460A1 (en) 2022-09-22
US11687496B2 (en) 2023-06-27

Similar Documents

Publication Publication Date Title
DE112016001075B4 (de) Verteiltes speichern und abrufen von datensätzen
DE102019111068A1 (de) Datenspeichersystem mit LUN-Archivierung in die Cloud unter Verwendung einer Volume-to-Object(Volumen-zu-Objekt)-Umsetzung
DE102014109518A1 (de) Techniken zur Initialisierung von einem Speichergerät, auf das von der Ferne zugegriffen werden kann
DE102016119298B4 (de) Zeitpunktkopieren mit klonen von ketten
DE112012003496T5 (de) Schnelles Bereitstellen von virtuellen Maschinen auf der Grundlage von mehrdimensionalen Benutzeranforderungsmustern in einer Cloud
DE102013208558A1 (de) Verfahren und System zur Verarbeitung verschachtelter Stream-Events
DE202014010953U1 (de) Gruppierung von Objekten in einem verteilten Datenspeichersystem basierend auf Protokollen und Platzierungsrichtlinien
DE112019000143T5 (de) Versionierungsvalidierung für die datenübertragung zwischen heterogenen datenspeichern
DE112020003929B4 (de) Verwaltung von metadaten von virtuellen speichern
DE202018102031U1 (de) Transparente Aktualisierung eines Systemdienstes oder einer Anwendung
DE102021125630A1 (de) Datensynchronisation in einem datenanalysesystem
DE112017007865T5 (de) Netzgebundener shuffle-datenspeicher
DE102020103521A1 (de) Minimieren der Nutzung von Hardware-Zählern bei getriggerten Operationen für kollektive Kommunikation
DE202021004295U1 (de) Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem
DE202015009316U1 (de) Metadatenmanagement in einem dezentralen Verarbeitungssystem
DE112016003598T5 (de) Gleichzeitige Massenverarbeitung von baumbasierten Datenstrukturen
DE102012221261A1 (de) Verfahren zum Zwischenspeichern und System zum Ausführen des Verfahrens zum Zwischenspeichern zum Betreiben eines mindestens einen Host-Computer aufweisenden Computerserversystems
DE102021127151A1 (de) Verfahren und system für libfabric atomics-basierte lockless cluster-wide shared memory access api in einem verteilten system
DE102021127323A1 (de) Verwaltung der Bereitstellung von Workloads
DE112021003615T5 (de) Schutz vor logischer beschädigung für daten
DE112016004301T5 (de) Vornehmen einer flüchtigen Fehleratomarität von Isolierungstransaktionen in einem nichtflüchtigen Speicher
DE112020003382T5 (de) Umwandeln von Speicherpools mit großem Speicherbereich in Speicherpools mit kleinem Speicherbereich am Speicherort
DE112020003457T5 (de) Umwandeln von speicherpools mit kleinem speicherbereich in speicherpools mit grossem speicherbereich am speicherort
DE102021127538A1 (de) Synchronisierung verteilter datenbestände
DE112011104020T5 (de) Validierung des Zugriffs auf einen gemeinsam genutzen Datensatz bei Lese- und Schreibzugriff mehrerer Anforderer

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TEX., US

R012 Request for examination validly filed