DE69937946T2 - Hashen von objekten mit inkrementalen änderungen - Google Patents

Hashen von objekten mit inkrementalen änderungen Download PDF

Info

Publication number
DE69937946T2
DE69937946T2 DE69937946T DE69937946T DE69937946T2 DE 69937946 T2 DE69937946 T2 DE 69937946T2 DE 69937946 T DE69937946 T DE 69937946T DE 69937946 T DE69937946 T DE 69937946T DE 69937946 T2 DE69937946 T2 DE 69937946T2
Authority
DE
Germany
Prior art keywords
node
nodes
resources
memory area
areas
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.)
Expired - Lifetime
Application number
DE69937946T
Other languages
English (en)
Other versions
DE69937946D1 (de
Inventor
Boris Belmont Klots
Roger J. San Francisco BAMFORD
Jeffrey San Francisco FISCHER
Ravi Menlo Park MIRCHANDANEY
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.)
Oracle International Corp
Original Assignee
Oracle International Corp
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 Oracle International Corp filed Critical Oracle International Corp
Application granted granted Critical
Publication of DE69937946D1 publication Critical patent/DE69937946D1/de
Publication of DE69937946T2 publication Critical patent/DE69937946T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Description

  • Gebiet der Erfindung
  • Diese Erfindung betrifft Computersysteme und insbesondere Techniken zum Unterordnen von Ressourcen innerhalb von Computersystemen.
  • Hintergrund der Erfindung
  • Datenbank-Server verwenden Ressourcen, während sie Transaktionen ausführen. Obwohl Ressourcen zwischen Datenbank-Servern geteilt werden können, kann auf viele Ressourcen zu irgendeiner gegebenen Zeit auf bestimmten Wegen nicht von mehr als einem Prozess zugegriffen werden. Beispielsweise kann auf Ressourcen wie zum Beispiel Datenblöcke eines Speichermediums oder auf einem Speichermedium gespeicherte Tabellen auf einigen Wegen (z. B. lesend) von mehreren Prozessen zusammentreffend zugegriffen werden, aber auf anderen Wegen (z. B. schreibend) zu einer Zeit von nur einem Prozess zugegriffen werden. Folglich wurden Mechanismen entwickelt, die den Zugriff auf Ressourcen steuern.
  • Ein solcher Mechanismus wird als eine Sperre (Lock) bezeichnet. Eine Sperre ist eine Datenstruktur, die angibt, dass einem bestimmten Prozess mit Bezug auf eine Ressource gewisse Rechte eingeräumt wurden. Es gibt viele Typen von Sperren. Einige Typen von Sperren können auf der selben Ressource von mehreren Prozessen geteilt werden, während andere Typen von Sperren verhindern, dass andere Sperren auf der selben Ressource eingerichtet werden.
  • Die für das Einrichten von Sperren auf Ressourcen verantwortliche Einheit wird als Sperren-Manager bezeichnet. In einem Einzelknoten-Datenbank-System besteht ein Sperren- Manager typischerweise aus einem oder mehreren Prozessen auf dem Knoten. In einem Mehrfach-Knoten-System wie beispielsweise einer mehrfach verarbeitenden Maschine oder einem lokalen Datennetz kann ein Sperren-Manager über zahlreiche Knoten verteilte Prozesse enthalten. Ein Sperren-Manager, der Komponenten enthält, die auf zwei oder mehr Knoten residieren, wird als verteilter Sperren-Manager bezeichnet.
  • 1 ist ein Blockdiagramm eines Mehrfach-Knoten-Computersystems 100. Jeder Knoten weist einen darin gespeicherten Datenbank-Server und einen Teil eines verteilten Sperren-Management-Systems 132 auf. Insbesondere weist das dargestellte System drei Knoten 102, 112 und 122 auf, auf denen Datenbank-Server 104, 114 beziehungsweise 124 und Sperren-Manager-Einheiten 106, 116 beziehungsweise 126 residieren. Die Datenbank-Server 104, 114 und 124 haben Zugriff auf die selbe Datenbank 120. Die Datenbank 120 residiert auf einer Platte 118, die mehrere Blöcke mit Daten enthält. Die Platte 118 repräsentiert im Allgemeinen eine oder mehrere anhaltende Speicher-Vorrichtungen, die auf einer beliebigen Anzahl von Maschinen sein können, einschließlich aber nicht beschränkend auf die Maschinen, die die Knoten 102, 112 und 122 enthalten.
  • Ein Kommunikations-Mechanismus gestattet es Prozessen auf den Knoten 102, 112 und 122, miteinander und mit den Platten, die Teile der Datenbank 120 enthalten, zu kommunizieren. Der konkrete Kommunikations-Mechanismus zwischen den Knoten und der Platte 118 wird basierend auf der Natur des Systems 100 variieren. Wenn zum Beispiel die Knoten 102, 112 und 122 Workstations in einem Netzwerk entsprechen, wird der Kommunikations-Mechanismus unterschiedlich dazu sein, als wenn die Knoten 102, 112 und 122 Clustern von Prozessoren und Speicher innerhalb eine mehrfach verarbeitenden Maschine entsprechen.
  • Bevor irgendeiner der Datenbank-Server 104, 114 und 124 auf eine mit den anderen Datenbank-Servern geteilte Ressource zugreifen kann, muss er von dem verteilten Sperren-Management-System 132 die geeignete Sperre auf der Ressource erhalten. Solch eine Ressource kann zum Beispiel ein oder mehrere Blocks der Platte 118 sein, auf der Daten der Datenbank 120 gespeichert sind.
  • Das Sperren-Management-System 132 speichert Datenstrukturen, die die von den Datenbank-Servern 104, 114 und 124 auf den von den Datenbank-Servern geteilten Ressourcen gehaltenen Sperren angeben. Wenn ein Datenbank-Server eine Sperre auf einer Ressource anfordert, während ein anderer Datenbank-Server eine Sperre auf der Ressource hat, muss das verteilte Sperren-Management-System 132 ermitteln, ob die angeforderte Sperre mit der erteilten Sperre konsistent ist. Wenn die angeforderte Sperre mit der erteilten Sperre nicht konsistent ist, dann muss der Anforderer warten, bis der die erteilte Sperre haltende Datenbank-Server die erteilte Sperre freigibt.
  • Gemäß einem Verfahren behält das Sperren-Management-System 132 für jede von dem Sperren-Management-System 132 verwaltete Ressource ein Master-Ressourcen-Objekt und enthält für jeden Knoten, der einen Datenbank-Server enthält, eine Sperren-Manager-Einheit. Das Master-Ressourcen-Objekt für eine bestimmte Ressource speichert, neben anderen Dingen, eine Angabe aller Sperren, die für die bestimmte Ressource erteilt oder angefordert wurden. Das Master-Ressourcen-Objekt für jede Ressource residiert innerhalb lediglich einer der Sperren-Manager-Einheiten 106, 116 und 126.
  • Der Knoten, auf dem eine Knoten-Manager-Einheit residiert, wird als der „Master-Knoten" (oder einfach „Master") der Ressourcen bezeichnet, deren Master-Ressourcen-Objekte von dieser Speicher-Manager-Einheit verwaltet werden. Wenn das Master-Ressourcen-Objekt für eine Ressource R1 von der Speicher-Manager-Einheit 106 verwaltet wird, dann ist der Knoten 102 somit der Master der Ressource R1.
  • In typischen Systemen wird eine Hash-Funktion angewendet, um den bestimmten Knoten auszuwählen, der als der Master-Knoten für eine gegebene Ressource agiert. Insbesondere wird eine Hash-Funktion auf den Ressourcen-Namen zum Erzeugen eines Namens angewendet. Alle der Ressourcen-Namen, die mittels der Hash-Funktion dem selben Wert zugeordnet werden, gehören zu dem selben „Speicherbereich" (bucket). Jeder Knoten wird dann damit beauftragt, der Master für alle Ressourcen zu sein, deren Namen zu einem gegebenen Speicherbereich gehören.
  • Zum Beispiel enthält System 100 drei Knoten und kann folglich eine 3-Speicherbereich-Hash-Funktion anwenden, die die Werte 0, 1 und 2 erzeugt. Jeder Speicherbereich ist einem der drei Knoten zugeordnet. Der Knoten, der als der Master für eine bestimmte Ressource in dem System 100 dient, wird ermittelt, indem die Hash-Funktion auf den Namen der Ressource angewendet wird. Alle Ressourcen, die Namen haben, die basierend auf der Hash-Funktion dem mit dem Wert 0 verbundenen Speicherbereich zugeordnet werden, werden auf dem Knoten 102 kontrolliert. Alle Ressourcen, die Namen haben, die basierend auf der Hash-Funktion dem mit dem Wert 1 verbundenen Speicherbereich zugeordnet werden, werden auf dem Knoten 112 kontrolliert. Alle Ressourcen, die Namen haben, die basierend auf der Hash-Funktion dem mit dem Wert 2 verbundenen Speicherbereich zugeordnet werden, werden auf dem Knoten 122 kontrolliert.
  • Wenn ein Prozess auf einem Knoten wünscht, auf eine Ressource zuzugreifen, wird auf den Namen der Ressource eine Hash-Funktion angewendet, um den Master der Ressource zu ermitteln, und eine Sperren-Anfrage wird an den Master-Knoten für diese Ressource gesandt. Der Sperren-Manager auf dem Master-Knoten für die Ressource steuert die Zuweisung und Freigabe der Sperren für die zugeordnete Ressource.
  • Wenn der Master-Knoten einer Ressource eine Sperre auf der Ressource für einen auf einem anderen Knoten laufenden Prozess erteilt, behält der andere Knoten Information über die Sperre, die sein Prozess auf der Ressource hält. Die Sperren-Information, die von Nicht-Master-Knoten, die an einer Ressource interessiert sind (d. h., eine Sperre an der Ressource halten), behalten wird, kann während Wiederherstellung in dem Fall, dass der Master-Knoten versagt, verwendet werden. Die von einem Knoten, der nicht Master einer Ressource ist, verwendete Daten-Struktur zum Verfolgen der Sperren auf der Ressource, die von lokalen Prozessen gehalten werden, wird als ein Schatten-Ressourcen-Objekt bezeichnet. Für jedes Master-Ressourcen-Objekt können bis zu N-1 Schatten-Ressourcen-Objekte existieren (wobei N gleich der Anzahl an Knoten in dem System ist), da es für Prozesse auf allen Nicht-Master-Knoten möglich ist, gleichzeitig nicht-exklusive Sperren auf der selben Ressource zu halten.
  • Verändern des Masters einer Sperren-Ressource von einem Knoten zu einem anderen wird als „Remastern" (neu Unterordnen) der Sperren-Ressource bezeichnet. Der Prozess des Remastern einer Ressource betrifft typischerweise Rekonstruieren eines Master-Ressourcen-Objekts für die Ressource auf einem neuen Master. Während eine Ressource neu untergeordnet wird, ist die Ressource im Allgemeinen nicht verfügbar.
  • Zu irgendeinem Zeitpunkt wird die Verantwortung zum Unterordnen von Ressourcen zwischen einem bestimmten Satz an Knoten verteilt. Wenn sich dieser Satz an Knoten verändert, sagt man, dass sich eine „Epochen-Änderung" ereignet.
  • Eine Vielzahl an Ereignissen kann das Durchführen von Remaster-Vorgängen wünschenswert oder notwendig machen. Wenn zum Beispiel Knoten versagen oder heruntergefahren werden, dann muss die Kontrolle von Ressourcen, die gegenwärtig von diesen Knoten kontrolliert werden, auf andere Knoten verschoben werden. Auf ähnliche Weise kann es, wenn neue Knoten zu dem System hinzugefügt werden, wünschenswert sein, die Kontrolle über einige der Ressourcen auf die neu hinzugefügten Knoten zu verschieben, wodurch die mit dem Ressourcen-Management unter all den Knoten verbundene Last gleichmäßiger verteilt wird.
  • Wenn Zuordnen von Ressourcen-Namen auf Basis einer Hash-Funktion verwendet wird, um Ressourcen zu Knoten zuzuordnen, hat ein Remastern der Ressourcen in Erwiderung auf eine Epochen-Änderung typischerweise eine Änderung der Hash-Funktion und dann ein neues Verteilen der Kontroll-Verantwortlichkeiten basierend auf der Ressourcen-zu-Knoten-Abbildung erzeugt durch die neue Hash-Funktion zur Folge.
  • Wenn das System aus N Knoten besteht, wird insbesondere eine N-Speicherbereichs-Hash-Funktion (eine Hash-Funktion, die N Werte produziert) verwendet, um die Master-Knoten-Zuordnung durchzuführen. Ebenso wie sich N verändert (auf Grund von Hinzufügung, Entfernung oder Versagen von Knoten), muss dies auch die Hash-Funktion. Nachdem eine neue Hash-Funktion für die Ressourcen-zu-Knoten-Abbildung ausgewählt wurde, müssen die Master-Ressourcen-Objekte auf ihre neuen Master verschoben werden. Der neue Master für eine beliebige gegebene Ressource wird ermittelt, indem die neue Hash-Funktion auf den Namen der Ressource angewendet wird.
  • Leider kann das Remastern, das in Erwiderung auf das Annehmen einer neuen Hash-Funktion auftritt, ein Remastern jeder Ressource in dem System zur Folge haben. Folglich kann sich das gesamte System als effektiv nicht verfügbar erweisen, bis das Remastern beendet ist. Dies trifft zu, selbst wenn die Änderung in der System-Konfiguration relativ klein ist. Zum Beispiel wenn ein 51. Knoten zu einem 50-Knoten-System hinzugefügt wird, ist es möglich, dass alle Ressourcen in dem System mittels der neuen Hash-Funktion, die zum Last-Ausgleichen zwischen den 51 Knoten gewählt wird, neuen Mastern zugeordnet werden. Ein ähnlich drastischer Remaster-Vorgang kann sich ergeben, wenn ein Knoten von 50 Knoten nicht verfügbar ist.
  • Basierend auf dem Vorangegangenen ist es deutlich wünschenswert, eine Remaster-Technik bereitzustellen, die den mit einer Epochen-Änderung in einem Mehrfach-Knoten-System verbundenen Remaster-Overhead reduziert. Es ist außerdem wünschenswert, eine Remaster-Technik bereitzustellen, die ein Aufrechthalten einer relativ ausgeglichenen Last-Verteilung nach Epochen-Änderungen erlaubt, sowohl wenn neue Knoten zu dem System hinzugefügt werden als auch wenn Knoten von dem System entfernt werden. Es ist auch wünschenswert, eine Remaster-Technik bereitzustellen, die nicht das gesamte System für die Dauer des Remaster-Vorgangs effektiv unverfügbar macht.
  • Der Stand der Technik mag folgende Referenzen enthaltend betrachtet werden:
    US 5 612 865 erteilt für Dasgupta präsentiert ein Verfahren zum neuen Verteilen der Kontrolle von System-Ressourcen unter den Verarbeitungs-Knoten innerhalb des eine Gruppe bildenden Computer-Systems in Folge einer Änderung der System-Konfiguration, wie beispielsweise das Versagen eines Verarbeitungs-Knotens oder die Rückkehr eines versagten Verarbeitungs-Knotens in den Betrieb. Das präsentierte Verfahren weist die Schritte des Beibehaltens eines Satzes an Hash-Speicherbereichen innerhalb jedes Verarbeitungs-Knotens, des Zuordnens einer jeden der Ressourcen zu einem der Hash-Speicherbereiche und des Zuordnens eines Hash-Vektors, ermittelt durch Verwendung eines rekursiven N-Wege-Algorithmus, zu einem jeden der Hash-Speicherbereiche auf, wobei ein jeder der Hash-Vektoren den Verarbeitungs-Knoten innerhalb des eine Gruppe bildenden Computer-Systems in einer vorbestimmten Reihenfolge identifiziert, die für den einen der Hash-Speicherbereiche einzigartig ist.
  • „Mehrrechner-Datenbanksysteme" von Erhard Rahm, Addison Wesley, Bonn, Deutschland, 1994, präsentiert die Grundlagen für verteilte und parallele Datenbank-Verarbeitung. Insbesondere werden zahlreiche Sperren-Verfahren präsentiert, z. B. ein Primärkopie-Sperren-Verfahren oder ein Token-ring-Sperren-Protokoll.
  • Zusammenfassung der Erfindung
  • Ein Verfahren und System werden bereitgestellt zum Rekonfigurieren eines Mehrfach-Knoten-Systems nach einer Epochen-Änderung in einer Weise, die den typischerweise während der Rekonfiguration auftretenden Overhead und System-Unverfügbarkeit reduziert. Gemäß einem Aspekt der Erfindung wird eine Ressourcen-zu-Master-Abbildung unter Verwendung der Kombination einer Ressourcen-zu-Speicherbereich-Hash-Funktion und einer Speicherbereich-zu-Knoten-Hash-Funktion etabliert.
  • Gemäß einem Aspekt der Erfindung wird die Ressourcen-zu-Speicherbereich-Hash-Funktion in Erwiderung auf eine Epochen-Änderung nicht geändert, während sich die Speicherbereich-zu-Knoten-Hash-Funktion in Erwiderung auf Epochen-Änderungen verändert. Folglich ist die Ressourcen-zu-Speicherbereich-Hash-Funktion „statisch", während die Speicherbereich-zu-Knoten-Hash-Funktion „dynamisch" ist.
  • Vorzugsweise wird die dynamische Speicherbereich-zu-Knoten-Hash-Funktion nach einer Epochen-Änderung in einer Weise eingestellt, dass sich die Last unter der neuen Anzahl an Knoten in dem System ausgleicht. Außerdem werden die Änderungen an den Speicherbereich-zu-Knoten-Zuordnungen auf einem Weg durchgeführt, der die Anzahl an Ressourcen, die neu untergeordnet werden müssen, minimiert.
  • Gemäß einem anderen Aspekt der Erfindung werden nur denjenigen Ressourcen, die ihre Master während einer Epochen-Änderung verlieren, während der anfänglichen Rekonfiguration neue Master zugeordnet. Last-Ausgleichung wird dann graduell erreicht, indem Ressourcen migriert werden, nachdem das System verfügbar gemacht wurde. Die alten Master von Ressourcen leiten Zugriffs-Anfragen an neue Master von Ressourcen weiter, sobald sie die Master-Ressourcen-Objekte für die angefragten Ressourcen transferiert haben. Zusätzlich werden Techniken für das Migrieren von Ressourcen von einem Knoten in Erwartung eines geplanten Abschaltens des Knotens offenbart.
  • Kurzbeschreibung der Zeichnungen
  • Diese Erfindung wird in den Figuren der beigefügten Zeichnungen zum Zwecke des Beispiels und nicht zum Zwecke der Beschränkung dargestellt, und in diesen bezeichnen gleiche Bezugszeichen ähnliche Elemente, und in diesen ist:
  • 1 ein Blockdiagramm eines Mehrfach-Knoten-Systems mit einem verteilten Sperren-Manager;
  • 2 ein Blockdiagramm eines Computer-Systems, auf dem ein Ausführungsbeispiel der Erfindung implementiert sein kann;
  • 3 ein Blockdiagramm, welches ein System darstellt, das ein Ausführungsbeispiel der Erfindung anwendet, um zu ermitteln, wo Ressourcen in einem Mehrfach-Knoten-System unterzuordnen sind;
  • 4 ein Blockdiagramm des in 3 dargestellten Systems nach einer Epochen-Änderung; und
  • 5 ein Flussdiagramm, welches Schritte zu Rekonfigurieren eines Systems nach einer Epochen-Änderung gemäß einem Ausführungsbeispiel der Erfindung darstellt.
  • Detaillierte Beschreibung des bevorzugten Ausführungsbeispiels
  • Ein Verfahren und eine Vorrichtung zum Managen von Ressourcen in einem Mehrfach-Knoten-System werden beschrieben. In der folgenden Beschreibung werden zum Zwecke der Erklärung zahlreiche besonderen Details vorgestellt, um ein gründliches Verständnis dieser Erfindung zu ermöglichen. Es ist jedoch für den Fachmann offensichtlich, dass diese Erfindung ohne diese besonderen Details ausgeführt werden kann. Bei anderen Beispielen werden wohlbekannte Strukturen und Vorrichtungen in Blockdiagramm-Form dargestellt, um unnötiges Verbergen dieser Erfindung zu vermeiden.
  • Hardware-Überblick
  • 2 ist ein Blockdiagramm, das ein Computer-System 200 darstellt, auf dem ein Ausführungsbeispiel der Erfindung implementiert sein kann. Das Computer-System 200 weist einen Bus 202 oder einen anderen Kommunikations-Mechanismus zum Kommunizieren von Information, und einen mit dem Bus 202 zum Verarbeiten von Information gekoppelten Prozessor 204 auf. Das Computer-System 200 weist auch einen mit dem Bus 202 gekoppelten Hauptspeicher 206, wie beispielsweise einen Direktzugriffsspeicher (random access memory = RAM) oder eine andere dynamische Speicher-Vorrichtung, zum Speichern von Information und von dem Prozessor 204 auszuführenden Befehlen auf. Der Hauptspeicher 206 kann auch zum Speichern von zeitlichen Variablen oder anderer Zwischen-Information während der Ausführung der von dem Prozessor 204 auszuführenden Befehle verwendet werden. Das Computer-System 200 weist außerdem gekoppelt mit dem Bus 202 einen Nurlesespeicher (read only memory = ROM) 208 oder eine andere statische Speicher-Vorrichtung zum Speichern von statischer Information und Befehlen für den Prozessor 204 auf. Eine Speicher-Vorrichtung 210, wie beispielsweise eine magnetische Platte oder eine optische Platte, wird zum Speichern von Information und Befehlen bereitgestellt und mit dem Bus 202 gekoppelt.
  • Das Computer-System 200 kann über den Bus 202 an eine Anzeige 212, wie beispielsweise eine Kathodenstrahlröhre (cathode ray tube = CRT), zum Anzeigen von Information für einen Computer- Nutzer gekoppelt sein. Eine Eingabe-Vorrichtung 214, aufweisend alphanumerische und andere Tasten, ist zum Kommunizieren von Information und zum Auswählen von Befehlen für den Prozessor 204 mit dem Bus 202 gekoppelt. Ein anderer Typ von Nutzer-Eingabe-Vorrichtung ist eine Cursor-Steuerung 216, wie beispielsweise eine Maus, ein Trackball oder Cursor-Richtungs-Tasten, zum Kommunizieren von Richtungs-Information und zum Auswählen von Befehlen für den Prozessor 204 und zum Steuern der Cursor-Bewegung auf der Anzeige 212. Diese Eingabe-Vorrichtung hat typischerweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z. B. x) und einer zweiten Achse (z. B. y), was es der Vorrichtung erlaubt, Positionen in einer Ebene zu spezifizieren.
  • Die Erfindung betrifft das Verwenden des Computer-Systems 200 zum Managen von Ressourcen in einem Mehrfach-Knoten-System. Gemäß einem Ausführungsbeispiel der Erfindung, wird mittels des Computer-Systems 200 in Erwiderung darauf, dass der Prozessor 204 eine oder mehrere Sequenzen von einem oder mehreren in dem Hauptspeicher 206 enthaltenen Befehlen ausführt, Ressourcen-Management durchgeführt. Solche Befehle können von einem anderen computer-lesbaren Medium, wie beispielsweise Speicher-Vorrichtung 210, in den Hauptspeicher 206 eingelesen werden. Das Ausführen der in dem Hauptspeicher 206 enthaltenen Sequenzen von Befehlen veranlasst den Prozessor 204 dazu, die hierin beschriebenen Prozess-Schritte durchzuführen. In alternativen Ausführungsbeispielen kann eine hart-verdrahtete Schaltung an Stelle von oder in Kombination mit Software-Befehlen verwendet werden, um die Erfindung zu implementieren. Somit sind die Ausführungsbeispiele der Erfindung nicht auf eine beliebige bestimmte Kombination von Hardware-Schaltung und Software beschränkt.
  • Der hierin verwendete Ausdruck „computer-lesbares Medium" betrifft jegliches Medium, das am Bereitstellen von Befehlen für den Prozessor 204 zum Ausführen beteiligt ist. Solch ein Medium kann viele Formen annehmen, einschließlich aber nicht beschränkend auf nicht-flüchtige Medien, flüchtige Medien und Übertragungs-Medien. Nicht-flüchtige Medien weisen zum Beispiel optische oder magnetische Platten, wie beispielsweise die Speicher-Vorrichtung 210, auf. Flüchtige Medien weisen dynamischen Speicher, wie beispielsweise den Hauptspeicher 206, auf. Übertragungs-Medien weisen Koaxialkabel, Kupferdraht und Faseroptiken auf, einschließlich der Drähte, die der Bus 202 aufweist. Übertragungs-Medien können auch die Form von akustischen oder Licht-Wellen annehmen, wie beispielsweise diejenigen, die während Radio-Wellen- und Infrarot-Daten-Kommunikationen erzeugt werden.
  • Allgemeine Formen an computer-lesbaren Medien weisen zum Beispiel eine Diskette, eine flexible Platte, eine Festplatte, ein magnetisches Band oder irgendein anderes magnetisches Medium, eine CD-ROM, irgendein anderes optisches Medium, Lochkarten, Papierband, irgendein anderes physikalisches Medium mit Mustern an Löchern, ein RAM, ein PROM, ein EPROM, ein Flash-EPROM, irgendeinen anderen Speicher-Chip oder -Kassette, eine wie nachfolgend beschriebene Träger-Welle oder irgendein anderes Medium, von dem ein Computer lesen kann, auf.
  • Zahlreiche Formen an computer-lesbaren Medien können in dem Tragen einer oder mehrerer Sequenzen eines oder mehrerer Befehle des Prozessors 204 zum Ausführen verwickelt sein. Zum Beispiel können die Befehle anfänglich auf einer magnetischen Platte eines entfernten Computers getragen werden. Der entfernte Computer kann die Befehle in seinen dynamischen Speicher laden und die Befehle über eine Telefon-Leitung unter Verwendung eines Modems senden. Ein Modem am Ort des Computer-Systems 200 kann die Daten auf der Telefon-Leitung empfangen und einen Infrarot-Transmitter verwenden, um die Daten in ein Infrarot-Signal zu konvertieren. Ein Infrarot-Detektor kann die in dem Infrarot-Signal getragenen Daten empfangen und eine geeignete Schaltung kann die Daten in den Bus 202 einspeisen. Der Bus 202 trägt die Daten zu dem Hauptspeicher 206, von wo der Prozessor 204 die Befehle erhält und ausführt. Die von dem Hauptspeicher 206 empfangenen Befehle können optional auf der Speicher-Vorrichtung 210 gespeichert werden, entweder vor oder nach Ausführung durch den Prozessor 204.
  • Das Computer-System 200 weist auch eine mit dem Bus 202 gekoppelte Kommunikations-Schnittstelle 218 auf. Die Kommunikations-Schnittstelle 218 stellt eine mit einer Netzwerk-Verknüpfung 220, die an ein lokales Netzwerk 222 angeschlossen ist, gekoppelte Zwei-Wege-Daten-Kommunikation bereit. Zum Beispiel kann die Kommunikations-Schnittstelle 218 eine Dienste-integrierendes-digitales-Netzwerk (ISDN) -Karte oder ein Modem sein, um eine Daten-Kommunikations-Verbindung mit einem entsprechenden Typ an Telefon-Leitung bereitzustellen. Als ein anderes Beispiel kann die Kommunikations-Schnittstelle 218 eine lokales-Datennetz (LAN) -Karte sein, um eine Daten-Kommunikations-Verbindung zu einem kompatiblen LAN bereitzustellen. Drahtlose Verknüpfungen können ebenso implementiert sein. In jeglicher solcher Implementierung sendet und empfängt die Kommunikations-Schnittstelle 218 elektrische, elektromagnetische oder optische Signale, die zahlreiche Typen an Information repräsentierende digitale Daten-Ströme tragen.
  • Die Netzwerk-Verknüpfung 220 stellt typischerweise Daten-Kommunikation durch ein oder mehrere Netzwerke hindurch zu anderen Daten-Vorrichtungen bereit. Zum Beispiel kann die Netzwerk-Verknüpfung 220 eine Verbindung durch das lokale Netzwerk 222 zu einem Host-Computer 224 oder zu einer von einem Internet-Service-Provider (ISP) 226 betriebenen Daten-Maschine bereitstellen. Der ISP 226 seinerseits stellt Daten-Kommunikations-Dienste durch das weltweite Paket-Daten-Kommunikations-Netzwerk, nun üblicherweise als das „Internet" 228 bezeichnet, hindurch bereit. Das lokale Netzwerk 222 und das Internet 228 verwenden beide elektrische, elektromagnetische oder optische Signale, die digitale Daten-Ströme tragen. Die Signale durch die zahlreichen Netzwerke hindurch und die Signale auf der Netzwerk-Verknüpfung 220 und durch die Kommunikations-Schnittstelle 218 hindurch, welche die digitalen Daten zu und von dem Computer-System 200 tragen, sind beispielhafte Formen für Trägerwellen, die Information transportieren.
  • Das Computer-System 200 kann durch das/die Netzwerk(e), die Netzwerk-Verknüpfung 220 und die Kommunikations-Schnittstelle 218 hindurch Nachrichten versenden und Daten, einschließlich Programm-Code, empfangen. Bei dem Internet-Beispiel könnte ein Server 230 einen Anfrage-Code für ein Anwendungs-Programm durch das Internet 228, den ISP 226, das lokale Netzwerk 222 und die Kommunikations-Schnittstelle 218 hindurch übertragen.
  • Der empfangene Code kann von dem Prozessor 204, so wie er empfangen wurde, ausgeführt werden und/oder in der Speicher-Vorrichtung 210 oder einem anderen nicht-flüchtigen Speicher für spätere Ausführung gespeichert werden. Auf diese Weise kann das Computer-System 200 Anwendungs-Code in der Form einer Trägerwelle erhalten.
  • Funktionaler Überblick
  • Hierin werden Techniken zum Einrichten einer Ressourcen-zu-Master-Abbildung für eine Anzahl an L Ressourcen in einem N-Knoten-System unter Verwendung einer M-Speicherbereichs-Hash-Funktion beschrieben, wobei M größer als N aber kleiner als L ist. In der Praxis kann L drei bis vier Größenordnungen größer als M sein, während M ein bis zwei Größenordnungen größer als N ist. Zum Beispiel kann eine 1000-Speicherbereichs-Hash-Funktion verwendet werden, um eine Ressourcen-zu-Speicherbereichs-Abbildung für eine Million Ressourcen in einem 6-Knoten-System einzurichten. Da die Anzahl an Speicherbereichen die Anzahl an Knoten übersteigt, werden jedem Knoten unter Verwendung einer zweiten Speicherbereich-zu-Knoten-Hash-Funktion ein oder mehrere Speicherbereiche zugeordnet.
  • Gemäß einem Aspekt der Erfindung wird die zum Abbilden von Ressourcen auf Hash-Speicherbereiche verwendete Hash-Funktion in Erwiderung auf eine Epochen-Änderung nicht geändert. Im Gegensatz zu der Name-zu-Speicherbereich-Hash-Funktion verändert sich die Speicherbereich-zu-Knoten-Hash-Funktion in Erwiderung auf Epochen-Änderungen. Folglich ist die Ressourcen-zu-Speicherbereich-Hash-Funktion „statisch", während die Speicherbereich-zu-Knoten-Hash-Funktion „dynamisch" ist.
  • Vorzugsweise wird die dynamische Speicherbereich-zu-Knoten-Hash-Funktion nach einer Epochen-Änderung in einer Weise angepasst, dass die Last über die neue Anzahl an Knoten in dem System hinweg ausgeglichen wird. Vorzugsweise werden die Änderungen an den Speicherbereich-zu-Knoten-Zuordnungen auf eine Weise durchgeführt, dass die Anzahl an Ressourcen, die neu untergeordnet werden müssen, minimiert wird.
  • Gemäß einem Ausführungsbeispiel wird das Zuordnen mittels der Speicherbereich-zu-Knoten-Hash-Funktion unter Verwendung von Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information durchgeführt, die beibehalten wird, um anzuzeigen, welche Speicherbereichs-Gebiete welchen Knoten entsprechen. In Erwiderung auf Epochen-Änderungen wird die Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information basierend auf einem Satz von Regeln zum neuen Abbilden überarbeitet. Die Regeln zum neuen Abbilden versuchen sowohl die Last gleichmäßig zu verteilen, als auch die Anzahl an Ressourcen, die neu untergeordnet werden müssen, zu minimieren.
  • Da die Anzahl an Speicherbereichen kleiner als die Anzahl an Ressourcen ist und da die Anzahl an Speicherbereichs-Gebieten kleiner als die Anzahl an Speicherbereichen ist, wird die Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information typischerweise signifikant kleiner als die Menge an Information sein, die benötigt würde, wenn Ressourcen auf einer individuellen Basis auf Knoten abgebildet wären.
  • Beispielhaftes System
  • Bezug nehmend auf 3 ist dies ein Blockdiagramm, das ein Mehrfach-Knoten-System darstellt, das Speicherbereichs-Gebiete gemäß einem Ausführungsbeispiel der Erfindung auf Knoten abbildet. Das System verwendet eine Hash-Funktion 302, um die Ressourcen-Namen 300 auf 1000 Hash-Speicherbereiche 304 abzubilden. Das System behält die Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information 318 bei, um anzugeben, welche Hash-Speicherbereiche welchen Knoten entsprechen. Diese Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information 318 betreibt eine zweite Hash-Funktion, welche eine relativ große Anzahl an Speicherbereichen auf eine kleinere Anzahl an Knoten abbildet. Wenn ein Speicherbereich auf einen Knoten abgebildet wird, werden Ressourcen, die Ressourcen-Namen haben, die mittels Hash-Funktion auf diesen Speicherbereich abgebildet werden, an diesem Knoten kontrolliert.
  • In dem in 3 dargestellten Ausführungsbeispiel gibt es zwei Knoten 306 und 308. Speicherbereichs-Gebiet 1-500 wird auf den Knoten 306 abgebildet und Speicherbereichs-Gebiet 501-1000 wird auf den Knoten 308 abgebildet. Folglich ist der Knoten 306 der Master aller Ressourcen, deren Namen den Speicherbereichen 1-500 mittels Hash-Funktion zugeordnet sind, und der Knoten 308 ist der Master aller Ressourcen, deren Namen den Speicherbereichen 501-1000 mittels Hash-Funktion zugeordnet sind.
  • 4 ist ein Blockdiagramm, das das in 3 gezeigte System darstellt, nachdem eine Epochen-Änderung aufgetreten ist. In diesem Beispiel resultierte die Epochen-Änderung daraus, dass ein neuer Knoten 402 in das System eingeführt wurde, wodurch die Anzahl der Knoten auf drei erhöht wurde. In Erwiderung auf die Epochen-Änderung wurde keine Änderung an der Ressourcen-zu-Speicherbereich-Hash-Funktion 302 vorgenommen. Folglich bleibt die Anzahl an Hash-Speicherbereichen gleich und alle Speicherbereichs-Namen werden weiterhin mittels Hash-Funktion auf die gleichen Speicherbereiche abgebildet.
  • Um jedoch die Verantwortung zum Unterordnen von Ressourcen unter den drei Knoten gleichmäßiger zu verteilen werden an der Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information 318 Überarbeitungen vorgenommen. Insbesondere wird das auf den Knoten 306 abgebildete Speicherbereichs-Gebiet von 1-500 auf 1-333 geändert. In ähnlicher Weise wird das auf den Knoten 308 abgebildete Speicherbereichs-Gebiet von 501-1000 auf 501-833 geändert. Die verbleibenden Speicherbereichs-Gebiete (334-500 und 834-1000) werden dann auf den neuen Knoten 402 abgebildet.
  • Alle Ressourcen, deren Namen mittels Hash-Funktion auf diejenigen Speicherbereiche abgebildet werden, die auf den neuen Knoten 402 abgebildet werden, müssen an dem neuen Knoten neu untergeordnet werden. Im Gegensatz zu früheren Remaster-Techniken bleiben jedoch die Ressourcen, die nicht auf den neu eingeführten Knoten abgebildet werden, im Allgemeinen bei ihren gegenwärtigen Mastern untergeordnet. In diesem Beispiel bleiben alle Ressourcen, die mittels Hash-Funktion den Speicherbereichen 1-333 zugeordnet sind, bei dem Knoten 306 untergeordnet und alle Ressourcen, die mittels Hash-Funktion den Speicherbereichen 501-833 zugeordnet sind, bei dem Knoten 308 untergeordnet. Folglich wird für diese Ressourcen keinerlei mit dem Remastern verknüpfter Aufwand verursacht.
  • Speicherbereichs-Gebiet-zu-Knoten-Abbildungs-Anpassungen
  • Wie oben dargestellt, wird das Speicherbereichs-Gebiet-zu-Knoten-Abbilden in Erwiderung auf Epochen-Änderungen in einer Weise angepasst, die versucht, sowohl (1) die Kontroll-Belastung unter dem neuen Satz an Knoten gleichmäßig zu verteilen, als auch (2) die Anzahl an Ressourcen, die neu untergeordnet werden, zu reduzieren. Zahlreiche Abbildungs-Anpassungs-Techniken können zum Erreichen dieser Ziele angewendet werden. In der folgenden Diskussion sollen bestimmte Techniken im Detail erläutert werden. Diese Erfindung ist jedoch nicht auf irgendeine bestimmte Abbildungs-Anpassungs-Technik beschränkt.
  • Gemäß einem Ausführungsbeispiel der Erfindung ist die von dem System verwendete Abbildungs-Anpassungs-Technik deterministisch. Somit werden die Abbildungs-Anpassungs-Regeln unter der Voraussetzung irgendeiner bestimmten anfänglichen Speicherbereich-zu-Knoten-Abbildung und irgendeiner bestimmten System-Konfigurations-Änderung eine einzelne überarbeitete Speicherbereich-zu-Knoten-Abbildung erzeugen. Unter Verwendung eines deterministischen Satzes an Abbildungs-Anpassungs-Regeln kann jeder Knoten in dem System die Verantwortung für seine Rolle bei den Remaster-Vorgängen ohne irgendeine unnötige Koordinations-Mitteilungs-Übermittlung mit anderen Knoten übernehmen.
  • Zum Zwecke der Erklärung soll in den folgenden Beschreibungen angenommen werden, dass es für alle Knoten, die in einem System existieren, wünschenswert ist, dass diese gleichmäßig am Unterordnen von Ressourcen teilnehmen. Die Speicherbereichs-Zuordnungs-Techniken können jedoch in Übereinstimmung angepasst werden, um für Systeme Platz zu haben, in welchen weniger als alle Knoten teilnehmen und/oder wo Knoten bei unterschiedlichen Pegeln (z. B. einem System, in dem es für einen Knoten wünschenswert ist, die Hälfte der Anzahl an Ressourcen, die an einem anderen Knoten kontrolliert werden, zu kontrollieren) teilnehmen.
  • Der Gleich-Speicherbereich-Ansatz
  • Gemäß dem Gleich-Speicherbereich-Ansatz wird jedem Knoten in dem System eine Nachricht gesendet, die die Anzahl an Knoten angibt, die in dem System nach einer Epochen-Änderung gehören. Jeder Knoten kennt die Gesamtanzahl an von der Hash-Funktion erzeugten Speicherbereichen, und ist daher fähig zu berechnen, wie viele Speicherbereiche jeder Knoten haben muss, damit die Speicherbereiche gleichmäßig unter den existierenden Knoten verteilt sind (der „Ziel-Speicherbereich-Zählwert").
  • Die Knoten, die nach einer Epochen-Änderung in dem System existieren, fallen in eine von zwei Kategorien: Knoten, deren gegenwärtig zugeordneten Gebiete mehr als die Ziel-Speicherbereich-Zählwerts-Anzahl abdecken, („Überschuss-Knoten") und Knoten, deren gegenwärtig zugeordneten Gebiete weniger als die Ziel-Speicherbereich-Zählwerts-Anzahl abdecken, („Defizit-Knoten"). Gemäß dem Gleich-Speicherbereich-Ansatz reduzieren die Überschuss-Knoten ihre Gebiete, bis ihre Gebiete lediglich den Ziel-Speicherbereich-Zählwert abdecken. Die Defizit-Knoten andererseits vergrößern ihre Gebiete (oder werden zusätzlichen Gebieten zugeordnet), um die Speicherbereiche abzudecken, die von den durch die Überschuss-Knoten erlittenen Gebiets-Reduktionen „gestrandet" geblieben sind. Diese Gebiets-Zuwächse werden unter den Defizit-Knoten auf eine Weise verteilt, die die Defizit-Knoten mit Gebieten zurücklässt, die die Ziel-Speicherbereich-Zählwert-Anzahl der Speicherbereiche abdecken.
  • 4 zeigt zum Beispiel das System von 3 nachdem eine Epochen-Änderung stattgefunden hat. Während dieser Epochen-Änderung wurde ein dritter Knoten 402 zu einem Zwei-Knoten-System hinzugefügt. Unter Verwendung des Gleich-Speicherbereich-Ansatzes beträgt die Ziel-Anzahl an Speicherbereichen nach der dargestellten System-Änderung 1000/3 = 333,3. Anfänglich nach der Epochen-Änderung deckt das dem Knoten 306 zugeordnete Gebiet 500 Ressourcen ab, deckt das dem Knoten 308 zugeordnete Gebiet 500 Ressourcen ab und deckt das dem Knoten 402 zugeordnete Gebiet keine Ressourcen ab (bisher wurde kein Gebiet dem Knoten 402 zugeordnet). Folglich sind die Knoten 306 und 308 Überschuss-Knoten und der Knoten 402 ist ein Defizit-Knoten.
  • Die Überschuss-Knoten 306 und 308 verkleinern die ihnen zugeordneten Gebiete, so dass ihre Abdeckung auf die Ziel-Anzahl an Speicherbereichen (333) reduziert wird. In dem dargestellten Beispiel wird das dem Knoten 306 zugeordnete Gebiet von 1-500 auf 1-333 reduziert und das dem Knoten 308 zugeordnete Gebiet wird von 501-1000 auf 501-833 reduziert. Nachdem die Überschuss-Knoten diese Gebiets-Reduktion durchgemacht haben, sind die Speicherbereiche, die zu den Gebieten 334-500 und 834-1000 gehören, nicht mehr länger irgendeinem Knoten zugeordnet und gehören somit zu einem „gestrandeten Speicherbereichs-Pool".
  • Die Defizit-Knoten werden Gebieten zugeordnet, die Speicherbereiche abdecken, die zu dem gestrandeten Speicherbereichs-Pool gehören, wodurch deren Anzahl an zugeordneten Speicherbereichen auf die Ziel-Anzahl an Speicherbereichen erhöht wird. In diesem Beispiel wird dem einzigen Defizit-Knoten 402 alle Gebiete zugeordnet, die zu dem gestrandeten Speicherbereichs-Pool (in diesem Fall, Gebiete 334-500 und 834-1000) gehören. In Erwiderung auf die Nach-Epochen-Änderungs-Speicherbereichs-Gebiets-Neuzuordnungen wird die Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information 318 überarbeitet. Die in 4 dargestellte Speicherbereichs-Gebiet-zu-Knoten-Abbilde-Information 318 reflektiert die Speicherbereichs-Gebiet- Zuordnungen nachdem die Gebiete gemäß dem Gleich-Speicherbereichs-Ansatz eingestellt wurden.
  • Gemäß einem Ausführungsbeispiel wählen Überschuss-Knoten Gebiete zum Entlassen in den gestrandeten Speicherbereichs-Pool auf eine Weise aus, die die Gesamtanzahl an Gebiets-Zuweisungen reduziert. Zum Beispiel zu dem Zeitpunkt, zu dem der Knoten 308 Speicherbereiche in den gestrandeten Speicherbereichs-Pool entlässt, hat der Knoten 306 bereits die Gebiete 224-500 in den gestrandeten Speicherbereichs-Pool entlassen. Statt das Gebiet 834-1000 in den gestrandeten Speicherbereichs-Pool zu entlassen, kann der Knoten 308 ein Gebiet auswählen, das zu dem bereits in dem gestrandeten Speicherbereichs-Pool befindlichen Gebiet benachbart ist. In diesem Beispiel kann der Knoten 308 entscheiden, das Gebiet 500-666 zu entlassen. Nach dem Entlassen des Gebiets 500-666, verbleibt der Knoten 308 mit dem Gebiet 667-1000 und der gestrandete Speicherbereichs-Pool enthält ein einzelnes Gebiet 334-666.
  • In diesem Beispiel kann das in dem gestrandeten Speicherbereichs-Pool enthaltene Gebiet einfach dem Defizit-Knoten 402 zugeordnet werden. Wenn jedoch ein Defizit-Knoten bereits ein oder mehrere Speicherbereichs-Gebiete zugeordnet hat, wählt der Defizit-Knoten aus dem gestrandeten Speicherbereichs-Pool Gebiete aus, die zu seinen bereits zugeordneten Gebieten benachbart sind, wenn dies durchzuführen möglich ist. Zum Beispiel wird angenommen, dass der Knoten 402 von dem System entfernt wird. Dies resultiert in einer Epochen-Änderung, bei der die Anzahl an Knoten von drei zurück auf zwei reduziert wird. Unter der Annahme, dass dem Knoten 402 das Gebiet 334-666 zugeordnet war, würde dieses Gebiet in dem gestrandeten Speicherbereichs-Pool platziert. Die verbleibenden Knoten 306 und 308 wären beides Defizit-Knoten, da ihre gegenwärtigen Gebiete lediglich 333 Speicherbereiche abdecken, und der neue Ziel-Speicherbereich-Zählwert wäre 1000/2 = 500.
  • Um seine Abdeckung auf den Ziel-Speicherbereich-Zählwert zu erhöhen, entfernt der Knoten 306 das Gebiet 334-500 aus dem gestrandeten Speicherbereichs-Pool. Dieses Gebiet wird ausgewählt, da es benachbart zu dem gegenwärtig dem Knoten 306 zugeordneten Gebiet 1-333 ist. Der Knoten 308 entfernt dann das verbleibende Gebiet 501-666 aus dem gestrandeten Speicherbereichs-Pool. Als ein Ergebnis dieser Gebiets-Anpassungen sind die den Knoten 306 und 308 zugeordneten Gebiete wieder 1-500 bzw. 501-1000.
  • Der Knoten-Vektor-Ansatz
  • Eine Alternative zu dem Gleich-Speicherbereichs-Ansatz zur Speicherbereichs-Neu-Zuordnung wird hierin auf den Knoten-Vektor-Ansatz Bezug genommen. Gemäß dem Knoten-Vektor-Ansatz wird ein M-Längen-Vektor aufrecht erhalten, wobei M die Anzahl an Hash-Speicherbereichen der Ressourcen-zu-Speicherbereich-Hash-Funktion ist. Jeder Eintrag in dem Knoten-Vektor entspricht einem Hash-Speicherbereich und speichert einen Knoten-Identifizierer. Der mittels des Knoten-Identifizierers identifizierte Knoten eines Vektor-Eintrags dient als der Master aller Ressourcen, deren Namen mittels Hash-Funktion dem Speicherbereich, der diesem Vektor-Eintrag zugeordnet ist, zugeordnet sind. Zum Beispiel wird angenommen, dass der Vektor MASTER() benannt ist. Wenn der Identifizierer für den Knoten N1 in MASTER(5) gespeichert ist, dann werden alle Ressourcen, die mittels Hash-Funktion dem Speicherbereich 5 zugeordnet sind, auf dem Knoten N1 kontrolliert.
  • Anfänglich wird der Knoten-Vektor MASTER() bevölkert, indem eine ungefähr gleiche Anzahl an Einträgen jedem der Knoten zugeordnet wird. Ein einfacher Weg zum Durchführen diese Zuordnung ist, beginnend bei dem ersten Vektor-Eintrag X Knoten-Identifizierer für jeden Knoten zu speichern, wobei X gleich der Anzahl an Hash-Speicherbereichen dividiert durch die Anzahl an Knoten ist. Zum Beispiel, wenn es 100 Hash-Speicherbereiche und 10 Knoten gibt, dann wird der Identifizierer für den ersten Knoten in den Vektor-Einträgen 1-10 gespeichert, der Identifizierer für den zweiten Knoten in den Vektor-Einträgen 11-20 gespeichert, usw.
  • Nach einer Epochen-Änderung wird ein zweiter Knoten-Vektor NEWMASTER() erzeugt. Zusätzlich wird ein Ziel-Speicherbereich-Zählwert wie oben beschrieben basierend auf der Anzahl an Knoten in dem Nach-Epochen-Änderungs-System berechnet. Der NEWMASTER()-Vektor wird anfänglich bevölkert, indem der in jedem Eintrag in dem MASTER()-Vektor gespeicherte Identifizierer, der die folgenden zwei Bedingungen erfüllt, in NEWMASTER() kopiert wird: (1) der Identifizierer gehört zu einem Knoten, der noch im System vorhanden ist, und (2) die Anzahl an bereits dem Knoten zugeordneten Einträgen ist kleiner als der Ziel-Speicherbereich-Zählwert. Nach dieser anfänglichen Bevölkerung von NEWMASTER() werden alle Ressourcen, die mittels Hash-Funktion einem Wert i zugeordnet sind so dass MASTER(i) = NEWMASTER(i), unverzüglich verfügbar gemacht. Die verbleibenden nicht zugeordneten Einträge in NEWMASTER() werden dann Knoten-Identifizierer in einer Weise zugeordnet, die versucht, eine Gesamtsumme von X Identifizierern für jeden Knoten zu speichern, wobei X der Ziel-Speicherbereich-Zählwert ist.
  • Nachdem alle Einträge in NEWMASTER() bevölkert wurden, müssen alle Ressourcen, die mittels Hash-Funktion einem Wert i zugeordnet sind so dass MASTER(i) <> NEWMASTER(i), neu untergeordnet werden. Während dieses Remaster-Vorgangs transferiert jeder Knoten Na die Master-Ressourcen-Objekte der Ressourcen, die mittels Hash-Funktion einem Speicherbereich i zugeordnet sind, auf einen anderen Knoten Nb, wobei MASTER(i) = Na und NEWMASTER(i) = Nb. Zusätzlich baut jeder Knoten Na die Master-Ressourcen-Objekte für Ressourcen, die mittels Hash-Funktion einem Speicherbereich i zugeordnet sind, um, wobei MASTER(i) = der Identifizierer eines Knoten, der während der Epochen-Änderung verloren ging, und NEWMASTER(i) = Na.
  • Verspätetes Last-Ausgleichen
  • Im idealen Fall ist die mit dem Unterordnen von Ressourcen verknüpfte Last gleichmäßig unter den Knoten in dem Nach-Rekonfigurations-System verteilt. Außerdem wird nur die minimale Anzahl an Ressourcen, die zum gleichmäßigen Verteilen der Last benötigt werden, während der Rekonfiguration bewegt. Auch wenn die minimale Anzahl an Ressourcen, die zum gleichmäßigen Verteilen der Last benötigt werden, neu untergeordnet wird, kann der Rekonfigurations-Prozess jedoch eine signifikante Menge an Overhead betreffen und Teile des Systems für eine unakzeptabel lange Zeitspanne unverfügbar machen.
  • Gemäß einem Aspekt der Erfindung wird die Dauer des Rekonfigurations-Betriebs reduziert, indem anfänglich weniger als alle Ressourcen, die neu untergeordnet werden müssen, neu untergeordnet werden, um den gewünschten Last-Ausgleich zu erreichen. Somit gleicht die anfängliche Rekonfiguration, die nach einer Epochen-Änderung auftritt, die Last nicht gleichmäßig auf. Nachdem die anfängliche Rekonfiguration statt gefunden hat und das System allgemein verfügbar gemacht wurde, werden statt dessen Speicherbereiche von Überschuss-Knoten auf Defizit-Knoten graduell neu zugeordnet, wodurch die Ressourcen „migriert" werden, um über die Zeit hinweg eine gleichmäßiger verteilte Last-Balance zu erreichen.
  • Es gibt zwei generelle Typen an Neu-Unterordnen-Vorgängen: Verlust-Master-Neu-Unterordnen und Transfer-Master-Neu-Unterordnen. Verlust-Master-Neu-Unterordnen wird für Ressourcen benötigt, deren Vor-Epochen-Änderungs-Master während der Epochen-Änderung von dem System entfernt wurden. Verlust-Master-Neu-Unterordnen einer Ressource betrifft im Allgemeinen das neue Zusammenstellen des Master-Ressource-Objekts für die Ressource an einem existierenden Knoten.
  • Andererseits wird Transfer-Master-Neu-Unterordnen für Ressourcen durchgeführt, deren Vor-Epochen-Änderungs-Master nach der Epochen-Änderung weiterhin in dem System existieren. Transfer-Master-Neu-Unterordnen erfordert nicht das neue Zusammenstellen des Master-Ressource-Objekts einer Ressource, da das Master-Ressource-Objekt während der Epochen-Änderung nicht verloren wurde.
  • Gemäß einem Ausführungsbeispiel werden lediglich diejenigen Ressourcen, die sich einem Verlust-Master-Neu-Unterordnen unterziehen, nach einer Epochen-Änderung anfänglich neu untergeordnet. Insbesondere wird die Speicherbereich-zu-Knoten-Hash-Funktion in Erwiderung auf eine Epochen-Änderung überarbeitet, um lediglich die Speicherbereiche, die auf Knoten abgebildet waren, die während der Epochen-Änderung verloren wurden, neu zuzuordnen. Vorzugsweise wird die Speicherbereich-zu-Knoten-Hash-Funktion in einer Weise überarbeitet, die diese Speicherbereiche auf Nach-Epochen-Änderungs-Knoten abbildet, die gegenwärtig die geringsten Kontroll-Lasten haben. Die Knoten, auf die diese Speicherbereiche neu zugeordnet werden, weisen typischerweise irgendwelche Knoten auf, die während der Epochen-Änderung zu dem System neu hinzugefügt wurden.
  • Nachdem alles notwendige Verlust-Master-Neu-Unterordnen durchgeführt wurde, wird das System für die Nutzer verfügbar gemacht. Die graduelle Migration von zusätzlichen Ressourcen von Überschuss-Knoten auf Defizit-Knoten zum Erreichen eine ausbalanciertere Last-Verteilung wird durchgeführt, nachdem das System verfügbar gemacht worden ist. Außerdem werden die Transfer-Master-Neu-Unterordnen-Vorgänge, die nach der anfänglichen Nach-Epochen-Änderungs-Rekonfiguration durchgeführt werden, in einer Weise durchgeführt, die das System nicht wieder unverfügbar macht.
  • Bezug nehmend auf 5 ist dies ein Flussdiagramm, das Schritte zum neuen Unterordnen von Ressourcen nach einer Epochen-Änderung gemäß einem Ausführungsbeispiel der Erfindung darstellt. Bei Schritt 502 tritt die Epochen-Änderung auf. Bei Schritt 504 werden Defizit-Knoten als Master der Speicherbereiche, die zu Knoten zugeordnet waren, die während der Epochen-Änderung verloren gegangen sind („Master-lose Speicherbereiche"), ausgewählt. Gemäß einem Ausführungsbeispiel werden der eine oder die mehreren Knoten des Nach-Epochen-Änderungs-Systems, die die kleinste Anzahl an zugeordneten Speicherbereichen haben, ausgewählt. Typischerweise würden die ausgewählten Speicherbereiche irgendwelche Knoten aufweisen, die während der Epochen-Änderung zu dem System hinzugefügt wurden.
  • Bei Schritt 506 wird die Speicherbereich-zu-Knoten-Abbildung überarbeitet, um die Master-losen Speicherbereiche zu den Knoten zuzuordnen, die in Schritt 504 ausgewählt wurden. Bei Schritt 508 wird Verlust-Master-Neu-Unterordnen durchgeführt. Insbesondere werden die Master-Ressource-Objekte für die Ressourcen, die Namen haben, die mittels Hash-Funktion den neu abgebildeten Speicherbereichen zugeordnet sind, auf ihren neuen Master-Knoten neu zusammengestellt. Wenn zum Beispiel der Name der Ressource R1 mittels Hash-Funktion einem Speicherbereich B1 zugeordnet ist, der auf einen Knoten N1 neu abgebildet wurde, dann wird das Master-Ressource-Objekt für R1 auf N1 neu zusammengestellt.
  • Die Schritte 504, 506 und 508 bilden die anfängliche Rekonfiguration, die nach einer Epochen-Änderung gemäß einem Ausführungsbeispiel der Erfindung durchgeführt wird. Die Schritte 510518 stellen die mit der Nach-Rekonfiguration-Ressourcen-Migration zusammenhängenden Schritte dar, die nach der anfänglichen Rekonfiguration durchgeführt wird, um die Last zwischen den Knoten, die nach der Epochen-Änderung existieren, gleichmäßiger auszugleichen. Viele Überschuss-Knoten können partizipieren übereinstimmend an der Nach-Rekonfiguration-Ressourcen-Migration. Solch eine Nach-Rekonfiguration-Ressourcen-Migration kann außerdem graduell stattfinden und muss nicht sofort nach der anfänglichen Rekonfiguration auftreten oder beginnen.
  • Bei Schritt 510 selektiert ein Überschuss-Knoten einen Defizit-Knoten, zu welchem einer oder mehrere der Speicherbereiche, die gegenwärtig zu dem Überschuss-Knoten gehören, zugeordnet werden. Zum Zwecke der Erklärung soll angenommen werden, dass ein einzelner „Ziel"-Speicherbereich dem ausgewählten Defizit-Knoten neu zugeordnet werden soll. Bei Schritt 512 sendet der Überschuss-Knoten eine Speicherbereich-Transfer-Nachricht an den selektierten Defizit-Knoten, um den Defizit-Knoten darüber zu informieren, dass der Ziel-Speicherbereich zu dem Defizit-Knoten neu zugeordnet wird. Bei Schritt 514 sendet der Überschuss-Knoten die Master-Knoten-Objekt-Information für Ressourcen, die zu dem Ziel-Speicherbereich gehören, an den selektierten Defizit-Knoten.
  • Bei Schritt 516 sendet der Defizit-Knoten an die anderen Knoten in dem System eine Nachricht aus, die anzeigt, dass der Defizit-Speicherbereich der neue Master des Ziel-Speicherbereichs ist. Bei Schritt 518 antworten die Knoten mittels Aktualisierens ihrer Speicherbereich-zu-Knoten-Abbildung, um anzuzeigen, dass der Ziel-Speicherbereich dem Defizit-Knoten, der die Nachricht gesendet hat, zugeordnet wurde.
  • Es ist bedeutsam, dass das System verfügbar bleiben kann, während Nach-Rekonfiguration-Ressourcen-Migration stattfindet. Gemäß einem Ausführungsbeispiel können gerade Prozesse, die Zugriff auf Ressourcen anfordern, die Migration unterliegen, weiterhin ausgeführt werden. Zum Beispiel wird angenommen, dass ein Prozess auf einem Knoten N1 eine Ressource benötigt, die von einem Knoten N2 auf einen Knoten N3 migriert wird. Der Ressourcen-Name wird mittels Hash-Funktion einem Speicherbereich zugeordnet sein, der gemäß der Speicherbereich-zu-Knoten-Abbildung bei N3 nach wie vor N2 zugeordnet ist. Folglich wird der Prozess eine Zugriffs-Anfrage an N2 senden. Wenn N2 noch nicht das Master-Ressource-Objekt für die fragliche Ressource transferiert hat, kann N2 die Anfrage ganz normal bedienen. Wenn N2 bereits das Master-Ressource-Objekt auf N3 transferiert hat, dann leitet N2 die Anfrage an N3 weiter. Selbst wenn das Master-Ressource-Objekt für die Ressource noch nicht bei N3 angekommen ist, wird die Anfrage bei N3 nach dem Master-Ressource-Objekt ankommen, da Daten von N2 bei N3 in der selben Reihenfolge ankommen, wie sie von N2 gesendet werden. Sobald sowohl das Master-Ressource-Objekt als auch die Anfrage bei N3 ankommen, kann dann N3 die Anfrage bedienen.
  • Gemäß einem Aspekt der Erfindung kann der Knoten, der eine Ressource zu einem anderen Knoten (N2 in dem oben erläuterten Beispiel) transferiert, seine eigene Version des Master-Ressource-Objekts, das er transferiert, weiterhin beibehalten. Die Version des bei dem transferierenden Knoten beibehaltenen Master-Ressource-Objekts dient als eine Sicherung (Backup). Wenn folglich der Knoten, an welchen ein Master-Ressource-Objekt transferiert wird, ausfällt, kann das Backup-Master-Ressource-Objekt verwendet werden, um den Zugriff auf die Ressource zu steuern. Bis der empfangende Knoten die Tatsache aussendet, dass er der neue Master ist, wird der mit dem Beibehalten des Backup-Master-Ressource-Objekts auf dem transferierenden Knoten verknüpfte Overhead durch die Tatsache reduziert werden, dass alle Zugriffs-Anfragen in jedem Fall bei dem transferierenden Knoten ankommen (und von diesem weitergeleitet werden). Nachdem der empfangende Knoten die Tatsache aussendet, dass er der neue Master ist, kann der transferierende Knoten entweder aufhören, das Backup-Master-Ressource-Objekt beizubehalten, oder das Master-Ressource-Objekt weiterhin beibehalten. Wenn der transferierende Knoten weitermacht, die Backup-Version des Master-Ressource-Objekts beizubehalten, tut es dies zum Zwecke des akkuraten Beibehaltens des Backups, indem er sich den zusätzlichen Overhead zuzieht, der damit verknüpft ist, dass der neue Master-Knoten Zugriffs-Anfragen an den alten Master-Knoten weiterleitet.
  • Wenn eine Epochen-Änderung auftritt, während die mit einem Speicherbereich verknüpften Master-Ressource-Objekte zwischen Knoten migriert werden, wird gemäß einem Ausführungsbeispiel der Speicherbereich als ein Master-loser Speicherbereich behandelt. Folglich wird während der anfänglichen Rekonfiguration nach der Epochen-Änderung der Speicherbereich einem Master neu zugeordnet und die Master-Ressource-Objekte werden neu zusammengestellt.
  • Geplantes Abschalten
  • Gemäß einem Ausführungsbeispiel der Erfindung werden die in 5 gezeigten Schritte 510518 vor einer Epochen-Änderung durchgeführt, wenn es bekannt ist, dass bestimmte Knoten während der Epochen-Änderung abgeschaltet werden sollen. Wenn es zum Beispiel bekannt ist, dass der Knoten N2 abgeschaltet werden soll, kann der Knoten N2 die Master-Ressource-Objekte, die mit gegenwärtig N2 zugeordneten Speicherbereichen verknüpft sind, auf einen oder mehrere Knoten transferieren, die nicht abgeschaltet werden sollen.
  • Wenn während dieses Prozesses N2 eine mit einer Ressource verknüpfte Zugriffs-Anfrage erhält, deren Master-Ressource-Objekt bereits transferiert wurde, dann leitet N2 die Anfrage an den passenden Knoten weiter. Nachdem N2 die mit allen zuvor N2 zugeordneten Speicherbereichen verknüpften Master-Ressource-Objekte transferiert hat, wartet N2 darauf, dass alle empfangenden Knoten Nachrichten aussenden, die ihre neuen Speicherbereichs-Zuordnungen anzeigen. Nachdem alle ausgesendeten Nachrichten gesendet wurden, wird N2 nicht mehr länger irgendeinem Speicherbereich zugeordnet sein und X2 kann abschalten. Das Abschalten von N2 unter diesen Bedingungen wird nicht den mit Verlust-Master-Neu-Unterordnen verknüpften Overhead verursachen.

Claims (16)

  1. Verfahren zum Unterordnen von Ressourcen (300) zu Knoten (306, 308) in einem Mehrfach-Knoten-System, wobei das Verfahren folgende Schritte aufweist: für jede Ressource in einem Satz von Ressourcen, Auswählen eines Knotens zum Kontrollieren der Ressource mittels Abbildens der Ressource auf einen bestimmten Hash-Speicherbereich (304) unter Verwendung einer ersten Hash-Funktion (302); Abbildens des bestimmten Hash-Speicherbereichs (304) auf einen bestimmten Knoten unter Verwendung einer zweiten Hash-Funktion; und Auswählens des bestimmten Knotens, um der Master der Ressource zu sein; und Erwidern auf eine Epochen-Änderung mittels Modifizierens der zweiten Hash-Funktion ohne Modifizieren der ersten Hash-Funktion (302); wobei Modifizieren der zweiten Hash-Funktion den folgenden Schritt aufweist: Durchführen einer anfänglichen Re-Konfiguration nach der Epochen-Änderung, wobei die anfängliche Re-Konfiguration den Schritt des Rück-Abbildens eines Satzes von Speicherbereichen, die auf Knoten abgebildet waren, die während der Epochen-Änderung entfernt wurden, auf Knoten, die nach der Epochen-Änderung existieren, aufweist; wobei das Verfahren dadurch gekennzeichnet ist, dass das Modifizieren der zweiten Hash-Funktion außerdem den nachfolgenden Schritt aufweist: nach dem Durchführen der anfänglichen Re-Konfiguration, Durchführen der nachfolgenden Schritte: allgemein zugänglich Machen des Mehrfach-Knoten-Systems für einen oder mehr Prozesse, die von dem Mehrfach-Knoten-System betreute Ressourcen anfragen; und während das Mehrfach-Knoten-System allgemein zugänglich ist, Migrieren von einem oder mehreren Speicherbereichen, die gegenwärtig auf einen Überschuss-Knoten abgebildet sind, auf einen Defizit-Knoten, bis die Anzahl der dem Defizit-Knoten zugeordneten Speicherbereiche einem Ziel-Speicherbereich-Zählwert gleicht; wobei eine Epochen-Änderung eine Änderung in der Anzahl der Knoten in dem Mehrfach-Knoten-System ist; wobei ein Defizit-Knoten ein Knoten in dem Mehrfach-Knoten-System ist, dessen gegenwärtig zugeordnete Bereiche weniger als die Anzahl des Ziel-Speicherbereich-Zählwerts der Speicherbereiche abdecken; wobei ein Überschuss-Knoten ein Knoten in dem Mehrfach-Knoten-System ist, dessen gegenwärtig zugeordnete Bereiche mehr als die Anzahl des Ziel-Speicherbereich-Zählwerts der Speicherbereiche abdecken; wobei der Ziel-Speicherbereich-Zählwert die Anzahl der Speicherbereiche ist, die jeder Knoten in dem Mehrfach-Knoten-System haben muss, damit die Speicherbereiche über die Knoten in dem Mehrfach-Knoten-System hinweg gleichmäßig verteilt sind.
  2. Verfahren gemäß Anspruch 1, wobei: vor der Epochen-Änderung eine erste Anzahl an Knoten verwendet wird, um Ressourcen aus dem Satz an Ressourcen (300) zu kontrollieren; nach der Epochen-Änderung eine zweite Anzahl an Knoten verwendet wird, um Ressourcen aus dem Satz an Ressourcen (300) zu kontrollieren; das Verfahren die Schritte des Verwendens der ersten Hash-Funktion (302) aufweist, um Ressourcen einer bestimmten Anzahl an Speicherbereichen basierend auf der Hash-Funktion zuzuordnen, wobei die bestimmte Anzahl an Speicherbereichen größer als sowohl die erste Anzahl als auch die zweite Anzahl ist.
  3. Verfahren gemäß Anspruch 1, wobei: die zweite Hash-Funktion unter Verwendung von Speicherbereich-zu-Knoten-Abbilde-Information (318) implementiert ist; und der Schritt des Modifizierens der zweiten Hash-Funktion Modifizieren einer oder mehrerer Speicherbereich-zu-Knoten-Abbildungen innerhalb der Speicherbereich-zu-Knoten-Abbilde-Information (318) aufweist.
  4. Verfahren gemäß Anspruch 3, wobei: jeder Knoten einer Mehrzahl von Knoten eine lokale Kopie der Speicherbereich-zu-Knoten-Abbilde-Information (318) behält; und der Schritt des Modifizierens einer oder mehrerer Speicherbereich-zu-Knoten-Abbildungen innerhalb der Speicherbereich-zu-Knoten-Abbilde-Information (318) bei jedem der Mehrzahl an Knoten parallel durchgeführt wird.
  5. Verfahren gemäß Anspruch 4, wobei der Schritt des Modifizierens der einen oder mehreren Speicherbereichzu-Knoten-Abbildungen (318) durchgeführt wird, indem ein Satz an Regeln angewendet wird, die ein deterministisches Ergebnis basierend auf der Speicherbereich-zu-Knoten-Abbildung (318) vor der Epochen-Änderung und wie viele Knoten zum Kontrollieren von Ressourcen nach der Epochen-Änderung verfügbar sind erzeugen.
  6. Verfahren gemäß Anspruch 3, wobei der Schritt des Modifizierens einer oder mehrerer Speicherbereich-zu-Knoten-Abbildungen (318) die nachfolgenden Schritte aufweist: Ermitteln eines Ziel-Speicherbereich-Zählwertes basierend auf wie viele Hash-Speicherbereiche (304) der ersten Hash-Funktion (302) zugeordnet sind und wie viele Knoten zum Kontrollieren von Ressourcen nach der Epochen-Änderung verfügbar sind; wenn ein besonderer Knoten zum Kontrollieren von Ressourcen nach der Epochen-Änderung verfügbar ist, dann Durchführen der nachfolgenden Schritte nach der Epochen-Änderung: wenn vor der Epochen-Änderung mehr als der Ziel-Speicherbereich-Zählwert der Speicherbereiche auf den besonderen Knoten abgebildet waren, dann Revidieren der Speicherbereich-zu-Knoten-Information (318), um einen oder mehrere Speicherbereiche, die vor der Epochen-Änderung auf den besonderen Knoten abgebildet waren, auf einen verschiedenen Knoten abzubilden; wenn vor der Epochen-Änderung weniger als der Ziel-Speicherbereich-Zählwert der Speicherbereiche auf den besonderen Knoten abgebildet waren, dann Revidieren der Speicherbereich-zu-Knoten-Information (318), um einen oder mehrere Speicherbereiche, die vor der Epochen-Änderung auf einen verschiedenen Knoten abgebildet waren, auf den besonderen Knoten abzubilden.
  7. Verfahren gemäß Anspruch 1, wobei der Schritt des Migrierens die nachfolgenden Schritte aufweist: der Überschuss-Knoten sendet an den Defizit-Knoten Ressourcen-Information, die zum Kontrollieren von Ressourcen benötigt wird, die auf den einen oder die mehreren Speicherbereiche (304) abgebildet sind; nachdem der Überschuss-Knoten beginnt, die Ressourcen-Information zu versenden, Empfangen an dem Überschuss-Knoten die Ressourcen (300) betreffende Anfragen; und nachdem die Ressourcen-Information gesendet wurde, Weiterleiten der Anfragen durch den Überschuss-Knoten an den Defizit-Knoten.
  8. Verfahren gemäß Anspruch 7, außerdem aufweisend die nachfolgenden Schritte: der Defizit-Knoten überträgt eine Nachricht an einen Satz von Knoten, welche anzeigt, dass der Defizit-Knoten Master der Ressourcen ist, die auf den einen oder die mehreren Speicherbereiche (304) abgebildet sind; und die Knoten in dem Satz von Knoten erwidern auf die Nachricht mittels Modifizierens der zweiten Hash-Funktion, um den einen oder die mehreren Speicherbereiche (304) auf den Defizit-Knoten abzubilden.
  9. Computer-lesbares Medium, welches Folgen an Befehlen zum Unterordnen von Ressourcen (300) zu Knoten (306, 308) in einem Mehrfach-Knoten-System trägt, wobei die Folgen an Befehlen Befehle zum Durchführen der nachfolgenden Schritte aufweist: für jede Ressource in einem Satz von Ressourcen, Auswählen eines Knotens zum Kontrollieren der Ressource mittels Abbildens der Ressource auf einen bestimmten Hash-Speicherbereich (304) unter Verwendung einer ersten Hash-Funktion (302); Abbildens des bestimmten Hash-Speicherbereichs (304) auf einen bestimmten Knoten unter Verwendung einer zweiten Hash-Funktion; Auswählens des bestimmten Knotens, um der Master der Ressource zu sein; und Erwidern auf eine Epochen-Änderung mittels Modifizierens der zweiten Hash-Funktion ohne Modifizieren der ersten Hash-Funktion (302); wobei Modifizieren der zweiten Hash-Funktion die folgenden Schritte aufweist: Durchführen einer anfänglichen Re-Konfiguration nach der Epochen-Änderung, wobei die anfängliche Re-Konfiguration den Schritt des Rück-Abbildens eines Satzes von Speicherbereichen, die auf Knoten abgebildet waren, die während der Epochen-Änderung entfernt wurden, auf Knoten, die nach der Epochen-Änderung existieren, aufweist; wobei die Folgen an Befehlen dadurch gekennzeichnet ist, dass die Befehle zum Modifizieren der zweiten Hash-Funktion außerdem nachfolgende Befehle aufweist: nach dem Durchführen der anfänglichen Re-Konfiguration, Durchführen der nachfolgenden Schritte: allgemein zugänglich Machen des Mehrfach-Knoten-Systems für einen oder mehr Prozesse, die von dem Mehrfach-Knoten-System betreute Ressourcen anfragen; und während das Mehrfach-Knoten-System allgemein zugänglich ist, Migrieren von einem oder mehreren Speicherbereichen, die gegenwärtig auf einen Überschuss-Knoten abgebildet sind, auf einen Defizit-Knoten, bis die Anzahl der dem Defizit-Knoten zugeordneten Speicherbereiche einem Ziel-Speicherbereich-Zählwert gleicht; wobei eine Epochen-Änderung eine Änderung in der Anzahl der Knoten in dem Mehrfach-Knoten-System ist; wobei ein Defizit-Knoten ein Knoten in dem Mehrfach-Knoten-System ist, dessen gegenwärtig zugeordnete Bereiche weniger als eine Anzahl des Ziel-Speicherbereich-Zählwerts der Speicherbereiche abdecken; wobei ein Überschuss-Knoten ein Knoten in dem Mehrfach-Knoten-System ist, dessen gegenwärtig zugeordnete Bereiche mehr als die Anzahl des Ziel-Speicherbereich-Zählwerts der Speicherbereiche abdecken; wobei der Ziel-Speicherbereich-Zählwert die Anzahl der Speicherbereiche ist, die jeder Knoten in dem Mehrfach-Knoten-System haben muss, damit die Speicherbereiche über die Knoten in dem Mehrfach-Knoten-System hinweg gleichmäßig verteilt sind.
  10. Computer-lesbares Medium gemäß Anspruch 9, wobei: vor der Epochen-Änderung eine erste Anzahl an Knoten verwendet wird, um Ressourcen aus dem Satz an Ressourcen (300) zu kontrollieren; nach der Epochen-Änderung eine zweite Anzahl an Knoten verwendet wird, um Ressourcen aus dem Satz an Ressourcen zu kontrollieren; das Computer-lesbare Medium Befehle zum Durchführen des Schritts des Verwendens der ersten Hash-Funktion (302) aufweist, um Ressourcen einer bestimmten Anzahl an Speicherbereichen basierend auf der Hash-Funktion zuzuordnen, wobei die bestimmte Anzahl an Speicherbereichen größer als sowohl die erste Anzahl als auch die zweite Anzahl ist.
  11. Computer-lesbares Medium gemäß Anspruch 9, wobei: die zweite Hash-Funktion unter Verwendung von Speicherbereich-zu-Knoten-Abbilde-Information (318) implementiert ist; und der Schritt des Modifizierens der zweiten Hash-Funktion Modifizieren einer oder mehrerer Speicherbereich-zu-Knoten-Abbildungen innerhalb der Speicherbereich-zu-Knoten-Abbilde-Information (318) aufweist.
  12. Computer-lesbares Medium gemäß Anspruch 11, wobei: jeder Knoten einer Mehrzahl von Knoten eine lokale Kopie der Speicherbereich-zu-Knoten-Abbilde-Information (318) behält; und der Schritt des Modifizierens einer oder mehrerer Speicherbereich-zu-Knoten-Abbildungen innerhalb der Speicherbereich-zu-Knoten-Abbilde-Information (318) bei jedem der Mehrzahl an Knoten parallel durchgeführt wird.
  13. Computer-lesbares Medium gemäß Anspruch 12, wobei der Schritt des Modifizierens der einen oder mehreren Speicherbereich-zu-Knoten-Abbildungen (318) durchgeführt wird, indem ein Satz an Regeln angewendet wird, die ein deterministisches Ergebnis basierend auf der Speicherbereich-zu-Knoten-Abbildung (318) vor der Epochen-Änderung und wie viele Knoten zum Kontrollieren von Ressourcen nach der Epochen-Änderung verfügbar sind erzeugen.
  14. Computer-lesbares Medium gemäß Anspruch 11, wobei der Schritt des Modifizierens einer oder mehrerer Speicherbereich-zu-Knoten-Abbildungen (318) die nachfolgenden Schritte aufweist: Ermitteln eines Ziel-Speicherbereich-Zählwertes basierend auf wie viele Hash-Speicherbereiche (304) der ersten Hash-Funktion (302) zugeordnet sind und wie viele Knoten zum Kontrollieren von Ressourcen nach der Epochen-Änderung verfügbar sind; wenn ein besonderer Knoten zum Kontrollieren von Ressourcen nach der Epochen-Änderung verfügbar ist, dann Durchführen der nachfolgenden Schritte nach der Epochen-Änderung: wenn vor der Epochen-Änderung mehr als der Ziel-Speicherbereich-Zählwert der Speicherbereiche auf den besonderen Knoten abgebildet waren, dann Revidieren der Speicherbereich-zu-Knoten-Information (318), um einen oder mehrere Speicherbereiche, die vor der Epochen-Änderung auf den besonderen Knoten abgebildet waren, auf einen verschiedenen Knoten abzubilden; wenn vor der Epochen-Änderung weniger als der Ziel-Speicherbereich-Zählwert der Speicherbereiche auf den besonderen Knoten abgebildet waren, dann Revidieren der Speicherbereich-zu-Knoten-Information (318), um einen oder mehrere Speicherbereiche, die vor der Epochen-Änderung auf einen verschiedenen Knoten abgebildet waren, auf den besonderen Knoten abzubilden.
  15. Computer-lesbares Medium gemäß Anspruch 9, wobei der Schritt des Migrierens die nachfolgenden Schritte aufweist: der Überschuss-Knoten sendet an den Defizit-Knoten Ressourcen-Information, die zum Kontrollieren von Ressourcen benötigt wird, die auf den einen oder die mehreren Speicherbereiche (304) abgebildet sind; nachdem der Überschuss-Knoten beginnt, die Ressourcen-Information zu versenden, Empfangen an dem Überschuss-Knoten die Ressourcen (300) betreffende Anfragen; und nachdem die Ressourcen-Information gesendet wurde, Weiterleiten der Anfragen durch den Überschuss-Knoten an den Defizit-Knoten.
  16. Computer-lesbares Medium gemäß Anspruch 15, außerdem aufweisend Befehle zum Durchführen der nachfolgenden Schritte: der Defizit-Knoten überträgt eine Nachricht an einen Satz von Knoten, welche anzeigt, dass der Defizit-Knoten Master der Ressourcen ist, die auf den einen oder die mehreren Speicherbereiche (304) abgebildet sind; und die Knoten in dem Satz von Knoten erwidern auf die Nachricht mittels Modifizierens der zweiten Hash-Funktion, um den einen oder die mehreren Speicherbereiche (304) auf den Defizit-Knoten abzubilden.
DE69937946T 1998-12-21 1999-12-06 Hashen von objekten mit inkrementalen änderungen Expired - Lifetime DE69937946T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/218,864 US6363396B1 (en) 1998-12-21 1998-12-21 Object hashing with incremental changes
US218864 1998-12-21
PCT/US1999/028701 WO2000038062A1 (en) 1998-12-21 1999-12-06 Object hashing with incremental changes

Publications (2)

Publication Number Publication Date
DE69937946D1 DE69937946D1 (de) 2008-02-21
DE69937946T2 true DE69937946T2 (de) 2009-01-02

Family

ID=22816794

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69937946T Expired - Lifetime DE69937946T2 (de) 1998-12-21 1999-12-06 Hashen von objekten mit inkrementalen änderungen
DE69939133T Expired - Lifetime DE69939133D1 (de) 1998-12-21 1999-12-06 Objekt-Hashing mit schrittweisen Änderungen

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69939133T Expired - Lifetime DE69939133D1 (de) 1998-12-21 1999-12-06 Objekt-Hashing mit schrittweisen Änderungen

Country Status (8)

Country Link
US (1) US6363396B1 (de)
EP (2) EP1830262B1 (de)
JP (1) JP4475818B2 (de)
AU (1) AU770875B2 (de)
CA (1) CA2320307C (de)
DE (2) DE69937946T2 (de)
HK (1) HK1104861A1 (de)
WO (1) WO2000038062A1 (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3510042B2 (ja) * 1996-04-26 2004-03-22 株式会社日立製作所 データベース管理方法及びシステム
US6529906B1 (en) * 2000-01-28 2003-03-04 Oracle Corporation Techniques for DLM optimization with re-mastering events
US7246120B2 (en) 2000-01-28 2007-07-17 Oracle International Corporation Techniques for achieving higher availability of resources during reconfiguration of a cluster
US6751616B1 (en) * 2000-01-28 2004-06-15 Oracle International Corp. Techniques for DLM optimization with re-mapping responsibility for lock management
US6920454B1 (en) 2000-01-28 2005-07-19 Oracle International Corporation Techniques for DLM optimization with transferring lock information
US7487152B1 (en) * 2000-05-31 2009-02-03 International Business Machines Corporation Method for efficiently locking resources of a global data repository
US7020713B1 (en) * 2000-10-10 2006-03-28 Novell, Inc. System and method for balancing TCP/IP/workload of multi-processor system based on hash buckets
US6697901B1 (en) * 2000-10-24 2004-02-24 Oracle International Corporation Using secondary resource masters in conjunction with a primary resource master for managing resources that are accessible to a plurality of entities
US7389293B2 (en) * 2000-12-20 2008-06-17 Oracle International Corporation Remastering for asymmetric clusters in high-load scenarios
TW576061B (en) * 2001-08-13 2004-02-11 Via Tech Inc Device and method for load balancing of packet switching
US7379952B2 (en) * 2004-01-30 2008-05-27 Oracle International Corporation Techniques for multiple window resource remastering among nodes of a cluster
US20060200469A1 (en) * 2005-03-02 2006-09-07 Lakshminarayanan Chidambaran Global session identifiers in a multi-node system
US8504521B2 (en) * 2005-07-28 2013-08-06 Gopivotal, Inc. Distributed data management system
US7814065B2 (en) * 2005-08-16 2010-10-12 Oracle International Corporation Affinity-based recovery/failover in a cluster environment
US8464265B2 (en) * 2006-04-03 2013-06-11 Secure64 Software Method and system for reallocating computational resources using resource reallocation enabling information
US8209305B2 (en) * 2006-04-19 2012-06-26 Microsoft Corporation Incremental update scheme for hyperlink database
US8392366B2 (en) * 2006-08-29 2013-03-05 Microsoft Corporation Changing number of machines running distributed hyperlink database
US7821925B2 (en) * 2007-01-29 2010-10-26 Fulcrum Microsystems, Inc. Traffic distribution techniques utilizing initial and scrambled hash values
US7984158B2 (en) * 2007-03-20 2011-07-19 Microsoft Corporation Web service for coordinating actions of clients
US20080278508A1 (en) * 2007-05-11 2008-11-13 Swen Anderson Architecture and Method for Remote Platform Control Management
US8924403B2 (en) * 2007-12-31 2014-12-30 Sap Se Method and system for central data querying
WO2009087413A1 (en) * 2008-01-08 2009-07-16 Taptu Ltd. Data storage
US9237100B1 (en) 2008-08-06 2016-01-12 Marvell Israel (M.I.S.L.) Ltd. Hash computation for network switches
US8078825B2 (en) * 2009-03-11 2011-12-13 Oracle America, Inc. Composite hash and list partitioning of database tables
US8756424B2 (en) 2010-11-30 2014-06-17 Marvell Israel (M.I.S.L) Ltd. Load balancing hash computation for network switches
US9229740B1 (en) 2011-11-02 2016-01-05 Amazon Technologies, Inc. Cache-assisted upload proxy
US8984162B1 (en) * 2011-11-02 2015-03-17 Amazon Technologies, Inc. Optimizing performance for routing operations
US8726264B1 (en) 2011-11-02 2014-05-13 Amazon Technologies, Inc. Architecture for incremental deployment
US9171030B1 (en) 2012-01-09 2015-10-27 Marvell Israel (M.I.S.L.) Ltd. Exact match lookup in network switch devices
GB2504112A (en) * 2012-07-18 2014-01-22 Ibm Generating database sequences in a replicated database environment
CN105122745B (zh) 2013-02-27 2019-06-28 马维尔国际贸易有限公司 用于网络设备的高效最长前缀匹配技术
US9537771B2 (en) 2013-04-04 2017-01-03 Marvell Israel (M.I.S.L) Ltd. Exact match hash lookup databases in network switch devices
US9906592B1 (en) 2014-03-13 2018-02-27 Marvell Israel (M.I.S.L.) Ltd. Resilient hash computation for load balancing in network switches
US9935831B1 (en) * 2014-06-03 2018-04-03 Big Switch Networks, Inc. Systems and methods for controlling network switches using a switch modeling interface at a controller
US10587516B1 (en) 2014-07-15 2020-03-10 Marvell Israel (M.I.S.L) Ltd. Hash lookup table entry management in a network device
US10467001B2 (en) 2015-01-12 2019-11-05 Microsoft Technology Licensing, Llc Enhanced compression, encoding, and naming for resource strings
US10430182B2 (en) 2015-01-12 2019-10-01 Microsoft Technology Licensing, Llc Enhanced compression, encoding, and naming for resource strings
US9467166B2 (en) 2015-01-12 2016-10-11 Microsoft Technology Licensing, Llc Enhanced compression, encoding, and naming for resource strings
US9886442B2 (en) 2015-01-12 2018-02-06 Microsoft Technology Licensing, Llc Enhanced compression, encoding, and naming for resource strings
US9876719B2 (en) 2015-03-06 2018-01-23 Marvell World Trade Ltd. Method and apparatus for load balancing in network switches
US10904150B1 (en) 2016-02-02 2021-01-26 Marvell Israel (M.I.S.L) Ltd. Distributed dynamic load balancing in network systems
EP3279796B1 (de) * 2016-08-02 2020-07-15 NXP USA, Inc. Ressourcenzugangsverwaltungskomponente und verfahren dafür
US10243857B1 (en) 2016-09-09 2019-03-26 Marvell Israel (M.I.S.L) Ltd. Method and apparatus for multipath group updates
US10540207B1 (en) * 2018-07-18 2020-01-21 International Business Machines Corporation Fast, low memory, consistent hash using an initial distribution
US11416496B2 (en) * 2019-03-01 2022-08-16 Hitachi Vantara Llc Computer implemented method for continuous processing of data-in-motion streams residing in distributed data sources
CN113127921A (zh) * 2019-12-31 2021-07-16 伊姆西Ip控股有限责任公司 数据管理的方法、电子设备和计算机程序产品
CN111475535B (zh) * 2020-03-09 2024-02-06 咪咕文化科技有限公司 数据存储、访问方法及装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5202971A (en) 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US5060144A (en) 1989-03-16 1991-10-22 Unisys Corporation Locking control with validity status indication for a multi-host processor system that utilizes a record lock processor and a cache memory for each host processor
JPH0318935A (ja) 1989-06-15 1991-01-28 Hitachi Ltd データリストに対するアクセスの直列化方式
US5161227A (en) 1989-11-13 1992-11-03 International Business Machines Corporation Multilevel locking system and method
JP2533266B2 (ja) 1991-06-14 1996-09-11 インターナショナル・ビジネス・マシーンズ・コーポレイション 共用デ―タシステムにおけるデ―タ資源のロッキング方法及びシステム間のデ―タロック管理方法
US5408653A (en) 1992-04-15 1995-04-18 International Business Machines Corporation Efficient data base access using a shared electronic store in a multi-system environment with shared disks
US5403639A (en) 1992-09-02 1995-04-04 Storage Technology Corporation File server having snapshot application data groups
US5452447A (en) 1992-12-21 1995-09-19 Sun Microsystems, Inc. Method and apparatus for a caching file server
US5612865A (en) 1995-06-01 1997-03-18 Ncr Corporation Dynamic hashing method for optimal distribution of locks within a clustered system
CA2159269C (en) * 1995-09-27 2000-11-21 Chaitanya K. Baru Method and apparatus for achieving uniform data distribution in a parallel database system
US5892945A (en) * 1996-03-21 1999-04-06 Oracle Corporation Method and apparatus for distributing work granules among processes based on the location of data accessed in the work granules
US6026293A (en) * 1996-09-05 2000-02-15 Ericsson Inc. System for preventing electronic memory tampering
US5963960A (en) * 1996-10-29 1999-10-05 Oracle Corporation Method and apparatus for queuing updates in a computer system
US6023706A (en) * 1997-07-11 2000-02-08 International Business Machines Corporation Parallel file system and method for multiple node file access
US5893086A (en) * 1997-07-11 1999-04-06 International Business Machines Corporation Parallel file system and method with extensible hashing
GB9811574D0 (en) * 1998-05-30 1998-07-29 Ibm Indexed file system and a method and a mechanism for accessing data records from such a system
US6144983A (en) * 1998-06-09 2000-11-07 Oracle Corporation Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system
US6173313B1 (en) * 1998-06-24 2001-01-09 Oracle Corporation Methodology for hosting distributed objects at a predetermined node in a distributed system

Also Published As

Publication number Publication date
AU2475900A (en) 2000-07-12
HK1104861A1 (de) 2008-01-25
CA2320307A1 (en) 2000-06-29
US6363396B1 (en) 2002-03-26
DE69939133D1 (de) 2008-08-28
AU770875B2 (en) 2004-03-04
WO2000038062A1 (en) 2000-06-29
JP2002533809A (ja) 2002-10-08
EP1830262B1 (de) 2008-07-16
EP1055172A1 (de) 2000-11-29
CA2320307C (en) 2003-07-22
EP1055172B1 (de) 2008-01-09
EP1830262A1 (de) 2007-09-05
DE69937946D1 (de) 2008-02-21
JP4475818B2 (ja) 2010-06-09

Similar Documents

Publication Publication Date Title
DE69937946T2 (de) Hashen von objekten mit inkrementalen änderungen
DE69930855T2 (de) Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system
DE102019133923B4 (de) Anwendungsverwendung in einem behältermanagementsystem
DE60117818T2 (de) Verwaltung des ersetzens von daten in einem zwischenspeicher auf einem knoten aufgrund von zwischenspeichern anderer knoten
DE112010003554B4 (de) Symmetrische Direktmigration von Virtuellen Maschinen
DE3200761C2 (de)
DE60302876T2 (de) Master-knotenauswahl in geclusterten knotenkonfigurationen
DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
DE60221019T2 (de) Verwaltung von serverbetriebsmitteln für hostanwendungen
DE69929095T2 (de) Verwaltung eines durch eine Mehrzahl von Knoten benutzten Betriebsmittels
DE112018006769B4 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
CN109067827A (zh) 基于Kubernetes和OpenStack容器云平台多租户构建方法、介质、设备
DE102016013577A1 (de) Systeme und Verfahren zum adaptiven Partitionieren in verteilten Cache-Speichern
DE112010003675T5 (de) Adress-Server
EP1634176B1 (de) Clusteranordnung für dezentrale lastverteilung
DE102020114272A1 (de) Einsatz von virtuellen Node Clustern in einer mehrmittelbaren Umgebung
DE112019005043T5 (de) Streamzuweisung unter verwendung von stream-guthaben
DE102005048729B4 (de) Verfahren und Systeme zum Defragmentieren eines Teilnetzraums innerhalb einer adaptiven Infrastruktur
DE112017001421T5 (de) Flexibel optimiertes Datenhandling in Systemen mit mehreren Speichern
DE112019005042T5 (de) Ressourcenzuweisung unter verwendung von wiederherstellungsguthaben
DE112011104020T5 (de) Validierung des Zugriffs auf einen gemeinsam genutzen Datensatz bei Lese- und Schreibzugriff mehrerer Anforderer
DE112018006357T5 (de) Verwaltung von daten, die bei fernkopiervorgängen über eine busschnittstelle in eine speichersteuereinheit geschrieben werden
DE102022101070A1 (de) Flexible bereitstellung von netzwerk-slices in einem mobilfunknetz durch eine netzwerkexpositionsfunktion (nef)
DE202021102315U1 (de) Flexibles Computing
DE112016005840T5 (de) Drahtloses kommunikationsgerät, drahtloses kommunikationsverfahren und programm für drahtlose kommunikation

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: DENDORFER & HERRMANN PATENTANWAELTE PARTNERSCHAFT,