DE112016003013T5 - Verteiltes speichersystem mit replika-standortauswahl - Google Patents

Verteiltes speichersystem mit replika-standortauswahl Download PDF

Info

Publication number
DE112016003013T5
DE112016003013T5 DE112016003013.4T DE112016003013T DE112016003013T5 DE 112016003013 T5 DE112016003013 T5 DE 112016003013T5 DE 112016003013 T DE112016003013 T DE 112016003013T DE 112016003013 T5 DE112016003013 T5 DE 112016003013T5
Authority
DE
Germany
Prior art keywords
clusters
distributed database
compute
computer
cluster
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
DE112016003013.4T
Other languages
English (en)
Inventor
Alexander Shraer
Arif Abdulhusein Merchant
Artyom Sharov
Brian F. Cooper
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE112016003013T5 publication Critical patent/DE112016003013T5/de
Pending legal-status Critical Current

Links

Images

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/25Integrating or interfacing systems involving database management 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
    • 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/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal

Abstract

Replikas werden in einem großen verteilten Netzwerk ausgewählt und die Rollen für diese Replikas sind identifiziert. In einem Beispiel ist eine Angabe ersichtlich, dass eine Anzahl N der Cluster eine Replika-Rolle zuzuordnen sind und eine zweite Anzahl M der Cluster, die der Replika-Rolle zugeordnet wurden, einer Voting- Rolle zuzuordnen sind. N Rechencluster werden unter Verwendung der Arbeitslastdaten ausgewählt, und M der Cluster werden einer Voting-Rolle zugeordnet.

