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