Description

  • Das vorliegende Dokument betrifft eine Konfiguration verteilter Computerdatenbanken.
  • HINTERGRUND
  • Ein Computernetzwerk ist eine Ansammlung von Computern und sonstiger Hardware, die durch Kommunikationskanäle miteinander verbunden sind, die das Teilen von Ressourcen und Informationen ermöglichen. Kommunikationsprotokolle definieren die Regeln und Datenformate für den Austausch von Informationen innerhalb eines Computernetzwerks.
  • Bei einer verteilten Datenbank handelt es sich um eine Recheninstanz, die Daten über eine ganze Reihe von Computern hält. Diese Computer können über Computervernetzungen miteinander verbunden sein, welche es den Computern ermöglichen, miteinander zu kommunizieren und Aufgaben in Verbindung mit der Datenbank zu koordinieren. In einigen verteilten Datenbanken können die entsprechenden Computer in Rechencluster organisiert werden und den jeweiligen Rollen in der verteilten Datenbank zugeordnet werden. Diese Rollen können zum Beispiel einige der Berechtigungen und Aktivitäten des Clusters in der verteilten Datenbank beschreiben.
  • ZUSAMMENFASSUNG
  • Die hierin beschriebenen Systeme und Prozesse können verwendet werden, um eine Anzahl potentieller Vorteile wahlweise bereitzustellen. Durch das Überwachen der Aktivität der Clients und der Rechenumgebung können die Rollen für eine verteilte Datenbank auf effektive Art und Weise zugewiesen werden. Dieser Wirkungsgrad fällt im Vergleich zum Wirkungsgrad alternativer Verfahren, wie etwa Benutzerauswahl und Heuristiken unter der ausschließlichen Verwendung von Informationen, die gegenüber einem bestimmten Knoten des Systems lokal sind, höher aus. Indem zuerst ein Leader ausgewählt wird und danach sonstige Rollen auf Basis der Leaderauswahl ausgewählt werden, kann die Anzahl der Kombinationen der Rollenzuordnung im Vergleich zu anderen Verfahren, die nicht zuerst einen Leader auswählen, drastisch reduziert werden. Dies führt zu einer Verbesserung auf dem technischen Gebiet der verteilten Datenbanken.
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Systemen verkörpert sein, die eine Vielzahl von Rechenclustern beinhalten, die jeweils einen Computerspeicher und einen Computerprozessor enthalten; eine verteilte Datenbank, die auf mindestens einer Teilmenge der Vielzahl der Rechencluster ausgeführt wird und die mit einer Client-Anwendung interagiert, die auf einem Client-Computer ausgeführt wird, wobei die verteilte Datenbank konfiguriert ist, um: Daten der verteilten Datenbank, die in Shards entlang der Rechencluster der verteilten Datenbank verteilt sind, zu speichern; und um jedes Rechencluster der Rechencluster der verteilten Datenbanken gemäß einer dementsprechenden Rolle zu verwenden, die dem Rechencluster zugewiesen wird, das die Funktionen des Rechenclusters identifiziert; und um einen Aktivitätsüberwachungsservice zu verwenden, der konfiguriert ist, um: Interaktionen zwischen der Client-Anwendung und den verteilten Datenbanken zu überwachen; um auf Grundlage des Überwachens der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank die Arbeitslastdaten zu generieren, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; und um einen Aufgabenzuordnungsservice zu generieren, der konfiguriert ist, um: eine Angabe darüber zu erhalten, dass eine erste Anzahl (N) an Rechenclustern einer Replika-Rolle der verteilten Datenbank zuzuordnen sind; eine Angabe darüber zu erhalten, dass eine zweite Anzahl (M) der Rechencluster, denen Replika-Rollen zugeordnet worden sind, einer Abstimmungsrolle der verteilten Datenbanken zugeordnet werden sollen; unter Verwendung der Arbeitslastdaten N Computercluster auszuwählen, die in die verteilte Datenbank miteinbezogen werden sollen; die N ausgewählten Rechencluster einer Replika-Rolle innerhalb der verteilten Datenbank zuzuordnen; und um M den ausgewählten Rechenclustern einer Abstimmungsrolle innerhalb der verteilten Datenbank zuzuordnen. Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Verfahren, Vorrichtungen und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierten Handlungen des Verfahrens ausführen.
  • Diese und andere Ausführungsformen können als Option eins oder mehrere der folgenden Merkmale beinhalten. Der Aufgabenzuordnungsservice ist konfiguriert, um das Auswählen der N Rechencluster, die in die verteilte Datenbank miteinbezogen werden sollen, unter Verwendung der Arbeitslastdaten zu wiederholen; N der ausgewählten Rechencluster einer Replika-Rolle innerhalb der verteilten Datenbank zuzuordnen; M der ausgewählten Rechencluster zu einer Abstimmungsrolle innerhalb der verteilten Datenbank zuzuordnen.
  • Das Wiederholen findet gemäß einem Zeitplan statt, der auf zyklische Änderungen im Rahmen der Verwendung der Rechencluster basiert.
  • Um einen Hinweis zu erhalten, dass N der Rechencluster einer Replika-Rolle der verteilten Datenbank zuzuordnen sind, wird der Aufgabenzuordnungsservice konfiguriert, um eine Auszählung der Voter zu ermitteln, die erforderlich sind eine beschlussfähige Mehrheit zu bilden.
  • Um N der ausgewählten Computercluster einer Replika-Rolle innerhalb der verteilten Datenbank zuzuordnen, ist der Aufgabenzuordnungsservice konfiguriert, um N Rechencluster auf Basis eines Standorts eines Rechenclusters auszuwählen, das einer Leader-Rolle innerhalb der verteilten Datenbank zugeordnet worden ist.
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Systeme verkörpert sein, die eine Vielzahl von Rechenclustern beinhalten, die jeweils einen Computerspeicher und einen Computerprozessor enthalten; eine verteilte Datenbank, die auf mindestens einer Teilmenge der Vielzahl der Rechencluster ausgeführt wird und die mit einer Client-Anwendung interagiert, die auf einem Client-Computer ausgeführt wird, wobei die verteilte Datenbank konfiguriert ist, um: Daten der verteilten Datenbank, die in Shards entlang der Rechencluster der verteilten Datenbank verteilt sind, zu speichern; und um jedes Rechencluster der Rechencluster der verteilten Datenbanken gemäß einer dementsprechenden Rolle zu verwenden, die dem Rechencluster zugewiesen wird, das die Funktionen des Rechenclusters identifiziert; und um einen Aktivitätsüberwachungsservice zu verwenden, der konfiguriert ist, um: Interaktionen zwischen der Client-Anwendung und den verteilten Datenbanken zu überwachen; um auf Grundlage des Überwachens der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank die Arbeitslastdaten zu generieren, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; und um einen Aufgabenzuordnungsservice zu generieren, der konfiguriert ist, um: eine Angabe darüber zu erhalten, dass eine erste Anzahl (M) an Rechenclustern einer Replika-Rolle der verteilten Datenbank zuzuordnen sind; für jedes bestimmte Computercluster mindestens einiger der Computercluster: das bestimmte Rechencluster als einen Kandidatenleader in Betracht ziehen; unter Verwendung der Arbeitslastdaten (M+1)/2 Computercluster identifizieren, die über die niedrigsten (M+1)/2 Latenzen innerhalb von Rechenclustern verfügen, während Voters dem Kandidatenleader entsprechen; M-(M+1)/2 nicht identifizierter Rechencluster identifizieren, während Voters dem Kandidatenleader entsprechen; eine Anzahl (N) nicht identifizierter Computercluster als Replikas, die dem Kandidatenleader entsprechen, identifizieren; das Kandidatenleader-Rechencluster, die entsprechenden Voters, und die entsprechenden Replikas auswählen, die auf einer Metrik über dasselbe Ergebnis verfügen; dem ausgewählten Kandidatencomputercluster eine Leaderrolle innerhalb der verteilten Datenbank zuordnen; den ausgewählten M Computerclustern, die Votingrolle innerhalb der verteilten Datenbank zuordnen; und den ausgewählten N Computerclustern, die Replika-Rolle innerhalb der verteilten Datenbank zuordnen. Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Verfahren, Vorrichtungen und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierte Handlungen des Verfahrens ausführen.
  • Diese und andere Ausführungsformen können als Option eins oder mehrere der folgenden Merkmale beinhalten. der Aufgabenzuordnungsservice ist konfiguriert, um das In-Betrachtziehen der bestimmten Rechencluster als einen Kandidatenleader zu wiederholen, das Identifizieren von (M+1)/2 Computerclustern unter Verwendung von Arbeitslastdaten, welche die (M+1)/2 niedrigsten Latenzen mit bestimmten Rechenclustern aufweisen, während Voters dem entsprechenden Kandidatenleader entsprechen, das Identifizieren einer Anzahl (N) nicht identifizierter Computercluster als Replikas, die dem Kandidatenleader entsprechen, das Auswählen der Kandidatenleader-Rechencluster, der entsprechenden Voters, und der entsprechenden Replikas, die auf einer Metrik über dasselbe Ergebnis verfügen, dem ausgewählten Kandidatencomputercluster eine Leaderrolle innerhalb der verteilten Datenbank zuordnen, den ausgewählten M Computerclustern, die Votingrolle innerhalb der verteilten Datenbank zuordnen und den ausgewählten N Computerclustern, die Replika-Rolle innerhalb der verteilten Datenbank zuordnen.
  • Das Wiederholen findet gemäß einem Zeitplan statt, der auf zyklische Änderungen im Rahmen der Verwendung der Rechencluster basiert.
  • Um eine Anzahl (N) nicht identifizierter Rechencluster als Replikas zu identifizieren, welche einem Kandidatenleader entsprechen, wird der Aufgabenzuordnungsservice konfiguriert, um eine Auszählung der Voter zu ermitteln, die erforderlich sind, um eine beschlussfähige Mehrheit zu bilden.
  • Um eine Anzahl (N) nicht identifizierter Rechencluster als Replikas zu identifizieren, welche einem Kandidatenleader entsprechen, wird der Aufgabenzuordnungsservice konfiguriert, um N Rechencluster auf Basis eines Standorts eines Rechenclusters auszuwählen, das einer Leader-Rolle innerhalb der verteilten Datenbank zugeordnet worden ist.
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Systeme verkörpert sein, die eine Vielzahl von Rechenclustern beinhalten, die jeweils einen Computerspeicher und einen Computerprozessor enthalten; eine verteilte Datenbank, die auf mindestens einer Teilmenge der Vielzahl der Rechencluster ausgeführt wird und die mit einer Client-Anwendung interagiert, die auf einem Client Computer ausgeführt wird, wobei die verteilte Datenbank konfiguriert ist, um: Daten der verteilten Datenbank, die in Shards entlang der Rechencluster der verteilten Datenbank verteilt sind, zu speichern; und um jedes Rechencluster der Rechencluster der verteilten Datenbanken gemäß einer dementsprechenden Rolle zu verwenden, die dem Rechencluster zugewiesen wird, das die Funktionen des Rechenclusters identifiziert; und um einen Aufgabenüberwachungsservice zu verwenden der konfiguriert ist, um: eine Angabe darüber zu erhalten, dass eine erste Anzahl (M) an Rechenclustern einer Voting-Rolle der verteilten Datenbank zuzuordnen sind; für jedes bestimmte Computercluster mindestens einiger der Computercluster, das bestimmte Rechencluster als einen Kandidatenleader in Betracht ziehen und M Computercluster identifizieren, die über die M niedrigsten Latenzen innerhalb des bestimmten Kandidaten-Leader-Rechenclusters verfügen; das Kandidaten-Rechencluster und die damit in Verbindung stehenden M Rechencluster identifizieren, die auf einer Metrik über das beste Ergebnis verfügen; und den identifizierten M Computerclustern die Votingrolle zuordnen. Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Verfahren, Vorrichtungen und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierte Handlungen des Verfahrens ausführen.
  • Diese und andere Ausführungsformen können als Option eins oder mehrere der folgenden Merkmale beinhalten. Der Aufgabenzuordnungsservice ist ferner konfiguriert, um eine Angabe zu erhalten, dass eine Anzahl (N) von Rechenclustern einer Replika-Rolle der verteilten Datenbank zugeordnet werden sollten; N Computercluster zu identifizieren, die nicht einer Rolle der verteilten Datenbank zugeordnet worden sind; und um N Computercluster einer Replika-Rolle zuzuordnen.
  • Der Aufgabenzuordnungsservice ist konfiguriert, um das In-Betracht-Ziehen, das Identifizieren und das Zuordnen zu wiederholen.
  • Der Aufgabenzuordnungsservice ist konfiguriert, um das Einem-Zeitplan-Zuordnen, das auf zyklische Änderungen im Rahmen der Anwendungen der Rechencluster beruht, zu wiederholen.
  • Um ein bestimmtes Rechencluster als einen Kandidatenleader in Betracht zu ziehen und um M Computercluster, die über niedrigste Latenzen mit dem bestimmten Kandidatenleader-Rechencluster verfügen, zu identifizieren, ist der Aufgabenzuordnungsservice konfiguriert, um Latenzen nur für eine Teilmenge von Operationen in Betracht zu ziehen, die in den Rechenclustern, welche die verteilte Datenbank ausführen, durchgeführt werden können.
  • Bei der niedrigsten Latenz handelt es sich um eine Tail-Latenz, innerhalb der mindestens ein Grenzwertanteil der zufälligen Hin- und Rücklaufzeiten fallen.
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Spezifikation beschriebenen Gegenstands in Systeme verkörpert sein, die eine Vielzahl von Rechenclustern beinhalten, die jeweils einen Computerspeicher und einen Computerprozessor enthalten; eine verteilte Datenbank, die auf mindestens einer Teilmenge der Vielzahl der Rechencluster ausgeführt wird und die mit einer Client-Anwendung interagiert, die auf einem Client Computer ausgeführt wird, wobei die verteilte Datenbank konfiguriert ist, um: Daten der verteilten Datenbank, die in Shards entlang der Rechencluster der verteilten Datenbank verteilt sind, zu speichern; und um jedes Rechencluster der Rechencluster der verteilten Datenbanken gemäß einer dementsprechenden Rolle zu verwenden, die dem Rechencluster zugewiesen wird, das die Funktionen des Rechenclusters identifiziert; ein Aktivitätsüberwachungsservice der konfiguriert ist, um: Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank zu überwachen; und um aus der Überwachung der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank Arbeitslastdaten zu generieren, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; und einen Aufgabenzuordnungsservice, der konfiguriert ist, um ein bestimmtes Rechencluster auf Basis von Arbeitslastdaten einer Rolle in der verteilten Datenbank zuzuordnen. Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Verfahren, Vorrichtungen und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierte Handlungen des Verfahrens ausführen.
  • Diese und andere Ausführungsformen können als Option eins oder mehrere der folgenden Merkmale beinhalten. Um auf Basis der Arbeitslastdaten ein bestimmtes Rechencluster einer Leader Rolle in der verteilten Datenbank zuzuordnen, wird der Aufgabenzuordnungsservice konfiguriert, um: Cluster zu finden, die über eine niedrigste Latenz verfügen, um Prozesse, die in den Arbeitslastdaten identifiziert werden, zu Ende zu führen.
  • Um die Cluster zu finden, die über die niedrigste Latenz verfügen, um Prozesse zu Ende zu führen, die in den Arbeitslastdaten identifiziert worden sind, wird der Aufgabenzuordnungsservice konfiguriert, um: eine Frequenz für jeden Prozess zu identifizieren; um einen Latenzwert für jeden Prozess für jedes Rechencluster zu identifizieren; und für jedes Rechencluster einen gewichteten Latenzwert zu finden, der eine Aggregation der Latenzwerte für den Cluster miteinbezieht, worin die Latenzwerte in der Aggregation der Latenzwerte entsprechend der Frequenz der entsprechenden Prozesse gewichtet worden ist.
  • Die Aktivitätsüberwachungsvorrichtung ist konfiguriert, um das Überwachen und das Generieren zu wiederholen, worin der Aufgabenzuordnungsservice konfiguriert ist, um das Zuordnen zu wiederholen.
  • Um das Zuordnen zu wiederholen, ist der Aufgabenzuordnungsservice konfiguriert, um ein unterschiedliches bestimmtes Rechencluster der Leaderrolle auf Basis der Arbeitslastdaten in der verteilten Datenbank zuzuordnen.
  • Die Aktivitätsüberwachungsvorrichtung ist konfiguriert, um das Überwachen und das Generieren zu wiederholen, worin der Aufgabenzuordnungsservice konfiguriert ist, um das Einem-Zeitplan-Zuordnen, das auf zyklische Änderungen im Rahmen der Anwendungen der Rechencluster beruht, zu wiederholen.
  • Der Aktivitätsüberwachungsservice und der Aufgabenzuordnungsservice laufen auf einem oder mehreren Rechenclustern.
  • Der Client-Computer ist einer der Rechencluster.
  • Sonstige Merkmale, Aspekte und potentielle Vorteile werden aus der beiliegenden Beschreibung und den beiliegenden Figuren ersichtlich.
  • Figurenliste
    • 1 ist ein Blockdiagramm einer exemplarischen verteilten Rechenumgebung, die verwendet werden kann, um verteilte Datenbanken zu unterstützen.
    • 2 ist ein Tabellenblatt exemplarischer Berechnungen, die verwendet werden, um Kommunikationsverzögerungen zu ermitteln.
    • 3 ist ein Flussdiagramm eines exemplarischen Flusses für das Auswählen eines Leaders für eine verteilte Datenbank.
    • 4 ist ein Blockdiagramm einer exemplarischen verteilten Rechenumgebung, in der einige Rechencluster Kandidaten für Replika und Votingrollen innerhalb einer verteilten Datenbank sind.
    • 5A ist ein Flussdiagramm eines exemplarischen Flusses für das Auswählen von Rechenclustern für Replika und Votingrollen innerhalb einer verteilten Datenbank.
    • 5B zeigt Gleichungen, die beim Auswählen von Computerclustern für Replika und Votingrollen innerhalb der verteilten Datenbank verwendet werden können.
    • 6 ist ein Blockdiagramm einer exemplarischen verteilten Rechenumgebung, in der einige Rechencluster für Replika und Votingrollen innerhalb einer verteilten Datenbank ausgewählt werden.
    • 7 ist ein Flussdiagramm eines exemplarischen Flusses für das regelmäßige Auswählen von Rechenclustern für Rollen innerhalb einer verteilten Datenbank.
    • 8A ist ein Flussdiagramm eines exemplarischen Flusses, der verwendet werden kann, um Replika-Standorte und -Rollen zu identifizieren.
    • 8B ist ein Beispiel eines Pseudocodes, der verwendet werden kann, um die in 8A dargestellten Operationen zu implementieren.
    • 9 sind exemplarische Formeln des in 8B dargestellten Verfahrens.
    • 10A ist ein Flussdiagramm eines exemplarischen Flusses, der verwendet werden kann, um Replika-Standorte und -Rollen zu identifizieren.
    • 10B ist ein Beispiel eines Pseudocodes, der verwendet werden kann, um die in 10A dargestellten Operationen zu implementieren.
    • 11A ist ein Flussdiagramm eines exemplarischen Flusses, der verwendet werden kann, um Replika-Standorte und -Rollen zu identifizieren.
    • 11B ist ein Beispiel eines Pseudocodes, der verwendet werden kann, um die in 11A dargestellten Operationen zu implementieren.
    • 12 ist ein schematisches Diagramm, das ein Beispiel eines Rechensystems darstellt.
  • Gleiche Referenzsymbole in den unterschiedlichen Zeichnungen weisen auf gleiche Elemente hin.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Verteilte Speichersysteme werden auf breiter Basis in der Cloud eingesetzt, sowohl innerhalb Datenzentren als auch zu Replikationszwecken innerhalb von Datenzentren. Viele verteilte Datenbanken ordnen den Computern, die die Datenbank ausmachen Rollen zu. Ein derartiges Beispiel ist das Paxos-Protokoll, innerhalb dessen die verteilte Datenbank Knoten im System als „Replika“ verwendet, die einige oder alle der verteilten Datenbank replizieren. Darüber hinaus kann die verteilte Datenbank einige oder alle der Knoten gemäß den entsprechenden Rollen verwenden, die vom Paxos-Protokoll, das das Funktionen der Knoten identifiziert, definiert werden. Die Rollen lauten „Client“, „Proposer“, „Voter“, „Learner“ und „Leader“. Clients können mit der verteilten Datenbank durch das Stellen von Anfragen an einen Proposer der verteilten Datenbank interagieren. Proposer können eine Aktion in der verteilten Datenbank vorschlagen, zum Beispiel eine Aktualisierung oder eine Abfrage der gespeicherten Daten. Die Voters (manchmal auch Akzeptoren genannt) können die vorgeschlagenen Aktionen von den Proposers annehmen oder ablehnen. Falls eine beschlussfähige Mehrheit einen Vorschlag annimmt, sollte die verteilte Datenbank die vorgeschlagene Aktion zu Ende bringen. Bei einer beschlussfähigen Mehrheit kann es sich einfach die Mehrzahl der Voters handeln oder es kann, je nach Konfiguration der verteilten Datenbank, eine unterschiedliche Anzahl von Voters erforderlich sein. Learner handeln gemäß Aktionen, denen von der beschlussfähigen Mehrheit zugestimmt worden ist. Bei dem Leader handelt es sich um einen Proposer, und in vielen Fällen um den einzigen Proposer, der in der Lage ist, Aktionen erfolgreich vorzuschlagen, die von einer beschlussfähigen Mehrheit angenommen werden.
  • Dieses Dokument bespricht eine Auswahl von Replikas in einem großen verteilten Netzwerk und die Auswahl der Rollen für diese Replikas. In einem Beispiel wird ein Leader aus Kandidaten-Rechenclusters (oder Servern, Datenzentren, usw.) ausgewählt. Um diese Auswahl zu treffen, prognostiziert oder überwacht eine Aktivitätsüberwachungsvorrichtung die Arbeitslast des einen oder der mehreren Clients. Unterschiedlichen Aktivitäten der Arbeitslast werden dementsprechende Gewichtungen zugeordnet. Die Verzögerung beim Durchführen der beantragten Aktivitäten, die von diesen Gewichtungen modifiziert werden, wird gefunden und der Kandidatenleader mit der am niedrigsten gewichteten Verzögerung wird als der Leader ausgewählt. In einem anderen Beispiel wird jeder Kandidatenlieder überprüft und eine Liste von Kandidatenreplikas wird im Netzwerk identifiziert. Um einen Leader und Replikas von Kandidaten auszuwählen wird der Kandidatenleader, der über Replikas mit der geringsten Kommunikationsverzögerung verfügt, mit dem Leader identifiziert. Von diesen Replikas, kann M als Votingreplikas zugeordnet werden. In einem noch weiteren Beispiel werden zwei Heuristiken unter Verwendung globaler Informationen über die Rechenumgebung verwendet und das beste Ergebnis der Heuristiken wird ausgewählt.
  • In einigen Konfigurationen können diese Verfahren eine Aktivitätsüberwachungsvorrichtung verwenden, die in der Lage ist, Messungen der verteilten Computersysteme einzusammeln und Metriken für das Verwenden in der Konfiguration und der Ausführung der Anwendungen, die auf dem System laufen, bereitzustellen. Um beispielsweise Leader, wie vorstehend beschrieben zu identifizieren, kann die Aktivitätsüberwachungsvorrichtung die Aktivität auf einer Client-Anwendung überwachen und/oder prognostizieren. Auf Basis dieser Aktivitätsmessung kann eine präzise oder wahrscheinliche Messung verwendet werden, um einen Leader korrekt auszuwählen. Das Verwenden einer derartigen Aktivitätsüberwachungsvorrichtung kann zum Beispiel ein präziseres Ergebnis als örtliche Heuristiktests, die menschliche Intuition der Netzwerkadministratoren oder die zufällige Auswahl bereitstellen. In einigen Fällen kann ein Administrator die Gewichtungen der Arbeitslast anpassen, um eine erwünschte Eigenschaft oder Konfiguration zu erreichen. Falls der Administrator zum Beispiel weiß, dass eine Commit-Latenz von besonderer Bedeutung ist, kann die Gewichtung angepasst werden, um Commits zum Beispiel in Betracht zu ziehen.
  • 1 ist ein Blockdiagramm einer exemplarischen verteilten Rechenumgebung 100, die verwendet werden kann, um verteilte Datenbanken zu unterstützen. Im Allgemeinen können verteilte Datenbanken Daten in Shards speichern, die unter den Rechenclustern der verteilten Rechenumgebung 100, die in der verteilten Datenbank enthalten sind, verteilt werden. Die verteilte Rechenumgebung 100 wird auf schematische Art und Weise mit Knoten, welche die Rechencluster 102-120 repräsentieren und die Kanten, die Kommunikationsverbindungen zwischen den Rechenclustern 102-120 repräsentieren, dargestellt. Eine Aktivitätsüberwachungsvorrichtung 122 kann die verteilte Rechenumgebung 100 überwachen (z. B. Interaktionen zwischen Clients und der verteilten Datenbank, Kommunikationsverzögerungen zwischen Elementen der verteilten Rechenumgebung) und Metriken für das Verwenden in der Konfiguration und dem Ausführen von Anwendungen, die auf der verteilten Rechenumgebung 100 laufen, bereitstellen. Ein Aufgabenzuordnungsservice 124 kann die Rechencluster möglicherweise unter Verwendung von Informationen von der Aktivitätsüberwachungsvorrichtung 122 unterschiedlichen Rollen innerhalb einer verteilten Datenbank zuordnen, die auf der verteilten Rechenumgebung 100 ausgeführt wird. In einigen Konfigurationen handelt es sich bei der Aktivitätsüberwachungsvorrichtung 122 und/oder dem Aufgabenzuordnungsservice 124 um Softwareservices, die auf einem oder mehreren Rechenclustern 102-120 laufen.
  • Die Rechencluster 102-120 repräsentieren Rechencluster, Netzwerkserver, Datenzentren, einen oder mehrere Computer, oder sonstige dementsprechende Rechensysteme, die in der Lage sind, zusammenzuarbeiten, um das verteilte Rechenumfeld 100 zu generieren und um Rechenaufgaben auszuführen, wie etwa das Ausführen von Softwareanwendungen, das Erstellen virtueller Maschinen, usw. Die Rechencluster 102-120 können aus heterogener oder homogener Rechenhardware bestehen, die einen computerlesbaren Speicher, Prozessoren, und eine Netzwerkinfrastruktur enthalten, um die Kommunikation innerhalb eines Clusters und zwischen Clustern 102-120 zu erleichtern.
  • Die verteilte Rechenumgebung 100 kann auch eine beliebige Anzahl von Clients beinhalten und/oder mit diesen interagieren, wobei Clients 126 und 128 hier ersichtlich sind. Bei den Clients 126 und 128 kann es sich um Rechensysteme handeln, die kommunikationstechnisch an die verteilte Rechenumgebung 100 gekoppelt sind und/oder Rechencluster einer verteilten Rechenumgebung 100 sein können. In jedem Fall können Clients 126 und 128 mit der verteilten Rechenumgebung 100 interagieren, um verteilte Rechenoperationen durchzuführen. In diesem Beispiel handelt es sich bei Clients 126 und 128 um zwei Clients, die mit derselben verteilten Datenbank in Verbindung gebracht werden, die auf dem verteilten Rechensystem 100 betrieben wird. Mehr oder weniger Clients können mit einer verteilten Datenbank einschließlich eines einzelnen Clients für eine bestimmte Datenbank in Verbindung gebracht werden. Ferner können die Anzahl und der Standort der Clients sich im Laufe der Zeit ändern, wobei Clients hinzugefügt, bewegt, oder entfernt werden.
  • Die Clients 126 und/oder 128 können Elemente eines sonstigen Rechensystems oder einer Anwendung sein, und in einigen dieser Fälle können die Clients 126 und/oder 128 andere nicht clientbezogene Aktivitäten durchführen. Zum Beispiel kann ein Webserver (nicht dargestellt) Webseiten an viele Browser (nicht dargestellt) über das Internet bedienen. Um den Inhalt dieser Webseiten zu verwalten, kann der Webserver eine verteilte Datenbank verwenden, die auf einer Rechenumgebung 100 läuft. Um auf die verteilte Datenbank zuzugreifen, kann der Webserver mit dem Client 126 kommunizieren oder zum Beispiel als Client 126 dienen.
  • Der Client 126 und 128 führen Arbeitsladungen der Anfragen ihrer zugewiesenen verteilten Datenbank aus. Diese Arbeitslast beinhaltet jegliche technologisch angebrachten Verfahren für das Interagieren mit einer verteilten Datenbank, einschließlich aber nicht beschränkt auf das Lesen, Schreiben und das Entfernen von Daten; das Interpretieren von Fragen; usw. Die Aktivitätsüberwachungsvorrichtung 122 kann konfiguriert werden, um die Clients 126 und 128 zu überwachen, um die Arbeitslastdaten 130 und 132 zu generieren, welche die jeweiligen Interaktionen mit der verteilten Datenbank durch die Clients 126 und 128 beschreibt. Die Arbeitslastdaten 130 und 132 können zum Beispiel die Form von Interaktionslogs mit der verteilten Datenbank, zusammenfassenden Informationen, wie etwa Zählungen der Arten von Interaktionen, Einstufungen der Arbeitslast gemäß einem Satz der definierten Arbeitslastarten, usw. annehmen.
  • Für jeden der Clients der verteilten Datenbanken (z. B. eine für Client 126 und 128, und für sonstige verteilte Datenbanken, nicht dargestellt) kann der Aufgabenzuordnungsservice einige der Rechencluster 102-120 zuordnen, damit sie Replikas, Voters, oder ein Leader sind. Diese verteilten Datenbanken müssen nicht alle Rechencluster 102-120 beinhalten, und in einigen Konfigurationen können sie mit einer beliebigen technologisch sinnvollen Anzahl von Clients in Verbindung gebracht werden. Für die Folgezeit und zu Klarstellungszwecken wird dieses Dokument das Auswählen und das Zuordnen der verteilten Datenbank, die mit den Clients 126 und 128 Verbindung gebracht wird, erörtern. Es sei jedoch darauf hingewiesen, dass diese Arten des Auswählens und des Zuordnens für viele verteilte Datenbanken, möglicherweise auch gleichzeitig, durchgeführt werden können.
  • Wie nachfolgend beschrieben wird, wird ein Rechencluster 102-120 ausgewählt und der Leader-Rolle zugeordnet. Danach werden N andere Rechencluster 102-120 ausgewählt und zugeordnet, um Replikas zu sein und M dieser N replikazugeordneten Rechencluster werden ausgewählt und zugeordnet, um Voters zu sein.
  • Um den Leader auszuwählen, kann die Aktivitätsüberwachungsvorrichtung 122 auf die Arbeitslast 130 und 132 zugreifen und/oder diese generieren. Die Aktivitätsüberwachungsvorrichtung 122 kann dann die Frequenz jedes Verfahrens, das von den Clients 126 und 128 aufgerufen wird, ermitteln und prognostizieren. Der Aufgabenzuordnungsservice 124 kann dann diese Frequenzen verwenden, um die Verzögerung jedes Rechenclusters 102-120 bei der Durchführung der Operationen für die Clients 126 und 128 gewichten und den Rechencluster 102-120 mit der am niedrigsten gewichteten Verzögerung als den Leader auswählen.
  • Zusätzlich zu den nachstehend erörterten Berechnungen kann auf Replika- und Rollenvergabe zusätzlichen Einschränkungen unterliegen. Zum Beispiel kann eine Einschränkung, die das Minimum der Ressourcen der Zentralverarbeitungseinheits- (CPU)-Ressourcen definiert, so eingestellt werden, dass ein Leader in der Lage ist, den Anforderungen des Leading gerecht zu werden. In einigen Fällen kann es wünschenswert sein, die Latenz für nur eine Teilmenge der Operationen in Betracht zu ziehen (z. B. nur Writes). Um dies zu tun, können einige Operationen von der Betrachtung ausgenommen werden; zusätzliche Gewichtungen können für unterschiedliche Operationen oder Arten von Operationen, usw. verwendet werden.
  • 2 ist ein Tabellenblatt 200 exemplarischer Berechnungen, die verwendet werden, um Kommunikationsverzögerungen zu ermitteln. Zum Beispiel kann das Tabellenblatt 200 vom Aufgabenzuordnungsservice 124, während es ein Rechencluster 102-120 auswählt, um ein Leader einer verteilten Datenbank zu sein, berechnet werden oder interne Berechnungen darstellen, die vom selben Aufgabenzuordnungsservice durchgeführt werden. Aus Gründen der Übersichtlichkeit werden Daten für einen einzelnen Client 126 der verteilten Datenbank dargestellt, obwohl diese Daten auf mehrere Clients, einschließlich aller Clients einer verteilten Datenbank, erweitert werden können.
  • Zellen 202 zeigen die Verzögerung, die mit den Verfahren in Verbindung gebracht werden, die von den Clients 126 und 128 der Rechencluster 102-120 aufgerufen werden können (einige Reihen wurden aus Gründen der Übersichtlichkeit ausgeschlossen). Die Verfahren 1-4 können beliebige sinnvolle Verfahren, wie etwa Datenlesen, Datenschreiben, Datenkopieren, usw. repräsentieren. Falls der Client 126 in diesem Beispiel Verfahren 1 zu Rechencluster 106 aufruft, wird die entsprechende Verzögerung als 28 Millisekunden (ms) angezeigt. Diese 28 ms Verzögerung kann die Verzögerung zwischen dem Zeitpunkt, an dem Client 126 das Verfahren aufruft, und dem Zeitpunkt, an dem das Verfahren beendet wurde, zwischen dem Zeitpunkt des Aufrufs und des Empfangs der Bestätigung vom Client 126, oder einer anderen technologisch angemessenen Maßnahme sein. Dies bedeutet, dass die Verzögerung Zeit für das Verarbeiten des Verfahrens, Zeit für Netzwerkverzögerungen (einschließlich Routing durch sonstige Computercluster) und sonstige Verzögerungen beinhalten kann.
  • Zellen 204 zeigen eine angemessene oder prognostizierte Frequenz der Verfahren, die der Client 126 aufrufen wird oder aufgerufen hat. In diesem Beispiel repräsentiert die Anzahl von Malen je Sekunde, dass ein Verfahren für ein Probefenster von einer Minute als bemessen oder prognostiziert aufgerufen wurde. Zum Beispiel ruft Client 126 in Probe 2 das Verfahren 2 0,4 Mal pro Sekunde auf. Es kann jedoch jedes technologisch sinnvolle Schema verwendet werden, um zu zeigen, dass relative Frequenzen angewendet werden können. Die Frequenzen können normalisiert werden, um zu einem bestimmten Wert (z. B. 1 oder 100) hinzuzufügen. In diesem Beispiel kann Probe 1 als naive Standardeinstellung ausgegeben werden, die zum Beispiel verwendet werden kann, wenn nichts über Client 126 bekannt ist. In der Probe 1 wird jedem Verfahren derselbe Wert von 1 zugeordnet, der eine standardmäßige Annahme repräsentiert, dass jedes Verfahren dieselbe Anzahl von Malen aufgerufen wird. In einigen Konfigurationen können verschiedene Standards verwendet werden. Zum Beispiel können Clients einer ähnlichen Klasse zum Client 126 überprüft werden und eine Wahrscheinlichkeitsverteilung auf Basis dieser ähnlichen erfassten Aktivität des Clients kann verwendet werden. Probe 2 und Probe 3 repräsentieren in diesem Beispiel gemessene Verfahrensaufrufe, die von Client 126 gemacht werden
  • Zellen 206 zeigen die gesamte Verzögerung aller Verfahren, die gemäß einer Probe gewichtet worden sind. Um diesen Gesamtwert für jedes Rechencluster 102-120 zu finden, wird die Verzögerung für jedes Verfahren gemäß dem entsprechenden Gewicht in der Probe gewichtet und die Aggregation der gewichteten Verzögerungen wird gefunden. Die Berechnungen für Rechencluster 110 unter der Gewichtung von Probe 2 werden unten anhand eines Beispiels dargestellt: Gesamtverzögerung = ( Verfahren  1  Verzögerung * Probe  2  Verfahren 1 Frequenz ) + ( Verfahren 2 Verzögerung * Probe 2 Verfahren 2 Frequenz ) + ( Verfahren 3  Verzögerung * Probe 2 Verfahren 3 Frequenz ) + ( Verfahren 4 Verzögerung * Probe 2  Verfahre n 4 Frequenz )
    Figure DE112016003013T5_0001
    Gesamtverzögerung = ( 66 * 0,5 ) + ( 11 * 0,4 ) + ( 76 * 1,3 ) + ( 59 * 1,6 )
    Figure DE112016003013T5_0002
    Gesamtverzögerung = 230,6
    Figure DE112016003013T5_0003
  • Andere Arten von Aggregationen sind möglich. Andere Beispiele beinhalten einen Mittelwert, einen Maximalwert oder jede Art von Aggregation, die für eine Teilmenge der Operationen betrieben wird. Bei einer derartigen Teilmenge handelt es sich zum Beispiel nur um zustandsverändernde oder schreibgeschützte Operationen.
  • Wie vorausgehend beschrieben, können die im Tabellenblatt 200 dargestellten Berechnungen verwendet werden, um die Rechencluster 102-120 zu identifizieren, die für eine gegebene Arbeitslast 130 zu einer minimalen Gesamtverzögerung führen würden. Als solche werden minimalen Gesamtverzögerungen unter Gewicht 1, 2 und 3 in den Zellen 206 fett gedruckt dargestellt. Wie ersichtlich handelt es sich bei den Rechenclustern 102-120 mit den minimalen Gesamtverzögerungen für Gewicht 1, 2, und 3 jeweils um Rechencluster 114, 112 und 108. Aus Übersichtlichkeitsgründen wird die Leader-Auswahl, die folgt, mit Bezug auf Probe 3 beschrieben, im Rahmen der Rechencluster 108 über die am geringsten gewichtete Verzögerung verfügt.
  • 3 ist ein Flussdiagramm eines exemplarischen Flusses 300 für das Auswählen eines Leaders für eine verteilte Datenbank. Aus Übersichtlichkeitsgründen wird Fluss 300 mit Bezug auf die verteilte Rechenumgebung 100 und die Daten beschrieben, die mit Probe 3 im Tabellenblatt 200 in Beziehung stehen. Andere Systeme und andere Daten können jedoch verwendet werden, um den Fluss 300 oder ein ähnliches Verfahren durchzuführen.
  • Der Fluss 300 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um ein Rechencluster 102-120 als eine Leader-Rolle einer verteilten Datenbank, die von Client 126 verwendet wird, auszuwählen. Im Allgemeinen kann dieser Leader auf Basis der erwarteten Verzögerung ausgewählt werden, die erforderlich ist, um die in der Arbeitslast 130 identifizierten Interaktionen durchzuführen. Durch das Zugreifen auf Daten über verteilte Rechenumgebung 110 ist die Aktivitätsüberwachungsvorrichtung in der Lage, die Arten der Verfahren in der Arbeitslast 130 präzise zu identifizieren und eine Leaderauswahl auf präzisere Art und Weise durchzuführen, als beispielsweise die Auswahlarten auf Basis unvollständiger oder beeinflusster Informationen.
  • Es erfolgt ein Zugriff auf die Arbeitslastdaten 302. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 die Arbeitslastdaten 130 generieren, welche die historischen Interaktionen zwischen dem Client 126 und der verteilten Datenbank beschreibt. Diese Arbeitslastdaten 130 können zum Beispiel analysiert werden, um die Arten von Interaktionen zu verstehen, die der Client 126 wahrscheinlich mit der verteilten Datenbank auf Basis gegenwärtigen oder vergangenen Verhaltens des Clients 126 hat. In einigen Fällen kann die Aktivitätsüberwachungsvorrichtung 122 Verfahrensaufrufe beobachten und protokollieren, die von Client 126 zur verteilten Datenbank gemacht wurden. Falls historische Datensätze, wie die Protokolle nicht zur Verfügung stehen (z. B. es wird ein neuer Client hinzugefügt oder es wird eine neue verteilte Datenbank erstellt) kann die Aktivitätsüberwachungsvorrichtung die prognostizierten Arbeitslastdaten erstellen. Falls zum Beispiel eine Client-Anwendung historisch für einen bestimmten Zweck verwendet worden ist und der Client 126 eine neue Kopie desselben Clients für denselben Zweck instanziiert, kann die Aktivitätsüberwachungsvorrichtung 122 die alten Arbeitslastdaten vom anderen Client verwenden und sie zum Client 126 zu diesen Zwecken anwenden.
  • Es werden Verfahrensfrequenzen generiert 304. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 die historischen Daten für die Arbeitslast 130 analysieren, um Instanzen zu identifizieren, in denen Client 126 ein Verfahren der verteilten Datenbank zusammen mit zugewiesenen Zeitstempeln, verwendeten Parametern, usw. aufruft. Die Aktivitätsüberwachungsvorrichtung 122 kann Daten generieren, welche die Frequenz repräsentieren, mit der der Client 126 jedes Verfahren aufruft. Exemplarische Daten dieser Art werden in den Zellen 204 des Tabellenblatts 200 dargestellt.
  • Es wird auf Verfahrensverzögerungen zugegriffen 306. Zum Beispiel können von dem anderen Service mittels der Aktivitätsüberwachungsvorrichtung 122 Informationen zur Verzögerung, die für Rechencluster 102-120 erforderlich sind, um Verfahren der verteilten Datenbank zu Ende zu bringen, generiert werden oder es kann darauf zugegriffen werden. Diese Verzögerung kann zum Beispiel Netzwerkverzögerungen beinhalten, die durch die Kommunikation zwischen dem Client 126 und den Clustern 102-120 und der Abwicklungsverzögerung verursacht wird, die vom Cluster erforderlich ist, um das erforderliche Verfahren durchzuführen. In einigen Fällen können unregelmäßige Netzwerktopologien, Rechenressourcen und Ladedifferenziale dazu führen, dass jedes Cluster 102-120 über Verzögerungswerte verfügt, die sich von den Verzögerungswerten der anderen Cluster unterscheiden. Exemplarische Daten dieser Art werden in den Zellen 202 des Tabellenblatts 200 dargestellt.
  • Es werden die gesamten gewichteten minimalen Verzögerungen gefunden 308. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 für jedes der Rechencluster 102-120 der verteilten Rechenumgebung 100 eine gesamte gewichtete Verzögerung finden. Um diese Verzögerung zu finden, kann die Aktivitätsüberwachungsvorrichtung 122 jede Verfahrensverzögerung mit der Frequenz des Verfahrens multiplizieren und diese gewichteten Verzögerungen summieren. Exemplarische Daten dieser Art werden in Zellen 206 des Tabellenblatts 200 dargestellt.
  • Ein Rechencluster wird einer Leader-Rolle 310 zugewiesen. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 die geringste gesamte gewichtete Verzögerung finden und der Aufgabenzuordnungsservice 124 kann das zugehörige Rechencluster 102-120 der Leader-Rolle für die verteilte Datenbank zuordnen. Im Beispiel der Probe 3 des Tabellenblatts 200 beträgt die gesamte gewichtete Verzögerung 63,3 ms, die mit dem Rechencluster 108 in Verbindung gebracht werden. Als solcher kann der Aufgabenzuordnungsservice 124 Rechencluster 108 der Leader-Rolle zuordnen.
  • 4 ist ein Blockdiagramm der exemplarischen verteilten Rechenumgebung 100, in der einige Rechencluster Kandidaten für Replika und Votingrollen innerhalb einer verteilten Datenbank sind. Wie ersichtlich wurde Rechencluster 108 zur Leader-Rolle für eine verteilte Datenbank zugeordnet, auf einer verteilten Rechenumgebung 100 läuft. In diesem Beispiel wurde die Leader-Rolle gemäß einem Prozess ausgewählt, in dem eine minimale gesamte gewichtete Verzögerung für eine gegebene Arbeitslast gefunden wird. Es könnten jedoch auch sonstige Verfahren für das Finden und Zuordnen eines Leaders könnten verwendet werden. Zum Beispiel könnte ein menschlicher Administrator den Leader auswählen, es könnte eine unterschiedliche Metrik erstellt werden, um einen Leader zu finden, usw. Sobald einige oder alle Rollen ausgewählt worden sind, kann die verteilte Datenbank damit beginnen, Daten der verteilten Datenbank in Shards zu speichern, die unter den Rechenclustern 102-120 verteilt sind.
  • Zusätzlich zur Verfügung über eine Leaderrolle kann der Aufgabenzuordnungsservice 124 sonstige Rechencluster 102-106, 110-120 anderen Rollen der verteilten Datenbank zuordnen. In diesem Beispiel wird die verteilte Datenbank 5 gesamte Replika beinhalten, wobei 3 der Replikas über eine Voting-Rolle verfügen. Der Leader in diesem Beispiel zählt als eine Voting-Replika. In einigen Beispielen können Rechencluster andere Clients (z. B. Client 128) der anderen verteilten Datenbank hosten, wobei der Client dieser verteilten Datenbank auf einem der Rechencluster laufen kann, und/oder die Aktivitätsüberwachungsvorrichtung 122 und/oder der Auftragszuordnungsservice 124 können auf einem oder mehreren Rechenclustern der verteilten Rechenumgebung 100 laufen.
  • Nachdem der Leader ausgewählt worden ist und nachdem spezifiziert wurde, dass die verteilte Datenbank über fünf Replikas verfügen sollte, wobei es sich bei drei davon um Voting-Replikas handelt, kann die Aktivitätsüberwachungsvorrichtung 122 und der Aufgabenzuordnungsservice 124 ermitteln, welche der anderen Rechencluster 102-106; 110-120 den Replika und den Voting-Rollen zugeordnet werden sollen. In diesem Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 die Hin und Rücklaufzeiten (RTT) der Kommunikation zwischen dem Leader-Rechencluster 108 und den anderen Rechenclustern 102-106; 110-120 finden. Auf Basis der RTTs, kann der Aufgabenzuordnungsservice den zwei Computerclustern 102-106; 110-120 mit den niedrigsten RTTs eine Votingrolle in der verteilten Datenbank zuordnen. Der Aufgabenzuordnungsservice den zwei Computerclustern 102-106; 110-120 mit den nächsten zwei niedrigsten RTTs eine Replika-Rolle innerhalb der verteilten Datenbank zuordnen. Indem beides durchgeführt wird kann der Aufgabenzuordnungsservice 124 insgesamt fünf Replikas (zwei Replika-Rollen, zwei Voting-Rollen, eine Leader-Rolle) mit drei Voting-Replikas (zwei Voting-Rollen, eine Leader-Rolle) zuordnen.
  • 5A ist ein Flussdiagramm eines exemplarischen Flusses 500 für das Auswählen von Rechenclustern für Replika und Votingrollen innerhalb einer verteilten Datenbank. Aus Gründen der Übersichtlichkeit wird Fluss 500 mit Bezug auf die verteilte Rechenumgebung 100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Fluss 500 oder ein ähnliches Verfahren durchzuführen.
  • Der Fluss 500 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um Rechencluster 102-120 als Replika auszuwählen, und um Leader- und Votingrollen einer verteilten Datenbank zuzuordnen, die von den Clients 126 und 128 verwendet wird. Im Allgemeinen kann jedes Rechencluster 102-120 als ein Kandidatenleader in Erwägung gezogen werden. Dann können Replika und Votingrollen auf Basis der erwarteten RTT ausgewählt werden, um mit dem Kandidatenleader zu kommunizieren. Der Kandidatenleader, der die beste Leistung aufweist (z. B. minimale Gesamt-RTT zwischen dem Leader und jedem Replika), kann als der tatsächliche Leader ausgewählt werden, dem entsprechende Replika und Votingrollen zugeordnet werden. Durch das Zugreifen auf Daten über die verteilte Rechenumgebung 110 ist die Aktivitätsüberwachungsvorrichtung in der Lage, die Verzögerungen in der verteilten Rechenumgebung 100 zu identifizieren und eine Rollenauswahl auf präzisere Art und Weise durchzuführen, als beispielsweise die Auswahlarten auf Basis unvollständiger oder beeinflusster Informationen.
  • Die Anzahl der Voters (M) und Anzahl der Replikas (N) werden identifiziert 502. Zum Beispiel kann der Client 126 von der verteilten Rechenumgebung 100 beantragen, dass diese eine verteilte Datenbank generiert. Diese Anfrage kann eine Anfrage beinhalten, über fünf Replikas zu verfügen, um Redundanzen bereitzustellen, falls eine Replika gerade gewartet wird und andere Replikas funktionsuntüchtig sind oder falls zwei Replikas funktionsuntüchtig sind, sind drei Replikas immer noch verfügbar sind. Die Anfrage kann ferner beantragen, über drei Voting-Replikas zu verfügen.
  • Sind Mund N einmal spezifiziert, kann der Aufgabenzuordnungsservice 124 504 vorläufig einer Kandidaten-Leaderrolle zu einem Rechencluster 102-120 der verteilten Rechenumgebung 100 zuordnen. Aus Gründen der Übersichtlichkeit wird Rechencluster 108 als ein Kandidatenleader in Erwägung gezogen werden. Diese vorläufige Zuordnung kann zum Beispiel auf eine zufällige oder geordnete Auswahl basieren, wobei die Verzögerung mit dem Fertigstellungsverfahren in der Arbeitslast 130 in Verbindung gebracht wird; auf Basis einer heuristischen Betrachtung des Client 126 und/oder der verteilten Rechenumgebung 100; einer Benutzerauswahl; oder jedes anderen technologisch sinnvollen Verfahrens.
  • M Cluster werden identifiziert 506. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 Aktivitäten innerhalb der verteilten Rechenumgebung 100 nachverfolgen. Hierzu zählen unter anderem auch das Nachverfolgen der RTTs zwischen den Rechenclustern 102-120 und sonstigen Metriken. Die Aktivitätsüberwachungsvorrichtung kann den Leader identifizieren, der zum Beispiel die funktionsfähige Latenz mit anderen Replikas unter Verwendung der Gleichung 550 aus 5B auf ein Mindestmaß senkt. In der Gleichung 550 ist λ(i) db der Kandidatenleader, Ergebnis(i) (l) gleicht Gleichung 551. Unter Verwendung dieser Berechnungen kann die Aktivitätsüberwachungsvorrichtung 122 dann M Rechencluster 102-106; 110-120 identifizieren, die unter Verwendung der Gleichung 550 mit dem besten Ergebnis in Verbindung gebracht werden. In diesem Beispiel ist M zwei und die Rechencluster 102 und 110 die M sind, werden identifiziert.
  • Das Ergebnis des Kandidatenleaders wird ermittelt 508. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung zum Ergebnis kommen, dass der Leader gemäß einer Metrik, die verwendet wird, und die Qualität des Kandidatenleaders zu identifizieren, mit anderen Kandidatenleadern verglichen wird. Eine exemplarische Berechnung könnte die Gesamt-RTT zwischen dem Kandidatenleader und jedem der M Cluster sein. Eine weitere exemplarische Berechnung können die Feststellung sein, dass die k geringste RTT zwischen dem Kandidatenleader und sonstigen Replikas sind, wobei k= [(num_voters+1)/2].
  • Die Schritte 504-508 werden dann für jeden möglichen Kandidatenleader wiederholt. Dieser Pool von Kandidatenleader kann alle der Rechencluster 102-120 beinhalten, oder einen Teil der Rechencluster 102-120 kann ausgeschlossen werden. Zum Beispiel können einige der Rechencluster 102-120, die ausgeschlossen werden, sofern sie nicht über eine ausreichende Anzahl an Rechenressourcen verfügen, sich an einem unerwünschten geographischen Standort, usw. befinden. Sobald dies für jeden Kandidatenleader fertig gestellt worden ist, wird derjenige Kandidatenleader, der mit der am meisten bevorzugten allgemeinen Konfiguration in Verbindung gebracht wird, ausgewählt. Zum Beispiel kann der am meisten bevorzugte Kandidat derjenige Kandidat sein, der über das niedrigste Ergebnis, gemäß der Metrik verfügt, die verwendet wird, um die Qualität des Kandidatenleaders, der zuvor besprochen worden ist, zu identifizieren.
  • Die N werden einer Replika-Rolle 512 zugeordnet. Die Aktivitätsüberwachungsvorrichtung 122 und/oder der Zuordnungsservice 124 kann N Rechencluster auswählen, denen eine Replika-Rolle gemäß einem technologisch sinnvollen Verfahren zugeordnet werden soll. Zum Beispiel kann der Aufgabenzuordnungsservice 124 Replika-Rollen in der Nähe von Clients, Rechencluster 102-120 mit geringen Betriebskosten, und Rechencluster 102-120 in bevorzugten Gerichtsbarkeiten, oder auf Basis geographischer Anliegen zuordnen. In diesem Beispiel kann der Aufgabenzuordnungsservice 124 die N Computercluster 106 und 112 eine Replika-Rolle für die verteilte Datenbank, die von Client 126 angefragt worden ist, zuordnen.
  • M Cluster werden einer Votingrolle 514 zugeordnet. Nachdem M Rechencluster 102 und 110 infiziert worden sind, kann der Aufgabenzuordnungsservice 124 den M Rechenclustern 102 und 110 eine Votingrolle für die verteilte Datenbank zuordnen, die von Client 126 beantragt worden ist.
  • Der Fluss 500 wurde beschrieben, um die besten Ergebnissen für die zu erwartende Latenz auszuwählen. In einem anderen Beispiel kann eine ausgewählte Konfiguration eine Konfiguration sein, die eine Tail-Latenz reduziert.
  • Angesichts der Tail-Latenz können lineare Eigenschaften keine nützliche Metrik bereitstellen. Stattdessen wird ein alternatives Auswertungsergebnis in Gleichungen 552 in 5B dargestellt. Als Eingabe wird statt den durchschnittlichen Hin- und Rücklaufzeiten-Latenzen, die Hin- und Rücklaufzeiten-Latenzverteilung Ha,b zwischen jedem Paar von Standorten α und b verwendet. Mit anderen Worten basiert Ha,b auf den hin-Rücklaufzeiten zwischen jedem Kommunikationslink zwischen jedem Rechencluster. Aus Gründen der Übersichtlichkeit wird davon ausgegangen, dass diese Verteilungen unabhängig sind, und dass die Latenzen als ein Vielfaches von 1 ms diskretisiert werden.
  • Bei der Ermittlung der Latenz für jeden Betriebstyp werden statt der Summierungsdurchschnitte die Verteilungen der Summe der zufälligen Variablen berechnet. Als ein Beispiel sollte ein einfacher Fall einer gebundenen Auslesung in Erwägung gezogen werden, die von einem Client c zur nächstgelegenen Replika nächstgelegenes(c,R), und dann vom nächstgelegenen(c,R) zum Leader l und dann wieder zurück zum Client läuft. Um die Latenzverteilung dieser Operation zu finden, wird eine diskrete Faltung Hc,nächstgelegenes(c,r) * Hnächstgelegenes(c,R),l wie in der Gleichung 552 ersichtlich, durchgeführt. In der Gleichung 552 bezeichnet m den geringstmöglichen Wert der gebundenen Auslesung t(i) , c(l) und rtt ist die zufällige Variable, die der Latenz entspricht (im Gegensatz zur durchschnittlichen Latenz). Sobald die Verteilung der Summe berechnet worden ist, kann das Prozentil von der Verteilung entnommen werden. Bei diesem erforderlichen Prozentil kann es sich um eine vom Benutzer ausgewählten Eingabe handeln, oder einer von einer unterschiedlichen Quelle erhaltenen Eingabe handeln. Zum Beispiel kann ein Datenbankadministrator daran interessiert sein, die 99%-ige Latenz zu minimieren und würde daher 99 % als das erforderliche Prozentil bereitstellen.
  • In dieser Implementierung wird eine Latenz einer beschlussfähigen Mehrheit als eine Variable ermittelt. Eine Latenz einer beschlussfähigen Mehrheit ist eine Latenz für eine beschlussfähige Mehrheit, um ein Votum zu genehmigen, nachdem das Votum der beschlussfähigen Mehrheit zugesendet worden ist. Ein Verfahren für das Berechnen einer Latenz einer beschlussfähigen Mehrheit ist das Berechnen einer Verteilung von Latenzen beschlussfähiger Mehrheiten. Dies erfordert das Auswählen mehrerer unterschiedlicher beschlussfähiger Mehrheiten von einer Gruppe und das Berechnen einer Latenz für jede ausgewählte beschlussfähige Mehrheit. Ein numerisches Verfahren um dies zu tun, ist das Durchführen einer Monte-Carlo-Simulation, wobei die Verteilungen Hl,v für v ∈ V und das Berechnen der mittleren Latenz für jedes Mal wiederholt erprobt werden. Für eine analytische Lösung sollte beachtet werden, dass der Leader die Mehrzahl -1 der Antworten von den anderen Servern einsammeln muss, wobei die Mehrzahl ←[(|V|+1)/2] ist davon ausgehen, dass die eigene Antwort des Leader schneller als jede andere Antwort ankommt. Die kumulative Verteilungsfunktion (CDF) der maximalen Antwortzeit für jeden Satz von Schreib-Lese-Replikas ist einfach das Produkt der CDFs der Antwortzeit für die individuellen Replikas. Zum Beispiel für 3 Lese-Schreib-Replikas l, v und w, bei denen l der Kandidatenleader ist, siehe Gleichung554. Mit anderen Worten ist das CDF des Maximums die Wahrscheinlichkeit, dass das Maximum weniger als x für unterschiedliche Werte von x ist. Das Maximum der Ereignisse a und b ist weniger als x wenn sowohl a als auch b weniger als x betragen. Falls Ereignisse a und b unabhängig sind, dann ist die Wahrscheinlichkeit, dass sowohl a als auch b weniger als x betragen, gleich mit der Wahrscheinlichkeit, dass a weniger als x beträgt, multipliziert mit der Wahrscheinlichkeit, dass b weniger als x beträgt.
  • Demzufolge kann das CDF der maximalen Antwortzeit für jede Teilmenge der Lese-Schreib-Replikas berechnet und ausgebildet werden. Daraus ergibt sich, unter Verwendung des Einschluss-Ausschluss-Prinzips, dass die Wahrscheinlichkeit, dass das Ereignis mindestens eine Teilmenge der Lese-Schreib-Replikas der Kardinalitäts-Mehrzahl-1, die über eine maximale Antwortlatenz von weniger als x verfügt, für jedes x berechnet werden kann. Dieses Ereignis entspricht dem Ereignis, dass die Antwortzeit der beschlussfähigen Mehrheit weniger als X beträgt, und daher die Antwortzeit der CDF der beschlussfähigen Mehrheit angibt. Unter Fortsetzung des Beispiels der 3 Lese-Schreib-Replikas, wird Gleichung 556 bereitgestellt. Mit anderen Worten wendet die Gleichung 556 das Prinzip an, dass eine Vereinigung der zwei Sätze A und B ihre Verknüpfungsstellen A+B ist. Die Verknüpfungsstelle kann entfernt werden, beispielsweise um eine doppelte Zählung der Elemente der Verknüpfungsstelle zu vermeiden.
  • 6 ist ein ist ein Blockdiagramm der verteilten Rechenumgebung 100, in der einige Rechencluster 102-120 für Replika und Votingrollen innerhalb der verteilten Datenbank ausgewählt worden sind. In diesem Beispiel haben die Aktivitätsüberwachungsvorrichtung 122 und der Aufgabenzuordnungsservice 124 Fluss 500 verwendet, um das Rechencluster 108 einer Leader-Rolle in der verteilten Datenbank, Rechencluster 102 und 110 einer Votingrolle in der verteilten Datenbank, und Rechencluster 106 und 112 zu einer Replika-Rolle in der verteilten Datenbank zuzuordnen.
  • Nachdem diese Rollen den Clustern 102-112 zugeordnet worden sind, kann Client 126 zum Beispiel mit der verteilten Datenbank interagieren, um Daten zu speichern, zu manipulieren und darauf zuzugreifen. Darüber hinaus kann der Client 128 und andere Clients die verteilte Rechenumgebung 100 verwenden, um andere verteilte Datenbanken zu betreiben um sonstige Software und Services zu betreiben. In manchen Fällen kann sich Gesamtbenutzung der verteilten Rechenumgebung 100 im Laufe der Zeit verändern. Diese Änderung kann periodisch oder zyklisch ablaufen.
  • Zum Beispiel kann die verteilte Rechenumgebung 100 die Erde physikalisch umspannen. Während eine unterschiedliche Bevölkerung den Übergang der Erde zwischen Tag und Nacht in den Mittelpunkt stellt, kann sich deren Verwendung der verteilten Rechenumgebung 100 ändern. Zum Beispiel sind viele Clients während der Werktage am aktivsten und bei Nacht und an Wochenenden am wenigsten aktiv. Sonstige zyklische Veränderungen können unter einem unterschiedlichen Zeitrahmen stattfinden. Zum Beispiel wird das E-Commerce- und das Abrechnungssystem am Jahresende vermehrt verwendet, da zu diesem Zeitpunkt in vielen Ländern mehr Einkäufe und Jahresabrechnungen getätigt werden. In ähnlicher Weise können systemische Veränderungen an der verteilten Rechenumgebung 100 vorgenommen werden. Neue Clients können online hinzukommen, alte Clients können entfernt werden, Ressourcen können zu bestehenden Rechenclustern 102-120 hinzugefügt oder davon entfernt werden, Netzwerkkommunikationslinks können geändert werden, usw.
  • All diese Änderungen können zu einer Änderung der Leistung mittels der verteilten Rechenumgebung 100 führen. Um diese Änderungen zu berücksichtigen, können die hier beschriebenen Prozesse, in denen die Rollen der verteilten Datenbank den Rechenclustern der verteilten Rechenumgebung 100 zugeordnet werden, wiederholt werden. Dies kann dazu führen, dass einige oder alle Rollen unterschiedlichen Rechenclustern erneut zugeordnet werden.
  • 7 ist ein Flussdiagramm eines exemplarischen Flusses 700 für das regelmäßige Auswählen von Rechenclustern für Rollen innerhalb einer verteilten Datenbank. Aus Gründen der Übersichtlichkeit wird Fluss 700 mit Bezug auf die verteilte Rechenumgebung 100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Fluss 700 oder ein ähnliches Verfahren durchzuführen.
  • Der Fluss 700 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um Rechencluster 102-120 als eine Leader-, Replika- und Voting-Rollen einer verteilten Datenbank, die von Client 126 verwendet wird, auszuwählen. Sobald die Rollen ausgewählt worden sind und die Aktivitätsüberwachungsvorrichtung 122 präzise Arbeitslastdaten von Client 126 generieren kann und von periodischen und systemischen Änderungen der verteilten Rechenumgebung 100 profitieren kann, können Abschnitte des Flusses 700 wiederholt werden, um die Rollen der verteilten Datenbank erneut zuzuordnen.
  • Ein neuer Client wird identifiziert und die Arbeitslast des neuen Clients wird ermittelt 702. Zum Beispiel kann der Client 126 beantragen, dass eine neue verteilte Datenbank auf einer verteilten Rechenumgebung 100 erstellt werden kann. Die Aktivitätsüberwachungsvorrichtung 122 kann Daten generieren, um die Art der Arbeitslast 130, die der Client 126 erstellen wird, zu prognostizieren. In einigen Fällen kann die Aktivitätsüberwachungsvorrichtung Heuristiken verwenden. Informationen über den Client 126, die Benutzer des Client 126 und sonstige Daten können verwendet werden, um eine prognostizierte Arbeitslast zu formulieren. In einigen Fällen kann die Aktivitätsüberwachungsvorrichtung 122 einen Client identifizieren, der über ähnliche Eigenschaften wie Client 126 verfügt, und die Arbeitslast des ähnlichen Clients anstatt der Arbeitslast 130 von Client 126 verwenden. Falls es sich bei Client 126 beispielsweise um eine serienmäßige E-Commerce-Anwendung handelt, kann die Aktivitätsüberwachungsvorrichtung 122 die historischen Arbeitslastdaten von anderen Instanzen derselben E-Commerce-Anwendung anwenden, um die Arbeitslast des Client 126 zu prognostizieren.
  • Ein Leader wurde identifiziert und zugeordnet 704. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 und/oder der Aufgabenzuordnungsservice 124 den Fluss 300 oder jedes andere Verfahren verwenden, um eines der Rechencluster 102-120 als den Leader der verteilten Datenbank zu identifizieren und auszuwählen.
  • Sonstige Rollen werden identifiziert und zugeordnet 706. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 und/oder der Aufgabenzuordnungsservice 124 den Fluss 500, oder jedes andere Verfahren dazu verwenden, um einen oder mehrere der Rechencluster 102-120 zum Beispiel als Voters, und Replikas für die verteilte Datenbank zu identifizieren und auszuwählen.
  • Operationen des Clients werden beobachtet 708 und die tatsächliche Arbeitslast für den Client wird berechnet 710. Während der Client ausgeführt wird, kann die Aktivitätsüberwachungsvorrichtung 122 beispielsweise die Aktivität des Client 126 nachverfolgen, oder Daten von einem anderen System, das die Aktivität des Client 126 nachverfolgt, erhalten. Von hier aus kann die Aktivitätsüberwachungsvorrichtung Daten generieren, welche die tatsächliche Arbeitslast 130 widerspiegeln.
  • Der Fluss 704-710 kann wiederholt werden. Diese können gemäß einem oder mehreren planmäßigen und/oder aus einem oder mehreren Gründen, wiederholt werden.
  • Ein Grund für das Wiederholen des Flusses 704-710 ist das erneute Zuordnen der Rollen, die unter Verwendung prognostizierter anstatt historischer Informationen über die Arbeitslast 130 erneut zugeordnet worden sind. Nach dem Zuordnen der Rollen auf Basis der prognostizierten Arbeitslast für den Client 126 kann der Aufgabenzuordnungsservice 124 später diese Rollen auf Basis der realen Arbeitslast 130, die beobachtet worden ist, erneut zuordnen.
  • Ein weiterer Grund für das Wiederholen des Flusses 704-710 ist das erneute Zuordnen der Rollen nach einer oder mehreren systemischen Änderungen des Client 126 und/oder des verteilten Rechennetzwerks 100. Zum Beispiel kann Client 126 Teil des Backend einer Webseite sein, die eine erhöhte Zunahme an Benutzerverkehr erhält. Dies kann zu einer Änderung der Arbeitslast 130 führen, weswegen es zu einer Konfiguration der Rollen kommen kann, welche den Wirkungsgrad der verteilten Datenbank erhöhen könnte. In einem anderen Beispiel kann die neue Netzwerkinfrastruktur die Kommunikationsverzögerung zwischen einigen der Rechencluster 102-120 ändern, und es könnte daher zu einer Konfiguration der Rollen kommen, welche den Wirkungsgrad der verteilten Datenbank erhöhen könnte.
  • Ein weiterer Grund für das Wiederholen des Flusses 704-710 ist das erneute Zuordnen der Rollen, um von den periodischen Änderungen der Arbeitslast des verteilten Rechensystem 100 zu profitieren. Zum Beispiel könnte während der lokalen Zeit des Clients während des Tages eine Konfiguration der Rollen am wirkungsvollsten sein, aber während des lokalen Zeit des Clients während der Nacht könnte eine andere Konfiguration der Rollen am wirkungsvollsten sein. Durch eine zeitgemäße Wiederholung (z. B. alle 12 Stunden, monatlich, vierteljährlich) kann von diesen Änderungen profitiert werden.
  • Darüber hinaus oder alternativ dazu, gibt es unter Verwendung der zuvor beschriebenen Verfahren für das Auswählen von Replikas und das Zuordnen der Rollen zu den Replikas, sonstige Verfahren für das Auswählen von Replikas und das Zuordnen von Rollen zu den Replikas. Wie beschrieben werden wird, können diese Verfahren zusammen verwendet werden, oder es können nur ein oder einige der Verfahren verwendet werden.
  • Jetzt wird ein Verfahren beschrieben, gemäß dem zwei Operationen verwendet werden, um den besten Satz von Replikas R von möglichen Standorten S, einem Satz von Voters V ⊆ R (d. h. die Voters sind eine Teilmenge oder gleich dem Satz der Replikas), und um den besten Leader von V auszuwählen. Durch das Verwenden dieser Operationen kann viel Datenverarbeitungszeit eingespart werden. Zum Beispiel können einige Brute-Force-Suchverfahren Stunden oder Tage benötigen, um die erforderliche Datenverarbeitung durchzuführen, während dieser Prozess die erforderliche Datenverarbeitung innerhalb von Minuten oder Sekunden durchführen kann.
  • 8A ist ein Flussdiagramm eines exemplarischen Flusses 800, der verwendet werden kann, um Replika-Standorte und -Rollen zu identifizieren. Aus Gründen der Übersichtlichkeit wird Fluss 800 mit Bezug auf die verteilte Rechenumgebung 100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Fluss 800 oder ein ähnliches Verfahren durchzuführen.
  • Der Fluss 800 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um Rechencluster 102-120 als Replikas auszuwählen. Im Allgemeinen werden einige Rechencluster 102-120 als Replikas zugeordnet und als Schwerpunkte behandelt. Zusätzliche Schwerpunkte werden in der Nähe von Clients mit hoher Beanspruchung identifiziert und dann werden die Replika-Standorte differenziert.
  • Ein anfänglicher Satz von Replikastandorten wird in Form von Schwerpunkten 802 erhalten. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 und der Aufgabenzuordnungsservice 124 einen, zwei, oder drei der Rechencluster 102-120 als Schwerpunkte auswählen.
  • Anfängliche Standorte für verbliebene Schwerpunkte werden 804 für die verbliebenen Schwerpunkte ausgewählt. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 die Clients 126 und 128 mit den am höchsten beanspruchten Arbeitslasten auf Basis der Arbeitslastdaten 130 und 132 identifizieren und der Aufgabenzuordnungsservice 124 kann die nächstgelegenen Rechencluster 102-120 als Schwerpunkte zuordnen.
  • Die Position der Schwerpunkte wird eingestellt 806, um Kosten einzusparen. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 und der Aufgabenzuordnungsservice 124 die ausgewählten Schwerpunkte ändern.
  • Die ausgewählten Schwerpunkte werden zurückgesendet 808. Wenn zum Beispiel eine Endbedingung erfüllt ist (z. B. Mangel an ausreichenden Kostenverbesserungen pro Änderung) kann der Aufgabenzuordnungsservice 124 die Schwerpunkte als Replikas einstellen.
  • 8B ist ein Beispiel eines Pseudocodes 850, der verwendet werden kann, um den Fluss 800 zu implementieren. Aus Gründen der Übersichtlichkeit wird Pseudocode 850 mit Bezug auf die verteilte Rechenumgebung 100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Pseudocode 850 oder ein ähnliches Verfahren durchzuführen.
  • Der Pseudocode 850 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um Rechencluster 102-120 als Replikas auszuwählen. Im Allgemeinen werden Gruppen von Rechenclustern 102-120 um jeden Client herum iterativ identifiziert, bis ein endgültiger Satz von Replikas identifiziert wird. Auf Basis der Auswahl dieser Replikas werden Voting- und Leaderrollen zugeordnet.
  • Der Fluss 500 verwendet eine Variante eines gewichteten K-Means. Der Fluss 500 ordnet jedem Client wc (z. B. Clients 126 und 128) c ein Gewicht auf Basis der Gesamtanzahl der Operationen, die von c durchgeführt werden, zu. In einigen Beispielen kann der Wert für wc mittels der Formel 900, die in 9 ersichtlich ist, berechnet werden. Als Teil des Betriebs des Pseudocodes 850, kann der Pseudocode 850 konfiguriert werden, um einen Mindestwert für Kosten(G), gemäß der Formel 902 zu finden.
  • Der Pseudocode 850 erhielt einen anfänglichen Satz von Replikastandorten, namens Schwerpunkte Lfeststehend, der von Rechenclustern 102-120 ausgewählt wird. Darüber hinaus erhält der Pseudocode 850 einen Wert num_replicas der die Anzahl der erwünschten Replikastandorte spezifiziert. Der Aufgabenzuordnungsservice 124 wählt die anfänglichen Standorte für die verbliebenen Schwerpunkte (Zeilen 6-10) aus, indem diese in der Nähe der beanspruchtesten Clients gemäß wc definiert werden. Jeder Schwerpunktstandort g definiert einen Satz von Clientclusters Cg für die g der nächstgelegene Schwerpunkt (Zeile 15) ist. Der Rest des Pseudocodes 850 stellt die Position jedes Schwerpunkts g auf eine Weise ein, welche die Kosten (gewichtete Hin- und Rücklaufzeiten) für Clients in Cg minimiert. Die Schwerpunkte Lfeststehend können eingestellt und nicht bewegt werden. Das Verfahren kann das Zurücksenden des Satzes von Schwerpunkten G zu Ende bringen, sobald es keine ausreichenden Verbesserungen der Gesamtkosten (d. h. Formel 902) gibt.
  • 10A ist ein Flussdiagramm eines exemplarischen Flusses 1000, der verwendet werden kann, um Replika-Standorte und -Rollen zu identifizieren. Aus Gründen der Übersichtlichkeit wird Fluss 1000 mit Bezug auf die verteilte Rechenumgebung 100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Fluss 1000 oder ein ähnliches Verfahren durchzuführen.
  • Der Fluss 1000 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um Rechencluster 102-120 als Replikas auszuwählen. Im Allgemeinen werden Replika-Standorte gefunden und dann werden Rollen zugeordnet.
  • Eine Anzahl von Replikas und eine Anzahl von Voters wird erhalten 1002. Zum Beispiel kann eine neue verteilte Datenbank in der Rechenumgebung 100 eingestellt werden. Als Teil dieses Satzes kann ein Administrator die Anzahl von Replikas und die Anzahl von Voters, die in die verteilte Datenbank miteinzubeziehen sind, auswählen.
  • Rechencluster werden als Replikas 1004 identifiziert. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 und der Aufgabenzuordnungsservice 124 die angemessene Anzahl von Rechenclustern 102-120 als Replikas auswählen.
  • Rollen werden 1006 Replikas zugeordnet. Zum Beispiel kann die Aktivitätsüberwachungsvorrichtung 122 und der Aufgabenzuordnungsservice 124 die Rollen in der verteilten Datenbank den Replikas zuordnen.
  • 10B ist ein Beispiel eines Pseudocodes 1050, der verwendet werden kann, um den Fluss 1000 zu implementieren. Aus Gründen der Übersichtlichkeit wird Pseudocode 1050 mit Bezug auf die verteilte Rechenumgebung 100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Pseudocode 1050 oder ein ähnliches Verfahren durchzuführen.
  • Der Pseudocode 1050 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um Rechencluster 102-120 als Replikas auszuwählen und dann um den ausgewählten Rechenclustern 102-120 Rollen zuzuordnen. Im Allgemeinen kann der Pseudocode 1050 „KQ“ genannt werden, weil er zuerst gewichtete K-Means Operationen verwendet, um Replikastandorte zu finden, und dann eine Q beschlussfähige Mehrheit findet. Anhand eines Vergleichs kann der Pseudocode 1150, der nachfolgend beschrieben wird, „QK“ genannt werden, da falls er zuerst eine Q beschlussfähige Mehrheit findet, K-Means verwendet, um Replika-Standorte zu finden.
  • Der Pseudocode 1050 kann num_replicas und num_voters (z. B. N und M wie vorstehend beschrieben) als Eingabewerte, welche die Anzahl von Replikas und Voters dementsprechend spezifizieren, welche die verteilte Datenbank haben sollte, erhalten. Diese Werte werden oft auf Basis der Designziele oder der Verwendung der verteilten Datenbank generiert. Zum Beispiel kann ein num_voters von 7 und eine beschlussfähige Mehrheit von 4 für eine Rechenumgebung 100 ausgewählt werden, die nie mehr als 3 Rechencluster 102-120 als gleichzeitig verfügbar erfahren hat.
  • Die erhaltenen num_replicas und num_voters, die Aktivitätsüberwachungsvorrichtung 122, und der Aufgabenzuordnungsservice 124 kann den Pseudocode 850 durchführen, um die G Replikas der Rechencluster 102-120 zu identifizieren. Als Nächstes kann die Aktivitätsüberwachungsvorrichtung 122 und der Aufgabenzuordnungsservice 124 den Fluss 500 durchführen, um Rollen zu den G Rechenclustern 102-120 zuzuordnen. Der Pseudocode 1050 kann den Leader, den Satz von Voters und den Satz von Replikas zurücksenden.
  • 11A ist ein Flussdiagramm eines exemplarischen Flusses, der verwendet werden kann, um Replika-Standorte und -Rollen zu identifizieren. Aus Gründen der Übersichtlichkeit wird Fluss 1100 mit Bezug auf die verteilte Rechenumgebung 100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Fluss 1100 oder ein ähnliches Verfahren durchzuführen.
  • Der Fluss 1100 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um Rechencluster 102-120 als Replikas auszuwählen. Im Allgemeinen wird für jeden Leader-Kandidaten ein Leader und eine beschlussfähige Mehrheit positioniert. Dann werden die übrig gebliebenen Replikas in der Nähe der Clients positioniert.
  • Es wird ein Leader-Kandidat ausgewählt 1102. Zum Beispiel kann eine neue verteilte Datenbank in der Rechenumgebung 100 eingestellt werden. Um die Rechencluster 102-104 zu finden, kann der Aufgabenzuordnungsservice 124 ein Kandidaten-Rechencluster 102-120 als ein Kandidatenleader auswählen.
  • Es wird zumindest eine beschlussfähige Mehrheit zugeordnet 1104. Zum Beispiel kann der Aufgabenzuordnungsservice 124 eine Anzahl von Rechencluster 102-120 die am nächstgelegenen zum Leader sind, auswählen und diese Rechencluster 102-120 als Voters zuordnen.
  • Die übrig gebliebenen Replikas werden zugeordnet 1106. Zum Beispiel kann der Aufgabenzuordnungsservice 124 zusätzliche Rechencluster 102-120 in der Nähe von Clients 126 und 128 als Voters oder Replikas zuordnen.
  • Der Fluss 1102-1106 wird für jeden Kandidatenleader wiederholt und dem besten Kandidatenleader werden die Rollen zugeordnet 1108. Zum Beispiel kann der Aufgabenzuordnungsservice den Kandidatenleader mit der insgesamt besten Konfiguration finden und die Rollen, die mit diesem Kandidatenleader in Verbindung gebracht werden, zuordnen.
  • 11B ist ein Beispiel eines Pseudocodes, der verwendet werden kann, um den in 11A dargestellten Fluss 1100 zu implementieren. Aus Gründen der Übersichtlichkeit wird Pseudocode 1150 mit Bezug auf die verteilte Rechenumgebung 1100 beschrieben. Andere Systeme können jedoch verwendet werden, um den Pseudocode 1150 oder ein ähnliches Verfahren durchzuführen.
  • Der Pseudocode 1150 kann zum Beispiel mittels der Aktivitätsüberwachungsvorrichtung 122 und dem Aufgabenzuordnungsservice 124 durchgeführt werden, um einen Leader, Voters und Replikas von den Rechenclustern 102-120 auszuwählen. Wie bereits zuvor identifiziert, kann das Verfahren auch als „QK“ bezeichnet werden, da falls es zuerst eine Q beschlussfähige Mehrheit findet, K-Means verwendet, um Replika-Standorte zu finden.
  • Der Pseudocode 1150 stellt zuerst den Leader und eine beschlussfähige Mehrheit ein und positioniert dann die verbliebenen Replikas in die Nähe der Clients. Oder genauer gesagt wird jeder mögliche Leaderstandort in S in Betracht gezogen, um die beste beschlussfähige Mehrheit für diesen Leader zu finden. Die beschlussfähige Mehrheit wird dann als Schwerpunkte im Betracht gezogen, die festgesetzt sind und nicht bewegt werden.
  • 12 ist ein schematisches Diagramm, das ein Beispiel eines Rechensystems 1200 darstellt. Das Rechensystem 1200 kann für einige oder alle der zuvor beschriebenen Operationen gemäß einigen Implementierungen verwendet werden. Das Rechensystem 1200 beinhaltet einen Prozessor 1210, einen Speicher 1220, eine Speichervorrichtung 1230 und eine Eingabe-/Ausgabevorrichtung 1240. Jeder aus dem Prozessor 1210, dem Speicher 1220, der Speichervorrichtung 1230, und der Eingabe-/Ausgabevorrichtung 1240 sind unter Verwendung eines Systembusses 1250 miteinander verbunden. Der Prozessor 1210 ist in der Lage, Ausführungsanweisungen innerhalb des Systems 1200 zu verarbeiten. In einigen Implementierungen ist der Prozessor 1210 ein Einfachthreading-Prozessor. In einigen Implementierungen ist der Prozessor 1210 ein Multithreading-Prozessor. Der Prozessor 1210 ist in der Lage, Anweisungen zu verarbeiten, die in dem Speicher 1220 oder im Speichergerät 1230 gespeichert sind, um grafische Informationen für eine Benutzeroberfläche auf der Eingabe-/Ausgabevorrichtung 1240 anzuzeigen.
  • Der Speicher 1220 speichert Informationen innerhalb des Rechensystems 1200. In einigen Implementierungen ist der Speicher 1220 ein computerlesbares Medium. In einigen Implementierungen ist der Speicher 1220 eine flüchtige Speichereinheit. In einigen Implementierungen ist der Speicher 1220 eine nichtflüchtige Speichereinheit.
  • Die Speichervorrichtung 1230 ist in der Lage, Massenspeicher für das Rechensystem 1200 bereitzustellen. In einer Implementierung ist die Speichervorrichtung 1230 ein computerlesbares Medium. In verschiedenen anderen Implementierungen kann die Speichervorrichtung 1230 ein Diskettenlaufwerk, ein Festplattenlaufwerk, ein optisches Laufwerk oder ein Bandgerät sein.
  • Die Eingabe-/Ausgabevorrichtung 1240 stellt Eingabe-/Ausgabeoperationen für das Rechensystem 1200 bereit. In einer Implementierung umfasst die Eingabe-/Ausgabevorrichtung 1240 eine Tastatur und/oder eine Zeigevorrichtung. In einer anderen Implementierung umfasst die Eingabe-/Ausgabevorrichtung 1240 eine Anzeige zur Darstellung grafischer Benutzeroberflächen.
  • Einige der beschriebenen Merkmale können in eine digitale Elektronikschaltung, Computerhardware, Firmware, Software oder Kombinationen derselben implementiert werden. Der Apparat kann in ein Computerprogrammprodukt implementiert werden, das greifbar ein einem Informationsträger verankert ist, z. B. in einem maschinenlesbaren Speichergerät, zur Umsetzung durch einen programmierbaren Prozessor und es können methodische Schritte von einem programmierbaren Prozessor unternommen werden, der ein Programm von Anweisungen zur Erfüllung von Funktionen der beschriebenen Implementierungen durch die Arbeit an Eingabedaten und die Generierung von Ausgabedaten umsetzt. Die beschriebenen Merkmale können vorteilhaft in ein oder mehrere Computerprogramme implementiert werden, die auf einem programmierbaren System laufen, das mindestens einen daran angekoppelten, programmierbaren Prozessor für den Empfang von Daten und Anweisungen und die Übertragung von Daten und Anweisungen an ein Datenspeichersystem, und mindestens eine Eingabe- und eine Ausgabevorrichtung beinhaltet. Ein Computerprogramm ist ein Satz von Anweisungen, die direkt oder indirekt in einem Computer zur Durchführung einer bestimmten Aktivität oder Herbeiführung eines bestimmten Ergebnisses eingesetzt werden können. Ein Computerprogramm kann in jeder beliebigen Art der Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen und kann in jeder beliebigen Form eingesetzt werden, darunter auch als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder andere Einheit, die für den Einsatz in einer Rechnerumgebung geeignet ist.
  • Für die Umsetzung eines Computerprogramms geeignete Prozessoren schließen beispielsweise sowohl allgemeine und als auch zweckbestimmte Mikroprozessoren sowie einen einzigen oder einen von multiplen Prozessoren einer jeglichen Art von Computer ein. Im Allgemeinen nimmt ein Prozessor Anweisungen und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für die Umsetzung von Anweisungen und ein oder mehrere Speicher für das Speichern von Anweisungen und Daten. Im Allgemeinen wird ein Computer auch eine oder mehrere Massenspeichergeräte zur Speicherung von Datenbeständen beinhalten oder mit diesen zu Kommunikationszwecken operativ gekoppelt sein; diese Geräte umfassen Magnetplatten wie etwa interne Festplatten und Wechselplatten, magneto-optische und optische Laufwerke. Speichervorrichtungen, die sich für das konkrete Verkörpern der Computerprogrammanweisungen und Daten eignen, beinhalten alle Formen nichtflüchtiger Speicher, einschließlich exemplarischer Halbleiter-Speichervorrichtungen, wie etwa EPROM (Löschbarer-Programmierbarer-Nur-Lese-Speicher) und Flash-Speichervorrichtungen; magnetische Speicherplatten, wie etwa interne Festplatten und entfernbare Platten; magneto-optische Speicherplatten; CD-ROM (Compact-Disc-Nur-Lese-Speicher) und DVD ROM (Digital-Mehrseitigplatte-Nur-Lese-Speicher) Speicherplatten. Der Prozessor und der Speicher können durch ASICs (application-specific integrated circuits, anwendungsspezifische integrierte Schaltkreise) ergänzt oder in diese mit einbezogen werden.
  • Um die Interaktion mit einem Benutzer zu ermöglichen, können die Merkmale auf einem Computer implementiert werden, der eine Anzeige wie etwa einen CRT- (cathode ray tube, Kathodenstrahlröhre) oder LCD-Monitor (liquid crystal display, Flüssigkristallanzeige) für die Anzeige von Informationen gegenüber dem Benutzer, sowie eine Tastatur und ein Zeigegerät, wie etwa eine Maus oder einen Trackball aufweist, womit der Benutzer Eingaben in den Computer vornehmen kann.
  • Einige Merkmale können in einem Computersystem implementiert werden, das eine Backend-Komponente umfasst, wie etwa einen Datenserver oder eine Middleware-Komponente, wie etwa einen Anwendungsserver oder Internetserver oder das eine Frontend-Komponente beinhaltet, wie etwa einen Clientcomputer mit einer graphischen Benutzeroberfläche oder einem Internet-Browser oder mit einer beliebigen Kombination derselben. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, wie etwa ein Kommunikationsnetzwerk. Beispiele für Kommunikationsnetze beinhalten z. B. LAN (lokales Netzwerk), WAN (Weitverkehrsnetz) und die Computer und Netzwerke, die das Internet bilden. Das Computersystem kann Client und Server umfassen. Ein Client und Server befinden sich im Allgemeinen in Entfernung voneinander und interagieren typischerweise über ein Netzwerk wie das beschriebene. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.

Claims (30)

  1. Ein System welches das Folgende umfasst: eine Vielzahl von Rechenclusters, die jeweils einen Rechenspeicher und einen Computer-Prozessor beinhalten; eine verteilte Datenbank, die auf mindestens eine Teilmenge der Vielzahl von Rechenclustern läuft und die mit einer Client-Anwendung interagiert, die auf einem Client-Computer läuft, wobei die verteilte Datenbank konfiguriert ist, um jedes Rechencluster der Rechencluster der verteilten Datenbank gemäß einer entsprechenden Rolle zu verwenden, die dem Rechencluster zugeordnet worden ist, welches Funktionen des Rechenclusters identifiziert; und ein Aktivitätsüberwachungsservice, der konfiguriert ist, um: Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank zu überwachen; vom Überwachen der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank, Arbeitslastdaten zu generieren, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; und ein Aufgabenzuordnungsservice, der konfiguriert ist, um: eine Angabe darüber zu erhalten, dass eine erste Anzahl (N) der Rechenclustern einer Replika-Rolle der verteilten Datenbank zuzuordnen sind; eine Angabe darüber zu erhalten, dass eine zweite Anzahl (M) der Rechencluster, denen Replika-Rollen zugeordnet worden sind, eine Votingrolle der verteilten Datenbank zugeordnet werden sollen; unter Verwendung von Arbeitslastdaten N Rechencluster auswählen, die in die verteilte Datenbank miteinzubeziehen sind; die N ausgewählten Rechencluster einer Replika-Rolle innerhalb der verteilten Datenbank zuzuordnen; und M der N ausgewählten Rechencluster einer Voting-Rolle innerhalb der verteilten Datenbank zuzuordnen
  2. System nach Anspruch 1, worin der Aufgabenzuordnungsservice konfiguriert ist, um unter Verwendung der Arbeitslastdaten das Auswählen der N Rechencluster, die in die verteilte Datenbank miteinbezogen werden sollen, zu wiederholen; das Auswählen der N der ausgewählten Rechencluster einer Replika-Rolle innerhalb der verteilten Datenbank zuzuordnen; und das Auswählen der M der ausgewählten Rechencluster zu einer Abstimmungsrolle innerhalb der verteilten Datenbank zuzuordnen.
  3. System nach Anspruch 2, worin das Wiederholen gemäß einem Zeitplan stattfindet, der auf zyklischen Änderungen im Rahmen der Verwendung der Rechencluster basiert.
  4. System nach einem der Ansprüche 1-3, worin der Aufgabenzuordnungsservice konfiguriert ist um einen Hinweis zu erhalten, dass die N der Rechencluster einer Replika-Rolle der verteilten Datenbank zuzuordnen sind, um eine Auszählung der Voter zu ermitteln, die erforderlich sind eine beschlussfähige Mehrheit zu bilden.
  5. System nach einem der Ansprüche 1-4, worin um N der ausgewählten Rechencluster einer Replika-Rolle innerhalb der verteilten Datenbank zuzuordnen, der Aufgabenzuordnungsservice konfiguriert ist, um N Rechencluster auf Basis eines Standorts eines Rechenclusters auszuwählen, das einer Leader-Rolle innerhalb der verteilten Datenbank zugeordnet worden ist.
  6. Ein Verfahren welches das Folgende umfasst: das Überwachen von Interaktionen zwischen einer Client-Anwendung und einer verteilten Datenbank; das Generieren der Arbeitslastdaten aus dem Überwachen der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; das Erhalten einer Angabe, dass eine erste Anzahl(N) der Rechencluster einer Replika-Rolle der verteilten Datenbank zuzuordnen ist; das Erhalten einer Angabe, dass einer zweite Anzahl (M) der Rechencluster, denen Replika-Rollen zugeordnet worden sind, eine Votingrolle der verteilten Datenbank zugeordnet werden sollen; das Auswählen der Arbeitslastdaten; das Miteinbeziehen von N Rechencluster in die verteilte Datenbank; das Zuordnen der N der ausgewählten Rechencluster zu einer Replika-Rolle innerhalb der verteilten Datenbank; und das Zuordnen der M der ausgewählten Rechencluster zu einer Voting-Rolle innerhalb der verteilten Datenbank.
  7. Ein System welches das Folgende umfasst: eine Vielzahl von Rechenclustern, die jeweils einen Computerspeicher und einen Computer-Prozessor umfassen; eine verteilte Datenbank, die auf mindestens eine Teilmenge der Vielzahl von Rechenclustern läuft und die mit einer Client-Anwendung interagiert, die auf einem Client-Computer läuft, wobei die verteilte Datenbank konfiguriert ist, um jedes Rechencluster der Rechencluster der verteilten Datenbank gemäß einer entsprechenden Rolle zu verwenden, die dem Rechencluster zugeordnet worden ist, welches Funktionen des Rechenclusters identifiziert; und ein Aktivitätsüberwachungsservice, der konfiguriert ist, um: Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank zu überwachen; vom Überwachen der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank, Arbeitslastdaten zu generieren, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; und ein Aufgabenzuordnungsservice, der konfiguriert ist, um: eine Angabe darüber zu erhalten, dass eine Anzahl (M) der Rechencluster einer Voting-Rolle der verteilten Datenbank zuzuordnen sind; für jedes bestimmte Computercluster mindestens einiger der Computercluster: das bestimmte Rechencluster als einen Kandidatenleader in Betracht ziehen; unter Verwendung der Arbeitslastdaten (M+1)/2 Computercluster identifizieren, die über die niedrigsten (M+1)/2 Latenzen innerhalb von Rechenclustern verfügen, während Voters dem Kandidatenleader entsprechen; M-(M+1)/2 nicht identifizierter Rechencluster identifizieren, während Voters dem Kandidatenleader entsprechen; eine Anzahl (N) nicht identifizierter Computercluster als Replikas, die dem Kandidatenleader entsprechen, identifizieren; das Kandidatenleader-Rechencluster, die entsprechenden Voters, und die entsprechenden Replikas auswählen, die auf einer Metrik über das beste Ergebnis verfügen; dem ausgewählten Kandidatencomputercluster eine Leaderrolle innerhalb der verteilten Datenbank zuordnen; den ausgewählten M Computerclustern, die Votingrolle innerhalb der verteilten Datenbank zuordnen; und den ausgewählten N Computerclustern, die Replika-Rolle innerhalb der verteilten Datenbank zuordnen.
  8. System nach Anspruch 7, worin der Aufgabenzuordnungsservice konfiguriert ist, um das In-Betrachtziehen der bestimmten Rechencluster als einen Kandidatenleader zu wiederholen, das unter Verwenden der Arbeitslastdaten durchgeführte Identifizieren (M+1)/2 Computerclustern welche die (M+1)/2 niedrigsten Latenzen mit dem bestimmten Computercluster haben, während Voter dem Kandidatenleader entsprechen, das Identifizieren M-(M+1)/2 nicht identifizierter Rechencluster als Voter, die dem Kandidatenleader entsprechen, das Identifizieren einer Anzahl(N) nicht identifizierter Computercluster als Replikas, die dem Kandidatenleader entsprechen, das Auswählen der Kandidatenleader-Rechencluster, entsprechende Voters, und entsprechende Replikas, die auf einer Metrik über das beste Ergebnis verfügen, das Zuordnen der Leaderrolle innerhalb der verteilten Datenbank zum ausgewählten Kandidatencomputercluster, das Zuordnen der Votingrolle innerhalb der verteilten Datenbank zu ausgewählten M Computerclustern, und das Zuordnen der Replika-Rolle innerhalb der verteilten Datenbank zu den ausgewählten N Computerclustern.
  9. System nach Anspruch 8, worin das Wiederholen gemäß einem Zeitplan stattfindet, der auf zyklischen Änderungen im Rahmen der Verwendung der Rechencluster basiert.
  10. System nach einem der Ansprüche 7-9, worin um eine Anzahl (N) nicht identifizierter Rechencluster als Replikas zu identifizieren, welche einem Kandidatenleader entsprechen, der Aufgabenzuordnungsservice konfiguriert wird, um eine Auszählung der Voter zu ermitteln, die erforderlich sind, um eine beschlussfähige Mehrheit zu bilden.
  11. System nach einem der Ansprüche 7-9, worin um eine Anzahl (N) nicht identifizierter Rechencluster als Replikas zu identifizieren, welche einem Kandidatenleader entsprechen, wobei der Aufgabenzuordnungsservice konfiguriert wird, um N Rechencluster auf Basis eines Standorts des Client-Computers auszuwählen.
  12. Verfahren welches das Folgende umfasst: das Überwachen von Interaktionen zwischen einer Client-Anwendung und einer verteilten Datenbank; das Generieren der Arbeitslastdaten mittels des Überwachens der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; das Erhalten einer Angabe darüber, dass eine Anzahl (M) der Rechencluster einer Voting-Rolle der verteilten Datenbank zuzuordnen ist; für jedes bestimmte Computercluster mindestens einiger der Computercluster: das In-Betracht-Ziehen bestimmter Rechencluster als einen Kandidatenleader; das unter Verwendung der Arbeitslastdaten durchgeführte Identifizieren der (M+1)/2 Computercluster, die über die (M+1)/2 niedrigsten Latenzen innerhalb bestimmter Rechencluster verfügen, während Voters dem Kandidatenleader entsprechen; das Identifizieren M-(M+1)/2 nicht identifizierter Rechencluster während Voters dem Kandidatenleader entsprechen; das Identifizieren einer Anzahl (N) nicht identifizierter Rechencluster während Voters dem Kandidatenleader entsprechen; das Auswählen des Kandidatenleader-Rechenclusters, der entsprechenden Voters, und der entsprechenden Replikas, welche über das beste Ergebnis auf einer Metrik verfügen das Zuordnen einer Leaderrolle innerhalb der verteilten Datenbank zu einem ausgewählten Kandidatencomputercluster ; das Zuordnen der Votingrolle innerhalb der verteilten Datenbank zu den ausgewählten M Computerclustern; und das Zuordnen der Replika-Rolle innerhalb der verteilten Datenbank zu den N Computerclustern.
  13. System welches das Folgende umfasst: eine Vielzahl von Rechenclustern, die jeweils einen Computerspeicher und einen Computer-Prozessor umfassen; eine verteilte Datenbank, die auf mindestens eine Teilmenge der Vielzahl von Rechenclustern läuft und die mit einer Client-Anwendung interagiert, die auf einem Client-Computer läuft, wobei die verteilte Datenbank konfiguriert ist, um jedes Rechencluster der Rechencluster der verteilten Datenbank gemäß einer entsprechenden Rolle zu verwenden, die dem Rechencluster zugeordnet worden ist, welches Funktionen des Rechenclusters identifiziert; und ein Aktivitätsüberwachungsservice, der konfiguriert ist, um: eine Angabe darüber zu erhalten, dass eine Anzahl (M) der Rechencluster einer Voting-Rolle der verteilten Datenbank zuzuordnen sind; für jedes bestimmte Computercluster mindestens einiger der Computercluster: das bestimmte Rechencluster als einen Kandidatenleader in Betracht ziehen und identifizieren, dass M Computercluster über M niedrigsten Latenzen innerhalb des bestimmten Kandidatenleader-Rechenclusters verfügen; das Kandidaten-Rechencluster und die damit in Verbindung stehenden M Rechencluster identifizieren, die auf einer Metrik über das beste Ergebnis verfügen; und den identifizierten M Computerclustern die Votingrolle zuordnen.
  14. System nach Anspruch 133, worin der Aufgabenzuordnungsservice ferner konfiguriert ist um: um eine Angabe zu erhalten, dass eine Anzahl (N) von Rechenclustern einer Replika-Rolle der verteilten Datenbank zugeordnet werden sollten; um N Computercluster zu identifizieren, die nicht einer Rolle der verteilten Datenbank zugeordnet worden sind; und um N Computercluster einer Replika-Rolle zuzuordnen.
  15. System nach einem der Ansprüche 13 oder 14, worin der Aufgabenzuordnungsservice konfiguriert ist, um das In-Betracht-Ziehen, das Identifizieren und das Zuordnen zu wiederholen.
  16. System nach Anspruch 15, worin der Aufgabenzuordnungsservice konfiguriert ist, um das Einem-Zeitplan-Zuordnen, das auf zyklische Änderungen im Rahmen der Anwendungen der Rechencluster beruht, zu wiederholen.
  17. System nach einem der Ansprüche 13-16 um ein bestimmtes Rechencluster als einen Kandidatenleader in Betracht zu ziehen und um M Computercluster, die über M niedrigste Latenzen mit dem bestimmten Kandidatenleader-Rechencluster verfügen, zu identifizieren, ist der Aufgabenzuordnungsservice konfiguriert, um Latenzen nur für eine Teilmenge von Operationen in Betracht zu ziehen, die in den Rechenclustern, welche die verteilte Datenbank ausführen, durchgeführt werden können.
  18. System nach einem der Ansprüche 13-17 worin die niedrigste Latenz eine Tail-Latenz ist, innerhalb der mindestens ein Grenzwertanteil der zufälligen Hin- und Rücklaufzeiten fallen.
  19. Verfahren, welches das Folgende umfasst: das Erhalten einer Angabe, dass eine Anzahl (M) der Rechencluster der Vielzahl der Computercluster einer Votingrolle einer verteilten Datenbank zuzuordnen sind, worin die Rechencluster jeweils einen Computerspeicher und einen Computerprozessor umfassen, worin die verteilte Datenbank auf mindestens einer Teilmenge der Vielzahl der Rechencluster läuft, und mit einer Client-Anwendung interagiert, die auf einem Client-Computer läuft, worin die verteilte Datenbank konfiguriert ist, um jedes der Rechencluster der Rechencluster der verteilten Datenbank gemäß einer entsprechenden Rolle zu verwenden, die dem Rechencluster zugeordnet worden ist, welche die Funktionen des Rechenclusters identifiziert; für jedes bestimmte Computercluster von mindestens einigen der Computercluster das In-Betracht-Ziehen bestimmter Rechencluster als einen Kandidatenleader und das Identifizieren von M Rechencluster, die über M Geringste Latenzen mit dem bestimmten Kandidatenleader-Rechencluster verfügen; das Identifizieren des Kandidaten-Rechenclusters und der damit in Verbindung stehenden M Rechencluster, welche über ein bestes Ergebnis auf einer Metrik verfügen; und das Zuordnen der Voting-Rolle zu den identifizierten M Computerclustern.
  20. Computerlesbares Medium, das Anweisungen speichert, wenn es von einem oder mehreren Datenverarbeitungsvorrichtungen ausgeführt wird, und dabei den einen oder die mehreren Datenverarbeitungsvorrichtungen dazu veranlasst, Operationen durchzuführen, welche das Folgende umfassen: das Erhalten einer Angabe, dass eine Anzahl (M) der Rechencluster der Vielzahl der Computercluster einer Votingrolle einer verteilten Datenbank zuzuordnen sind, worin die Rechencluster jeweils einen Computerspeicher und einen Computerprozessor umfassen, worin die verteilte Datenbank auf mindestens einer Teilmenge der Vielzahl der Rechencluster läuft, und mit einer Client-Anwendung interagiert, die auf einem Client-Computer läuft, worin die verteilte Datenbank konfiguriert ist, um jedes der Rechencluster der Rechencluster der verteilten Datenbank gemäß einer entsprechenden Rolle zu verwenden, die dem Rechencluster zugeordnet worden ist, welche die Funktionen des Rechenclusters identifiziert; für jedes bestimmte Computercluster von mindestens einigen der Computercluster das In-Betracht-Ziehen bestimmter Rechencluster als einen Kandidatenleader und das Identifizieren von M Rechencluster, die über M Geringste Latenzen mit dem bestimmten Kandidatenleader-Rechencluster verfügen; das Identifizieren des Kandidaten-Rechenclusters und der damit in Verbindung stehenden M Rechencluster, welche über ein bestes Ergebnis auf einer Metrik verfügen; und das Zuordnen der Voting-Rolle zu den identifizierten M Computerclustern.
  21. System, welches das Folgende umfasst: eine Vielzahl von Rechenclustern beinhalten, die jeweils einen Computerspeicher und einen Computerprozessor enthalten; eine verteilte Datenbank, die auf mindestens einer Teilmenge der Vielzahl der Rechencluster ausgeführt wird und die mit einer Client-Anwendung interagiert, die auf einem Client Computer ausgeführt wird, wobei die verteilte Datenbank konfiguriert ist, um jedes Rechencluster der Rechencluster der verteilten Datenbanken gemäß einer dementsprechenden Rolle zu verwenden, die dem Rechencluster zugewiesen wird, das die Funktionen des Rechenclusters identifiziert; ein Aktivitätsüberwachungsservice der konfiguriert ist, um: Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank zu überwachen; und um aus der Überwachung der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank Arbeitslastdaten zu generieren, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben; und einen Aufgabenzuordnungsservice, der konfiguriert ist, um: ein bestimmtes Rechencluster auf Basis von Arbeitslastdaten einer Rolle in der verteilten Datenbank zuzuordnen.
  22. System nach Anspruch 221 worin, um auf Basis der Arbeitslastdaten ein bestimmtes Rechencluster einer Leader-Rolle in der verteilten Datenbank zuzuordnen, der Aufgabenzuordnungsservice konfiguriert wird, um: Cluster zu finden, die über eine niedrigste Latenz verfügen, um Prozesse, die in den Arbeitslastdaten identifiziert werden, zu Ende zu führen.
  23. System nach Anspruch 222, worin um die Cluster zu finden, die über die niedrigste Latenz verfügen, um Prozesse zu Ende zu führen, die in den Arbeitslastdaten identifiziert worden sind, der Aufgabenzuordnungsservice konfiguriert wird, um: eine Frequenz für jeden Prozess zu identifizieren; um einen Latenzwert für jeden Prozess für jedes Rechencluster zu identifizieren; und für jedes Rechencluster einen gewichteten Latenzwert zu finden, der eine Aggregation der Latenzwerte für den Cluster miteinbezieht, worin die Latenzwerte in der Aggregation der Latenzwerte entsprechend der Frequenz der entsprechenden Prozesse gewichtet worden ist.
  24. System nach einem der Ansprüche 21-23, worin die Aktivitätsüberwachungsvorrichtung konfiguriert ist, um das Überwachen und das Generieren zu wiederholen, worin der Aufgabenzuordnungsservice konfiguriert ist, um das Zuordnen zu wiederholen.
  25. System nach Anspruch 224, worin um das Zuordnen zu wiederholen, der Aufgabenzuordnungsservice konfiguriert ist, um ein unterschiedliches bestimmtes Rechencluster der Leaderrolle auf Basis der Arbeitslastdaten in der verteilten Datenbank zuzuordnen.
  26. System nach einem der Ansprüche 24-25, worin die Aktivitätsüberwachungsvorrichtung konfiguriert ist, um das Überwachen und das Generieren zu wiederholen, worin der Aufgabenzuordnungsservice konfiguriert ist, um das Einem-Zeitplan-Zuordnen, das auf zyklische Änderungen im Rahmen der Anwendungen der Rechencluster beruht, zu wiederholen.
  27. System nach einem der Ansprüche 21-26, worin der Aktivitätsüberwachungsservice und der Aufgabenzuordnungsservice auf einem oder mehreren Rechenclustern laufen.
  28. System nach einem der Ansprüche 21-27, worin der Client-Computer einer der Rechencluster ist.
  29. Verfahren, welches das Folgende umfasst: das Überwachen der Interaktionen zwischen einer Client-Anwendung und einer verteilten Datenbank, worin die verteilte Datenbank auf mindestens einer Teilmenge einer Vielzahl von Rechenclustern läuft und mit einer Client-Anwendung interagiert, die auf einem Client-Computer läuft, worin die Rechencluster, jeweils einen Computer-Speicher und einen Computer-Prozessor umfassen, worin die verteilte Datenbank konfiguriert ist, um jedes Rechencluster der Rechencluster der verteilten Datenbank gemäß einer entsprechenden Rolle zu verwenden, welche dem Rechencluster, welches Funktionen des Rechencluster identifiziert, zugeordnet worden ist; das Generieren der Arbeitslastdaten, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben, mittels des Überwachung der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank und das auf Basis der Arbeitslastdaten durchgeführte Zuordnen eines bestimmten Rechenclusters einer Leader-Rolle innerhalb der verteilten Datenbank.
  30. Computerlesbares Medium, das Anweisungen speichert, wenn es von einem oder mehreren Datenverarbeitungsvorrichtungen ausgeführt wird, und dabei den einen oder die mehreren Datenverarbeitungsvorrichtungen dazu veranlasst, Operationen durchzuführen, welche das Folgende umfassen: das Überwachen der Interaktionen zwischen einer Client-Anwendung und einer verteilten Datenbank, worin die verteilte Datenbank auf mindestens einer Teilmenge einer Vielzahl von Rechenclustern läuft und mit einer Client-Anwendung interagiert, die auf einem Client-Computer läuft, worin die Rechencluster, jeweils einen Computer-Speicher und einen Computer-Prozessor umfassen, worin die verteilte Datenbank konfiguriert ist, um jedes Rechencluster der Rechencluster der verteilten Datenbank gemäß einer entsprechenden Rolle zu verwenden, welche dem Rechencluster, welches Funktionen des Rechencluster identifiziert, zugeordnet worden ist; das Generieren der Arbeitslastdaten, welche die Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank beschreiben, mittels des Überwachung der Interaktionen zwischen der Client-Anwendung und der verteilten Datenbank und das auf Basis der Arbeitslastdaten durchgeführte Zuordnen eines bestimmten Rechenclusters einer Leader-Rolle innerhalb der verteilten Datenbank.
DE112016003013.4T 2015-07-02 2016-07-01 Verteiltes speichersystem mit replika-standortauswahl Pending DE112016003013T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562188076P 2015-07-02 2015-07-02
US62/188,076 2015-07-02
PCT/US2016/040741 WO2017004547A1 (en) 2015-07-02 2016-07-01 Distributed storage system with replica location selection

Publications (1)

Publication Number Publication Date
DE112016003013T5 true DE112016003013T5 (de) 2018-05-30

Family

ID=56418625

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016008045.9U Active DE202016008045U1 (de) 2015-07-02 2016-07-01 Verteiltes Speichersystem mit Replika-Standortauswahl
DE112016003013.4T Pending DE112016003013T5 (de) 2015-07-02 2016-07-01 Verteiltes speichersystem mit replika-standortauswahl

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE202016008045.9U Active DE202016008045U1 (de) 2015-07-02 2016-07-01 Verteiltes Speichersystem mit Replika-Standortauswahl

Country Status (5)

Country Link
US (5) US10521450B2 (de)
CN (1) CN107851105B (de)
DE (2) DE202016008045U1 (de)
GB (1) GB2554250B (de)
WO (1) WO2017004547A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105515721B (zh) * 2014-09-25 2020-01-07 中兴通讯股份有限公司 比特位数指示方法及装置
US10521450B2 (en) 2015-07-02 2019-12-31 Google Llc Distributed storage system with replica selection
US11240305B2 (en) * 2016-07-28 2022-02-01 At&T Intellectual Property I, L.P. Task allocation among devices in a distributed data storage system
US10628233B2 (en) * 2016-12-30 2020-04-21 Samsung Electronics Co., Ltd. Rack-level scheduling for reducing the long tail latency using high performance SSDS
US10545664B2 (en) 2017-04-11 2020-01-28 Samsung Electronics Co., Ltd. System and method for identifying SSDs with lowest tail latencies
GB2572135B (en) * 2018-03-07 2023-01-25 The Maidsafe Found Data transaction system and method
CN108712303B (zh) * 2018-04-25 2021-08-20 大连理工大学 一种云平台的尾延迟测评系统和方法
US10983880B2 (en) * 2018-07-31 2021-04-20 Hewlett Packard Enterprise Development Lp Role designation in a high availability node
US11615061B1 (en) * 2018-08-03 2023-03-28 Amazon Technologies, Inc. Evaluating workload for database migration recommendations
US11330401B2 (en) * 2019-02-06 2022-05-10 At&T Intellectual Property I, L.P. Centrally assisted associations with a local manager by peers in a peer to peer wireless network
CN109951331B (zh) * 2019-03-15 2021-08-20 北京百度网讯科技有限公司 用于发送信息的方法、装置和计算集群
EP4016299A1 (de) * 2020-12-21 2022-06-22 Amadeus S.A.S. Verfahren und system zur verwaltung der rechnerressourcen in datenbereichen
US11593210B2 (en) * 2020-12-29 2023-02-28 Hewlett Packard Enterprise Development Lp Leader election in a distributed system based on node weight and leadership priority based on network performance
US20230409602A1 (en) * 2022-06-21 2023-12-21 International Business Machines Corporation Data management

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710915A (en) 1995-12-21 1998-01-20 Electronic Data Systems Corporation Method for accelerating access to a database clustered partitioning
US6122264A (en) 1997-09-29 2000-09-19 Lucent Technologies, Inc. Method for managing the transmission of competing information packets
US6324654B1 (en) * 1998-03-30 2001-11-27 Legato Systems, Inc. Computer network remote data mirroring system
US6591272B1 (en) * 1999-02-25 2003-07-08 Tricoron Networks, Inc. Method and apparatus to make and transmit objects from a database on a server computer to a client computer
US6401120B1 (en) 1999-03-26 2002-06-04 Microsoft Corporation Method and system for consistent cluster operational data in a server cluster using a quorum of replicas
WO2001084314A2 (en) 2000-05-02 2001-11-08 Sun Microsystem, Inc. Method and system for providing cluster replicated checkpoint services
US7188145B2 (en) 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
US20020143798A1 (en) 2001-04-02 2002-10-03 Akamai Technologies, Inc. Highly available distributed storage system for internet content with storage site redirection
US7765329B2 (en) 2002-06-05 2010-07-27 Silicon Graphics International Messaging between heterogeneous clients of a storage area network
US7593968B2 (en) * 2001-06-05 2009-09-22 Silicon Graphics, Inc. Recovery and relocation of a distributed name service in a cluster filesystem
US7617292B2 (en) 2001-06-05 2009-11-10 Silicon Graphics International Multi-class heterogeneous clients in a clustered filesystem
US7558883B1 (en) * 2002-06-28 2009-07-07 Microsoft Corporation Fast transaction commit
US7620680B1 (en) * 2002-08-15 2009-11-17 Microsoft Corporation Fast byzantine paxos
US20040254984A1 (en) 2003-06-12 2004-12-16 Sun Microsystems, Inc System and method for coordinating cluster serviceability updates over distributed consensus within a distributed data system cluster
US20050132154A1 (en) 2003-10-03 2005-06-16 International Business Machines Corporation Reliable leader election in storage area network
US8005888B2 (en) 2003-12-30 2011-08-23 Microsoft Corporation Conflict fast consensus
US7814064B2 (en) 2004-05-12 2010-10-12 Oracle International Corporation Dynamic distributed consensus algorithm
US7478263B1 (en) * 2004-06-01 2009-01-13 Network Appliance, Inc. System and method for establishing bi-directional failover in a two node cluster
US7698465B2 (en) 2004-11-23 2010-04-13 Microsoft Corporation Generalized Paxos
US7555516B2 (en) 2004-11-23 2009-06-30 Microsoft Corporation Fast Paxos recovery
US20070022129A1 (en) 2005-07-25 2007-01-25 Parascale, Inc. Rule driven automation of file placement, replication, and migration
US7797457B2 (en) 2006-03-10 2010-09-14 Microsoft Corporation Leaderless byzantine consensus
US8126848B2 (en) * 2006-12-07 2012-02-28 Robert Edward Wagner Automated method for identifying and repairing logical data discrepancies between database replicas in a database cluster
US20090063356A1 (en) * 2007-08-31 2009-03-05 Torsten Heise Consensus Determination Framework
US8041773B2 (en) * 2007-09-24 2011-10-18 The Research Foundation Of State University Of New York Automatic clustering for self-organizing grids
US20090089365A1 (en) * 2007-09-27 2009-04-02 Alcatel Lucent Web services replica management
US7840662B1 (en) * 2008-03-28 2010-11-23 EMC(Benelux) B.V., S.A.R.L. Dynamically managing a network cluster
US8392482B1 (en) 2008-03-31 2013-03-05 Amazon Technologies, Inc. Versioning of database partition maps
US8230253B2 (en) 2008-07-21 2012-07-24 International Business Machines Corporation Byzantine fault tolerant dynamic quorum using a trusted platform module
US7987152B1 (en) * 2008-10-03 2011-07-26 Gadir Omar M A Federation of clusters for enterprise data management
US8375001B2 (en) 2008-10-03 2013-02-12 Telefonaktiebolaget Lm Ericsson (Publ) Master monitoring mechanism for a geographical distributed database
US8495021B2 (en) 2008-11-26 2013-07-23 Yahoo! Inc. Distribution data items within geographically distributed databases
US8645660B2 (en) * 2009-12-10 2014-02-04 Microsoft Corporation Automatic allocation of data replicas
US20110178984A1 (en) 2010-01-18 2011-07-21 Microsoft Corporation Replication protocol for database systems
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US8554737B2 (en) 2010-09-28 2013-10-08 International Business Machines Corporation Dynamic consistency group formation and systems using the same
GB2484086A (en) 2010-09-28 2012-04-04 Metaswitch Networks Ltd Reliability and performance modes in a distributed storage system
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US8694647B2 (en) 2011-03-18 2014-04-08 Microsoft Corporation Read-only operations processing in a paxos replication system
US9047331B2 (en) * 2011-04-21 2015-06-02 International Business Machines Corporation Scalable row-store with consensus-based replication
US9201742B2 (en) 2011-04-26 2015-12-01 Brian J. Bulkowski Method and system of self-managing nodes of a distributed database cluster with a consensus algorithm
US20130006687A1 (en) 2011-07-01 2013-01-03 The Go Daddy Group, Inc. Creating a sub-story for a project story board
US20130029024A1 (en) * 2011-07-25 2013-01-31 David Warren Barbeque stove
JP5712851B2 (ja) * 2011-07-29 2015-05-07 富士通株式会社 データ分割装置、データ分割方法およびデータ分割プログラム
US20130066875A1 (en) * 2011-09-12 2013-03-14 Jacques Combet Method for Segmenting Users of Mobile Internet
GB2495079A (en) * 2011-09-23 2013-04-03 Hybrid Logic Ltd Live migration of applications and file systems in a distributed system
US10860563B2 (en) 2012-01-06 2020-12-08 Microsoft Technology Licensing, Llc Distributed database with modular blocks and associated log files
US9116862B1 (en) 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
US8843441B1 (en) * 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
US9230000B1 (en) 2012-06-04 2016-01-05 Google Inc. Pipelining Paxos state machines
US9323767B2 (en) * 2012-10-01 2016-04-26 Longsand Limited Performance and scalability in an intelligent data operating layer system
US8838535B2 (en) 2012-10-05 2014-09-16 Oracle International Corporation Providing services across systems that manage distributed replicas
US9053166B2 (en) 2012-12-10 2015-06-09 Microsoft Technology Licensing, Llc Dynamically varying the number of database replicas
US10212238B2 (en) 2013-05-15 2019-02-19 Level 3 Communications, Llc Selecting a content providing server in a content delivery network
US9830234B2 (en) * 2013-08-26 2017-11-28 Vmware, Inc. Distributed transaction log
US9971785B1 (en) * 2013-09-05 2018-05-15 Nutanix, Inc. System and methods for performing distributed data replication in a networked virtualization environment
US9569513B1 (en) * 2013-09-10 2017-02-14 Amazon Technologies, Inc. Conditional master election in distributed databases
CN104092719B (zh) * 2013-12-17 2015-10-07 深圳市腾讯计算机系统有限公司 文件传输方法、装置及分布式集群文件系统
US9607071B2 (en) 2014-03-07 2017-03-28 Adobe Systems Incorporated Managing a distributed database across a plurality of clusters
US9294558B1 (en) 2014-03-31 2016-03-22 Amazon Technologies, Inc. Connection re-balancing in distributed storage systems
US9740472B1 (en) 2014-05-15 2017-08-22 Nutanix, Inc. Mechanism for performing rolling upgrades in a networked virtualization environment
US10133806B2 (en) 2014-07-31 2018-11-20 Splunk Inc. Search result replication in a search head cluster
US10609159B2 (en) 2014-08-04 2020-03-31 Microsoft Technology Licensing, Llc Providing higher workload resiliency in clustered systems based on health heuristics
US9367410B2 (en) 2014-09-12 2016-06-14 Facebook, Inc. Failover mechanism in a distributed computing system
US9806896B2 (en) 2014-09-30 2017-10-31 Nicira, Inc. Optimized message retransmission mechanism for distributed storage virtualization directory system
US20160100004A1 (en) * 2014-10-06 2016-04-07 International Business Machines Corporation Data replication across servers
US10833940B2 (en) 2015-03-09 2020-11-10 Vapor IO Inc. Autonomous distributed workload and infrastructure scheduling
US10623486B2 (en) 2015-06-15 2020-04-14 Redis Labs Ltd. Methods, systems, and media for providing distributed database access during a network split
US10521450B2 (en) 2015-07-02 2019-12-31 Google Llc Distributed storage system with replica selection

Also Published As

Publication number Publication date
GB2554250A (en) 2018-03-28
US20170006105A1 (en) 2017-01-05
US20170004193A1 (en) 2017-01-05
DE202016008045U1 (de) 2017-01-27
US11907258B2 (en) 2024-02-20
GB2554250B (en) 2021-09-01
CN107851105B (zh) 2022-02-22
US11556561B2 (en) 2023-01-17
US20230136193A1 (en) 2023-05-04
US20170004219A1 (en) 2017-01-05
GB201717595D0 (en) 2017-12-13
US10346425B2 (en) 2019-07-09
US10521450B2 (en) 2019-12-31
WO2017004547A1 (en) 2017-01-05
US20210034641A1 (en) 2021-02-04
CN107851105A (zh) 2018-03-27
US10831777B2 (en) 2020-11-10

Similar Documents

Publication Publication Date Title
DE112016003013T5 (de) Verteiltes speichersystem mit replika-standortauswahl
DE112012004336B4 (de) System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen
DE112019003405T5 (de) Automatische feinabstimmungsvorrichtung für einbettungen von cloud-mikrodiensten
DE112012004999T5 (de) Beschleunigungselement zur Cloud-Bereitstellung
DE202014010909U1 (de) Verteilung von Daten in verteilten Speichersystemen
DE112021002572T5 (de) Multikriterielles optimieren von anwendungen
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE202017100386U1 (de) Latenzreduzierung bei der feedbackbasierten Ermittlung einer Systemperformance
DE112021003276T5 (de) Ressourcenverwaltung einer softwareanwendung mit mehreren softwarekomponenten
DE112021000390T5 (de) Anpassen der leistung eines datenverarbeitungssystems
DE112012005559T5 (de) Software-Installation
DE112021003294T5 (de) Systemverwaltung auf grundlage von leistung und leistungsfähigkeit
DE102021130957A1 (de) Empfehlungen zur stabilität von software-aktualisierungen
DE112021004958T5 (de) Skalierbares modellieren bei grossen sammlungen von zeitreihen
DE112017006889T5 (de) Monotone Transaktionen in einer Multimasterdatenbank mit lose verbundenen Knoten
DE112021001974T5 (de) Proaktives durchführen von aufgaben auf der grundlage eines schätzens vonhardwarerekonfigurationszeiten
DE202013012479U1 (de) System zur Commit Ausführung von Transaktionen auf entfernten Servern
DE112019001493T5 (de) Ermitteln der abfrageerkennungsresilienz in virtuellen agentensystemen
DE102012210064A1 (de) Verwalten von aus Geschäftsobjekten erzeugten Ereignissen
DE102021129637A1 (de) Verteiltes stream-computing mit mehreren umgebungen
DE112021005848T5 (de) Koordinieren von in einer skalierbaren anwendung umgesetzten anfragen
Hasnain et al. Simulated dataset collection method of dynamic quality of services (QoS) metrics
DE102021123132A1 (de) Erkennen von assoziationen zwischen datensätzen
DE102021123576A1 (de) Frühzeitiges stoppen von versuchen bei stapelweise erfolgender bayesscher optimierung in industrieprozessen
DE112021005394T5 (de) Tag-gesteuerte planung von datenverarbeitungsressourcen zur funktionsausführung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0015160000

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0015160000

Ipc: G06F0009440000