DE112021005586T5 - Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene - Google Patents

Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene Download PDF

Info

Publication number
DE112021005586T5
DE112021005586T5 DE112021005586.0T DE112021005586T DE112021005586T5 DE 112021005586 T5 DE112021005586 T5 DE 112021005586T5 DE 112021005586 T DE112021005586 T DE 112021005586T DE 112021005586 T5 DE112021005586 T5 DE 112021005586T5
Authority
DE
Germany
Prior art keywords
worker nodes
queries
query
processors
threshold
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
DE112021005586.0T
Other languages
English (en)
Inventor
Austin Clifford
Ilker Ender
Mara Matias
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021005586T5 publication Critical patent/DE112021005586T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/23Updating
    • G06F16/2308Concurrency control
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Landscapes

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

Abstract

Es werden ein Verfahren, ein Computerprogrammprodukt und ein System zum automatischen Skalieren einer Abfrage-Steuerungsroutine offenbart. Das Verfahren umfasst, dass ein oder mehrere Prozessoren einen Abfrageverkehr an der Abfrage-Steuerungsroutine überwachen. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren Abfragen nach einer Mehrzahl von Dienstklassen auf der Grundlage einer Komplexitätsstufe einer Abfrage einstufen. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren den Abfrageverkehr für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig verarbeitet werden dürfen, vergleichen. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren ein automatisches Skalieren eines Clusters von Worker-Knoten anweisen, um eine Anzahl von in dem Cluster verfügbaren Worker-Knoten auf der Grundlage des Vergleichs des Abfrageverkehrs mit einem festgelegten Hochskalierungsschwellenwert und einem festgelegten Herunterskalierungsschwellenwert über eine festgelegte Zeitspanne zu ändern.

Description

  • HINTERGRUND DER ERFINDUNG
  • Die vorliegende Erfindung betrifft im Allgemeinen das Gebiet von Abfrage-Steuerungsroutinen, und im Besonderen ein automatisches Skalieren von Abfrage-Steuerungsroutinen.
  • Moderne Cloud-Technologien bieten großartige Möglichkeiten für die Datenanalyse. Die Tendenz zur Trennung von Berechnung und Speicherung bedeutet, dass Berechnungssteuerungsroutinen in Bezug auf den Arbeitslastbedarf skaliert werden können. Zum Beispiel bieten Objektspeicher in der Cloud (cloud object stores), die von allen führenden Cloud-Anbietern angeboten werden, die Flexibilität, sowohl strukturierte als auch unstrukturierte Daten in großem Umfang mit echtem elastischen Skalieren und einem sehr hohen Maß an Beständigkeit und Zuverlässigkeit zu speichern. Die Trennung von Berechnung und Speicherung, wobei die Berechnung in Container-Technologien wie Kubernetes® (Kubernetes ist eine Marke der Linux Foundation) ausgeführt wird, bedeutet, dass Cluster schnell horizontal nach oben oder unten skaliert werden können, je nach Arbe itslastbeda rf.
  • Technologien für Abfrage-Steuerungsroutinen, wie zum Beispiel Structured Query Language (SQL)-Steuerungsroutinen auf Hadoop® (Hadoop ist eine Marke der Apache Software Foundation) oder Objektspeichertechnologien, sind in der Lage, direkt auf Daten in dem externen Speicher zu verweisen und stellen die Möglichkeit bereit, Daten dort zu analysieren, wo sie sich befinden, und zwar unter Verwendung von bestehenden komplexen Werkzeugen für SQL und Geschäftsanalytik. Zusätzlich bieten die Technologien die Fähigkeit, die Anzahl von Berechnungsknoten der SQL-Steuerungsroutine nach oben oder unten zu skalieren, um den unterschiedlichen Anforderungen des Unternehmens über konkurrierende Arbeitslasten hinweg gerecht zu werden.
  • Moderne SQL-Steuerungsroutinen mit massiver Parallelverarbeitung (MPP, massively parallel processing) weisen üblicherweise einen Cluster mit einem Kopfknoten und einer Mehrzahl von „n“ Worker-Knoten auf (wobei n einige Hundert oder sogar Tausende von Knoten umfassen kann). Eine erhebliche Herausforderung, die sich bei diesem elastischen Paradigma ergeben hat, ist die Fähigkeit, einen SQL-Steuerungsroutine-Cluster für Big Data auf geordnete Weise so zu skalieren, dass der Cluster zwar reaktionsfähig, aber nicht übermäßig empfindlich in Bezug auf sich ändernde Arbeitslasten ist. Das Skalieren einer SQL-Steuerungsroutine auf der Grundlage von einfachen hostbasierten Kennzahlen wie zum Beispiel der Auslastung der Zentraleinheit (CPU) oder des Arbeitsspeichers, um auf unterschiedliche komplexe Arbeitslasten zu reagieren, kann problematisch sein. Zum Beispiel kann die CPU-Auslastung unvorhersehbar sein und selbst bei der Ausführung einer einzelnen komplexen SQL-Abfrage recht schnell variieren, je nachdem, welches Stadium der Abfrage gerade durchgeführt wird. Das Skalieren des Clusters auf eine so einfache Weise kann zu einer Überlastung (thrashing) führen, wobei die Anzahl von Worker-Knoten aufgrund der Unvorhersehbarkeit der CPU-Kennzahlen unregelmäßig schwankt. Das Ergebnis der Überlastung kann sich negativ auf die Gesamtstabilität des Clusters auswirken und im Extremfall das automatische Skalieren unbrauchbar machen.
  • Eine weitere Herausforderung ist die Fähigkeit, Worker-Knoten von laufenden Abfragen zeitnah zu entlasten, ohne dabei irgendwelche aktiven Abfragen beim Herunterskalieren des Clusters zu unterbrechen. Zum Beispiel können auf einem Worker-Knoten zu einem beliebigen Zeitpunkt ein oder zwei lange laufende Abfragen laufen. Sobald ein Abfrage-Fragment auf einem bestimmten Worker begonnen hat, ist das Abfrage-Fragment an diesen Worker gebunden und kann nicht auf einen anderen Worker verschoben werden. SQL-Abfragezugriffspläne sind von Natur aus komplex und gehen mit zahlreichen Arbeitsschritten einher, wie zum Beispiel Hashverknüpfungen, verschachtelte Schleifenverknüpfungen, Sortiervorgänge und so weiter. Wenn eine komplexe Abfrage auf die verfügbaren Worker-Knoten verteilt wird, wird die Beteiligung jedes einzelnen Workers an der Abfrageausführung nicht ausschließlich durch die Platten-Eingabe/Ausgabe (10, Input/Output) bestimmt. Anders ausgedrückt, das Umleiten von Datenblöcken, die aus dem Speicher gelesen werden, an einen anderen Worker schließt die Beteiligung eines Workers an dem Rest der Abfrage nicht aus, da der Worker möglicherweise an einem clusterweiten, im Datenstrom übertragenen Zufalls- oder Hashverknüpfungs-Vorgang teilnimmt.
  • KURZDARSTELLUNG
  • Aspekte der vorliegenden Erfindung offenbaren ein Verfahren, ein Computerprogrammprodukt und ein System zum automatischen Skalieren einer Abfrage-Steuerungsroutine. Das Verfahren umfasst, dass ein oder mehrere Prozessoren den Abfrageverkehr an der Abfrage-Steuerungsroutine überwachen. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren Abfragen des Abfrageverkehrs nach einer Mehrzahl von Dienstklassen auf der Grundlage einer Komplexitätsstufe einer Abfrage einstufen. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren den Abfrageverkehr für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig verarbeitet werden dürfen, vergleichen. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren ein automatisches Skalieren eines Clusters von Worker-Knoten anweisen, um eine Anzahl von Worker-Knoten der in dem Cluster verfügbaren Worker-Knoten auf der Grundlage des Vergleichs des Abfrageverkehrs mit einem festgelegten Hochskalierungsschwellenwert und einem festgelegten Herunterskalierungsschwellenwert über eine festgelegte Zeitspanne zu ändern. Durch das automatische Skalieren wird eine Anzahl von Worker-Knoten zu einem Cluster von Worker-Knoten, der Abfragen der Abfrage-Steuerungsroutine verarbeitet, hinzugefügt oder daraus entfernt.
  • Dementsprechend können Ausführungsformen der vorliegenden Erfindung den Vorteil bereitstellen, dass der Cluster von Worker-Knoten als Reaktion auf den Arbeitslastbedarf von unterschiedlicher Komplexität nach oben oder unten skaliert werden kann.
  • In einer anderen Ausführungsform kann es sich bei dem festgelegten Hochskalierungsschwellenwert und dem festgelegten Herunterskalierungsschwellenwert jeweils um ein festgelegtes Schwellenverhältnis zwischen einer Anzahl von Abfragen in dem Abfrageverkehr und dem Gleichzeitigkeitsschwellenwert handeln. Dies kann den Arbeitsablauf einer Dienstklasse im Vergleich zu der Kapazität für diese Klasse bestimmen.
  • In einer anderen Ausführungsform kann das Verfahren umfassen, dass ein oder mehrere Prozessoren auf der Grundlage einer Zusammenfassung der Vergleiche des Abfrageverkehrs über alle Dienstklassen hinweg zu einem gegebenen Zeitpunkt eine Anzahl von Worker-Knoten ermitteln, die hinzuzufügen oder zu entfernen sind. Das Ermitteln einer Anzahl von Worker-Knoten, die hinzuzufügen oder zu entfernen sind, kann für jede Dienstklasse, für die der festgelegte Hochskalierungsschwellenwert oder der festgelegte Herunterskalierungsschwellenwert überschritten ist, umfassen, dass die Anzahl von Worker-Knoten, die hinzuzufügen oder zu entfernen sind, auf einem aktuellen Anteil von Worker-Knoten beruht, die der Dienstklasse zugehörig sind, und einer erforderlichen Erhöhung oder Verringerung der Kapazität auf der Grundlage des Vergleichs.
  • In einer anderen Ausführungsform kann das Verfahren umfassen, dass ein oder mehrere Prozessoren den Gleichzeitigkeitsschwellenwert für eine oder mehrere Dienstklassen auf der Grundlage einer neuen Anzahl von Worker-Knoten in dem Cluster nach dem automatischen Skalieren anpassen. Dadurch wird der Schwellenwert automatisch aktualisiert, nachdem ein Skalieren stattgefunden hat. Für das Hochskalieren kann der Abfrageverkehr durch in Warteschlange befindliche Abfragen bestimmt werden, die in Warteschlangen für jede Dienstklasse warten, da der Gleichzeitigkeitsschwellenwert für die Dienstklasse erreicht wurde; und der festgelegte Hochskalierungsschwellenwert kann überschritten sein, wenn ein Verhältnis zwischen einer Anzahl von Abfragen, die in einer Warteschlange für eine Dienstklasse warten, und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne größer ist als ein festgelegtes Verhältnis. Für das Herunterskalieren kann der Abfrageverkehr durch aktuell aktive Abfragen für jede Dienstklasse bestimmt werden; und der festgelegte Herunterskalierungsschwellenwert kann überschritten sein, wenn ein Verhältnis zwischen einer Anzahl von aktiven Abfragen für eine Dienstklasse und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne kleiner ist als ein festgelegtes Verhältnis.
  • In zusätzlichen Ausführungsformen kann das Verfahren umfassen, dass ein oder mehrere Prozessoren mehrere Knotengruppen bereitstellen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen. Die Knotengruppen sind für erwartete Laufzeiten von Abfragen konfiguriert. Das Verfahren kann darüber hinaus umfassen, dass ein oder mehrere Prozessoren eine Dienstklasse von Abfragen einer Knotengruppe zuordnet, um Worker-Knoten der zugeordneten Knotengruppe Abfragen einer Dienstklasse zuzuweisen. Ein automatisches Skalieren durch Entfernen einer Anzahl von Worker-Knoten kann ein Auswählen einer Anzahl von Worker-Knoten zum Entleeren vor dem Entfernen gemäß Knotengruppen umfassen, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst geringe erwartete Laufzeit von Abfragen konfiguriert ist.
  • Ein anderer Aspekt der vorliegenden Erfindung offenbart ein Verfahren, ein Computerprogrammprodukt und ein System zum automatischen Skalieren einer Abfrage-Steuerungsroutine. Das Verfahren umfasst, dass ein oder mehrere Prozessoren Abfragen des Abfrageverkehrs auf der Grundlage einer Dienstklasse einstufen, und zwar auf der Grundlage von jeweiligen Stufen der Abfragekomplexität. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren Worker-Knoten automatisch skalieren, indem sie eine Anzahl von Worker-Knoten zu den in einem Cluster verfügbaren Worker-Knoten auf der Grundlage des Abfrageverkehrs an einer Steuerungsroutine hinzufügen oder daraus entfernen. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren mehrere Knotengruppen bereitstellen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen, wobei die Knotengruppen für eine erwartete Laufzeit von Abfragen konfiguriert sind. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren jede Dienstklasse von Abfragen einer Knotengruppe entsprechend einer Affinität zwischen Dienstklassen und Knotengruppen zuordnen. Weiterhin weist das automatische Skalieren durch Entfernen einer Anzahl von Worker-Knoten auf, dass ein oder mehrere Prozessoren eine Anzahl von Worker-Knoten auswählen, die vor dem Entfernen gemäß Knotengruppen entleert werden, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst geringe erwartete Laufzeit von Abfragen konfiguriert ist.
  • Dementsprechend können Ausführungsformen der vorliegenden Erfindung den Vorteil bereitstellen, dass die Auswirkungen des Herunterskalierens eines Clusters auf laufende Abfragen minimiert werden, indem Knoten, die nicht mit lang laufenden Abfragen beschäftigt sind, entfernt werden.
  • In einer anderen Ausführungsform kann das Verfahren umfassen, dass ein oder mehrere Prozessoren die Knotengruppen ordnen, wobei Knotengruppen mit geringeren erwarteten Laufzeiten von Abfragen zuerst entleert werden. Zusätzlich sind die Knotengruppen dynamisch und werden entsprechend dem automatischen Skalieren der Worker-Knoten angepasst.
  • In zusätzlichen Ausführungsformen kann das Verfahren umfassen, dass ein oder mehrere Prozessoren den Abfrageverkehr in Form von aktiven Abfragen für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert für eine maximale Anzahl von Abfragen der Dienstklasse vergleichen, die gleichzeitig zu verarbeiten sind. Das Verfahren umfasst darüber hinaus, dass ein oder mehrere Prozessoren ein automatisches Skalieren vornehmen, indem sie eine Anzahl von Worker-Knoten aus den in dem Cluster verfügbaren Worker-Knoten entfernen, und zwar auf der Grundlage, dass der Vergleich einen festgelegten Herunterskalierungsschwellenwert überschreitet, wobei die Überschreitung über eine festgelegte Zeitspanne beibehalten wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Der als Erfindung angesehene Gegenstand wird insbesondere in dem abschließenden Teil der Beschreibung dargelegt und eindeutig beansprucht.
  • Bevorzugte Ausführungsformen der vorliegenden Erfindung werden nun lediglich beispielhaft unter Bezugnahme auf die folgenden Zeichnungen beschrieben.
    • 1 ist ein schematisches Schaubild einer beispielhaften Ausführungsform eines Systems gemäß Ausführungsformen der vorliegenden Erfindung, in dem die vorliegende Erfindung umgesetzt werden kann.
    • 2 ist ein Ablaufplan einer beispielhaften Ausführungsform eines Verfahrens gemäß Ausführungsformen der vorliegenden Erfindung.
    • 3 ist ein Ablaufplan einer beispielhaften Ausführungsform eines Verfahrens zum Hochskalieren gemäß Ausführungsformen der vorliegenden Erfindung.
    • 4 ist ein Ablaufplan einer beispielhaften Ausführungsform eines Verfahrens zum Herunterskalieren gemäß Ausführungsformen der vorliegenden Erfindung.
    • 5A ist ein schematisches Schaubild einer beispielhaften Ausführungsform gemäß Ausführungsformen der vorliegenden Erfindung.
    • 5B ist ein schematisches Schaubild einer beispielhaften Ausführungsform gemäß Ausführungsformen der vorliegenden Erfindung.
    • 5C ist ein schematisches Schaubild einer beispielhaften Ausführungsform gemäß Ausführungsformen der vorliegenden Erfindung.
    • 6 ist ein Blockschaubild einer beispielhaften Ausführungsform eines Systems gemäß Ausführungsformen der vorliegenden Erfindung.
    • 7 ist ein Blockschaltbild einer Ausführungsform eines Computersystems oder eines Cloud-Servers gemäß Ausführungsformen der vorliegenden Erfindung, in dem die vorliegende Erfindung umgesetzt werden kann.
    • 8 ist ein schematisches Schaubild einer Cloud-Computing-Umgebung gemäß Ausführungsformen der vorliegenden Erfindung, in der die vorliegende Erfindung umgesetzt werden kann.
    • 9 ist ein schematisches Schaubild von Abstraktionsmodellschichten einer Cloud-Computing-Umgebung gemäß Ausführungsformen der vorliegenden Erfindung, in der die vorliegende Erfindung umgesetzt werden kann.
  • Man wird verstehen, dass in den Figuren gezeigte Elemente der Einfachheit und Klarheit der Abbildung halber nicht unbedingt maßstabsgetreu gezeichnet sind. Die Abmessungen einiger Elemente können zum Beispiel in Bezug auf andere Elemente der Klarheit halber übertrieben groß dargestellt sein. Weiterhin können sich Bezugszahlen in den Figuren wiederholen, wenn dies angebracht erscheint, um entsprechende oder analoge Merkmale anzuzeigen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die beschriebenen Systeme und Verfahren werden für ein automatisches Skalieren einer Abfrage-Steuerungsroutine für Arbeitslasten im Bereich Big Data auf Unternehmensebene bereitgestellt. Das automatische Skalieren umfasst ein Hochskalieren durch Hinzufügen einer Anzahl von Worker-Knoten zu einem Cluster von Worker-Knoten, der Abfragen der Abfrage-Steuerungsroutine verarbeitet, oder ein Herunterskalieren durch Entfernen einer Anzahl von Worker-Knoten.
  • Ausführungsformen der vorliegenden Erfindung können so betrieben werden, dass der Abfrageverkehr an der Abfrage-Steuerungsroutine in Form von in Warteschlange befindlichen Abfragen und aktiven Abfragen überwacht wird, wobei die Abfragen auf der Grundlage einer Komplexitätsstufe der Abfragen in Dienstklassen eingestuft werden. Der Abfrageverkehr für jede Dienstklasse wird mit einem Gleichzeitigkeitsschwellenwert verglichen, der die maximale Anzahl von Abfragen der Dienstklasse angibt, die gleichzeitig verarbeitet werden dürfen, wodurch festgestellt wird, ob Schwellenwerte überschritten werden, die ein Hoch- oder Herunterskalieren der Anzahl von Worker-Knoten erfordern, um den Abfrageverkehr zu bewältigen.
  • In Ausführungsformen der vorliegenden Erfindung kann dann ein automatisches Skalieren des Clusters angewiesen werden, um eine Anzahl von Worker-Knoten zu den in dem Cluster verfügbaren Worker-Knoten hinzuzufügen oder daraus zu entfernen, und zwar auf der Grundlage dessen, dass der Vergleich einen festgelegten Hochskalierungsschwellenwert oder einen festgelegten Herunterskalierungsschwellenwert überschreitet, wobei die Überschreitung über eine festgelegte Zeitspanne beibehalten wird. Das Skalieren einer Anzahl von Worker-Knoten in der Abfrage-Steuerungsroutine wird auf der Grundlage einer Verteilung von Abfragen auf Worker-Knoten entsprechend den Dienstklassen der Abfragen durchgeführt, und ein Instanziieren oder das Entfernen von Knoten aus der Abfrage-Steuerungsroutine beruht auf den Anforderungen für jede Abfrage-Dienstklasse.
  • Des Weiteren wird in Ausführungsformen der vorliegenden Erfindung eine Notwendigkeit erkannt, bei Arbeitsschritten zum Herunterskalieren zuerst zu entfernende Worker-Knoten aus der Gruppe von Worker-Knoten aus der Gruppierung mit der geringsten Kostenkomplexität auszuwählen, um einen schnellen Abschluss des Arbeitsschritts des Herunterskalierens ohne jegliche Auswirkung auf laufende Abfragen sicherzustellen.
  • In einer anderen Ausführungsform der beschriebenen Verfahren und Systeme werden mehrere Knotengruppen bereitgestellt, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen, wobei die Knotengruppen gemäß erwarteten Laufzeiten von Abfragen konfiguriert sind. Jede Dienstklasse von Abfragen wird einer Knotengruppe zugeordnet, um eine Affinität zwischen Dienstklassen und Knotengruppen bereitzustellen. Wenn ein automatisches Skalieren durch Herunterskalieren erforderlich ist, können bei Ausführungsformen der vorliegenden Erfindung Worker-Knoten vor dem Entfernen der Worker-Knoten entleert werden. Worker-Knoten werden daher zum Entleeren vor dem Entfernen gemäß Knotengruppen ausgewählt, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst geringe erwartete Laufzeit von Abfragen konfiguriert ist.
  • Zusätzlich zu den grundlegenden Mechanismen des Erweiterns oder Verringerns der Berechnungskapazität in einer Abfrage-Steuerungsroutine wird in Ausführungsformen der vorliegenden Erfindung eine Notwendigkeit erkannt, die von der kostenbasierten Optimierungsfunktion der Abfrage-Steuerungsroutine ermittelte Komplexität von Abfragen einzubeziehen. Durch Ermitteln der Abfragekomplexität und anschließendes Zuweisen von Abfragen zu einem Satz von Dienstklassen mit unterschiedlicher Komplexitätsgruppierung kann der Cluster rechtzeitig und ordnungsgemäß erweitert werden. In Ausführungsformen der vorliegenden Erfindung wird bei Arbeitsschritten der Verkleinerung eine Notwendigkeit erkannt, zu entfernende Worker aus der Gruppe von Workern aus der Gruppierung mit der geringsten Kostenkomplexität zuerst auszuwählen, um ein schnelles und ordentliches Entfernen der in Frage kommenden Worker sicherzustellen. In verschiedenen Ausführungsformen können automatische Arbeitsschritte zum Hoch- und Herunterskalieren, wie durch die Warteschlangenlängen und Antwortzeiten bestimmt, ausgelöst werden.
  • In Ausführungsformen der vorliegenden Erfindung kann ein Skalieren als Reaktion auf den vorherrschenden Arbeitslastbedarf von Endbenutzern unterschiedlicher Komplexität durchgeführt werden. In weiteren Ausführungsformen der vorliegenden Erfindung kann ein elastisches und automatisches Skalieren als Reaktion auf Abfragen von Endbenutzern auf der Grundlage eines kostensegmentierten Profils von Arbeitslasten erreicht werden, indem Gruppen von Worker-Knoten auf der Grundlage eines Kostenprofils zugeordnet und dann zu entfernende Worker-Knoten aus der Worker-Knoten-Gruppe zuerst ausgewählt werden, die den Abfragen mit den niedrigsten Kosten (und damit der geringsten Laufzeit) zugehörig ist.
  • Mit diesen neuen Funktionen kann die Abfrage-Steuerungsroutine so arbeiten, dass sie als Reaktion auf eine zuverlässige Vorhersage des gesamtheitlichen Arbeitslastbedarfs, die auf den hochentwickelten und präzisen kostenbasierten Optimierungs- und Arbeitslastverwaltungskomponenten beruht, schnell und ordnungsgemäß automatisch skaliert.
  • Unter Bezugnahme auf 1 zeigt ein Blockschaubild 101 eine beispielhafte Ausführungsform einer Abfrage-Steuerungsroutine 100 für Arbeitslasten im Bereich Big Data auf Unternehmensebene gemäß Ausführungsformen der vorliegenden Erfindung.
  • Moderne Abfrage-Steuerungsroutinen mit massiver Parallelverarbeitung (MPP) (z.B. die Abfrage-Steuerungsroutine 100) wie zum Beispiel SQL-Steuerungsroutinen weisen üblicherweise einen Cluster mit einem Kopfknoten 110 und einer Mehrzahl von „n“ Worker-Knoten 150 auf (wobei n einige Hundert oder sogar Tausende von Knoten umfassen kann). Die Worker-Knoten 150 werden im Wesentlichen Containern zugeordnet, die auf einer Host-Maschine (virtuelle Maschine oder Bare Metal) geplant werden, wobei üblicherweise ein oder bis zu einer Handvoll Worker-Knoten auf jeder Host-Maschine platziert werden. Wenn eine Abfrage an die Steuerungsroutine 100 übermittelt wird, wird die Abfrage so geplant, dass sie auf den verfügbaren Worker-Knoten 150 ausgeführt wird, wobei jeder Worker-Knoten 150 ein Fragment ausführt, das auch als Laufzeitabschnitt der erstellten Abfrage bekannt ist. In einigen Umsetzungen wird die Liste von Knoten als „dynamische Knotengruppe“ bezeichnet. Die Liste ist nicht statisch, da sie von der Anzahl der Worker-Knoten 150 abhängt, die zum Zeitpunkt des Übermittelns der Abfrage in dem Cluster vorhanden waren, und davon, ob irgendwelche explizit ausgeschlossen wurden (z.B. wenn ein Hardwarefehler auf einer Host-Maschine erkannt wird).
  • Der Kopfknoten 110 kann auf einer physischen oder virtuellen Maschine laufen und mindestens einen Prozessor 111, ein Hardwaremodul oder eine Schaltung zum Ausführen der Funktionen der beschriebenen Komponenten umfassen, bei denen es sich um Softwareeinheiten handeln kann, die auf dem mindestens einen Prozessor ausgeführt werden. Es können mehrere Prozessoren bereitgestellt werden, auf denen parallele Verarbeitungsthreads laufen, wodurch eine parallele Verarbeitung einiger oder sämtlicher Funktionen der Komponenten ermöglicht wird. Der Speicher 112 kann so konfiguriert sein, dass er Computeranweisungen 113 für den mindestens einen Prozessor 111 bereitstellt, um die Funktionalität der Komponenten auszuführen.
  • Die Abfrage-Steuerungsroutine 100 kann eine Abfrage-Optimierungskomponente 114 umfassen, die für ein Auswählen des optimalen Abfragezugriffsplans zuständig ist, und eine Abfrage-Kostenanalysekomponente 115 zum Bereitstellen einer zugehörigen Laufzeitkostenschätzung einer Abfrage. In diesen Ausführungsbeispielen handelt es sich bei den Kosten um eine fiktive Maßeinheit (als Timeron bezeichnet), aber in der Praxis stellen die Kosten eine Kombination aus der Laufzeitdauer und den Gesamtressourcen des Clusters dar, die zum Abschließen der Abfrage benötigt werden.
  • In Verbindung mit der Abfrage-Optimierungskomponente 114 kann die Abfrage-Steuerungsroutine 100 auch über eine Komponente 120 zur Verwaltung von Arbeitslasten (WLM, workload management) zum Überwachen und Steuern von Anweisungen verfügen, die auf dem Cluster ausgeführt werden, um eine effiziente Verwendung der Cluster-Ressourcen zu erreichen und sicherzustellen, dass der Cluster nicht zu stark oder zu schwach ausgelastet ist. Auf einer hohen Ebene kann eine bestimmte Anzahl von gleichzeitigen Abfragen ausgeführt werden, um die Cluster-Ressourcen nicht zu überlasten. Wenn der Schwellenwert überschritten wird, wird eingehende Arbeit in eine Warteschlange gestellt (z.B. dargestellt als Warteschlange 141, Warteschlange 142 und Warteschlange 143), bis einige der früheren Abfragen abgeschlossen sind.
  • Die WLM-Komponente 120 kann eine Dienstklassen-Zuordnungskomponente 121 umfassen, die Abfragen auf der Grundlage von jeweiligen Kosten und anderen Attributen (z.B. Benutzern und Gruppen, einem als WLM-Dienstklasse bezeichneten logischen Konzept) zuordnet. Die WLM-Komponente 120 kann Abfragen beruhend auf den von der Optimierungskomponente 114 berechneten Laufzeitkosten in Dienstklassen unterteilen, die verschiedene Komplexitätsgruppierungen darstellen Die Gruppierungen können auf der Grundlage eines Zeitraums eines Überwachens des Clusters kalibriert werden, um die relative Ressourcennutzung von Abfragen über verschiedene Kostenprofile hinweg zu verstehen.
  • Zum Beispiel könnten Abfragen mit Timeron-Kosten von weniger als 150000 als „trivial“, Abfragen mit Timeron-Kosten zwischen 150001 und einer Million als „einfach“, Abfragen mit Timeron-Kosten zwischen einer Million und sechs Millionen als „mittel“ und Abfragen mit Timeron-Kosten von mehr als sechs Millionen als „komplex“ eingestuft werden. Dementsprechend werden Abfragen den Dienstklassen trivial, einfach, mittel und komplex auf der Grundlage der Kosten zugeordnet, die von der Optimierungskomponente 114 geschätzt werden, wenn die Abfrage an die Abfrage-Steuerungsroutine 100 übermittelt wird.
  • Auf der Grundlage der in der Kalibrierungsphase gewonnenen Informationen kann ein Systemverwalter der Abfrage-Steuerungsroutine Schwellenwerte für die Anzahl der gleichzeitigen Abfragen, die in jeder dieser Dienstklassen ausgeführt werden können, in einer Komponente 122 zum Festsetzen und Anpassen des Gleichzeitigkeitsschwellenwerts der WLM-Komponente 120 festsetzen. In beispielhaften Ausführungsformen werden die für jede Gruppe festgesetzten Schwellenwerte üblicherweise so ausgewählt, dass die Gesamtressourcennutzung für Dienstklassen (z.B. für einfache, mittlere und komplexe Abfragen) gleich ist. Zum Beispiel könnte der Prozess in einem bestimmten Cluster zu einem Gleichzeitigkeitsschwellenwert von zwei Abfragen in der komplexen Gruppe, fünf Abfragen in der mittleren Gruppe und zehn Abfragen in der einfachen Gruppe führen. Die trivialen Abfragen können als so geringe Ressourcenanforderungen aufweisend angesehen werden, dass die Abfragen unverwaltet bleiben. Sobald ein Gleichzeitigkeitsschwellenwert für eine Dienstklasse erreicht ist, werden die nachfolgenden Abfragen in einer FIFO- (First-in-Firstout-) Warteschlange (d.h. in Warteschlangen 141 bis 143) für die zugehörige Dienstklasse verwaltet. Dementsprechend kann der Systemverwalter sicherstellen, dass jeder Dienstklasse angemessene Ressourcen zur Verfügung stehen, was so wirken kann, dass die Gesamtstabilität des Clusters gesichert wird, indem eine Situation vermieden wird, in der Ressourcen zu stark beansprucht werden, was zu negativen Auswirkungen auf die Stabilität führt, wie zum Beispiel eine Auslagerung.
  • Das beschriebene Verfahren und das beschriebene System erweitern die Funktionalität der Abfrage-Steuerungsroutine 100, um eine Autoskalierungskomponente 130 bereitzustellen, die als Reaktion auf den Abfrageverkehr für die Dienstklassen Arbeitsschritte zum Hoch- oder Herunterskalieren der Anzahl von Worker-Knoten 150 bewirkt. Bei dem Abfrageverkehr handelt es sich um die Warteschlangenlänge, wenn ein Hochskalieren in Betracht gezogen wird, und um die Anzahl von aktuell aktiven Abfragen, wenn ein Herunterskalieren in Betracht gezogen wird. Der Abfrageverkehr wird mit einer maximalen Anzahl von Warteschlangen verglichen, die gleichzeitig pro Dienstklasse verarbeitet werden. In Ausführungsformen der vorliegenden Erfindung können die Warteschlangenlängen (der Warteschlangen 141 bis 143) überwacht und Schwellenwerte für ein automatisches Hochskalieren auf der Grundlage eines Vergleichs einer Warteschlangenlänge für eine Dienstklasse über eine bestimmte Zeitspanne und des Gleichzeitigkeitsschwellenwerts für diese Dienstklasse festgesetzt werden. In weiteren Ausführungsformen der vorliegenden Erfindung können die aktive Anzahl von Abfragen überwacht und Schwellenwerte für ein automatisches Herunterskalieren auf der Grundlage eines Vergleichs der Anzahl von aktiven Abfragen für eine Dienstklasse über eine bestimmte Zeitspanne und der Gleichzeitigkeitsschwelle für diese Dienstklasse festgesetzt werden.
  • Das beschriebene Verfahren und das beschriebene System führen auch die Fähigkeit ein, mehrere dynamische Knotengruppen einzusetzen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten 150 in dem Cluster aufweisen, die als Prozentsatz der insgesamt verfügbaren Worker-Knoten 150 angegeben sind, wobei Arbeitslast-Dienstklassen den dynamischen Knotengruppen zugeordnet werden, um eine gewisse Affinität zwischen der Dienstklasse und den Knotengruppen bereitzustellen.
  • Unter Bezugnahme auf 2 zeigt ein Ablaufplan ein Verfahren 200, eine beispielhafte Ausführungsform eines Aspekts des beschriebenen Verfahrens, wie es von einer Abfrage-Steuerungsroutine 100 durchgeführt wird, gemäß Ausführungsformen der vorliegenden Erfindung. In verschiedenen Ausführungsformen kann die Abfrage-Steuerungsroutine 100 (dargestellt in dem Blockschaubild 101 in 1) die Prozesse des Verfahrens 200 durchführen. Zusätzlich kann das Verfahren des Verfahrens 200 mit einer anfänglichen Vorverarbeitungskonfiguration einiger in dem Verfahren verwendeter Parameter einhergehen.
  • In Schritt 201 konfiguriert das Verfahren 200 Dienstklassen für Abfragen auf der Grundlage der Komplexität der Abfragen. In einer Ausführungsform kann die Abfrage-Steuerungsroutine 100 eine kostenbasierte Optimierungskomponente verwenden, um die Laufzeitkosten von Abfragen auf der Grundlage einer Kombination aus Laufzeitdauer und für die Abfragen erforderlichen Cluster-Ressourcen zu berechnen. Die Abfrage-Steuerungsroutine 100 kann Abfragen beruhend auf den Laufzeitkosten in Dienstklassen unterteilen oder einstufen, die verschiedene Komplexitätsgruppierungen darstellen, wobei die Gruppierungen auf der Grundlage eines Zeitraums eines Überwachens des Clusters kalibriert werden. In Schritt 202 setzt das Verfahren 200 Gleichzeitigkeitsschwellenwerte für jede Dienstklasse als eine maximale Anzahl von Abfragen der Dienstklasse fest, die gleichzeitig durch den Cluster verarbeitet werden dürfen.
  • In Schritt 203 konfiguriert das Verfahren 200 Schwellenwerte für das Hochskalieren und Schwellenwerte für das Herunterskalieren von Dienstklassen. In verschiedenen Ausführungsformen kann das Verfahren 200 den festgelegten Hochskalierungsschwellenwert und den festgelegten Herunterskalierungsschwellenwert so konfigurieren, dass es sich dabei jeweils um ein festgelegtes Schwellenverhältnis zwischen einer Anzahl von Abfragen in dem Abfrageverkehr und dem Gleichzeitigkeitsschwellenwert handelt. Der Abfrageverkehr kann unterschiedlich sein, wenn es darum geht, ob ein Hoch- oder Herunterskalieren erforderlich ist. In der beschriebenen Ausführungsform wird der Abfrageverkehr für Hochskalierungszwecke anhand der aktuell in Warteschlange befindlichen Abfragen der Dienstklasse gemessen, und der Abfrageverkehr wird für Herunterskalierungszwecke anhand der aktuell aktiven Abfragen gemessen.
  • In Schritt 204 kann das Verfahren 200 dynamische Knotengruppen konfigurieren, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen und für erwartete Laufzeiten von Abfragen konfiguriert sind. Zum Beispiel kann das Verfahren 200 dynamische Knotengruppen für kurze Abfragen, Abfragen mit durchschnittlicher Laufzeit und Abfragen mit langer Laufzeit konfigurieren. Dienstklassen von Abfragen werden den Knotengruppen zugeordnet, um Worker-Knoten der zugeordneten Knotengruppe Abfragen einer Dienstklasse zuzuweisen.
  • Sobald die Parameter anfänglich konfiguriert worden sind, wird das Verfahren 200 während des Betriebs der Abfrage-Steuerungsroutine 100 ausgeführt, um den Abfrageverkehr für jede Dienstklasse zu überwachen (in Schritt 205). Um eine Anzahl der in der Abfrage-Steuerungsroutine 100 aktiven Worker-Knoten automatisch herunterzuskalieren, kann das Verfahren 200 in Schritt 205 den Abfrageverkehr in Form der aktiven Abfragen pro Dienstklasse überwachen. Um eine Anzahl der in der Abfrage-Steuerungsroutine 100 aktiven Worker-Knoten automatisch hochzuskalieren, kann das Verfahren 200 den Abfrageverkehr in Form der in Warteschlange befindlichen Abfragen pro Dienstklasse überwachen.
  • In Schritt 206 vergleicht das Verfahren 200 den Abfrageverkehr für jede Dienstklasse mit dem Gleichzeitigkeitsschwellenwert für diese Dienstklasse. In Schritt 207 bestimmt das Verfahren 200 dann, ob der Vergleich den festgelegten Herunterskalierungsschwellenwert oder den festgelegten Hochskalierungsschwellenwert überschreitet. Der festgelegte Hochskalierungsschwellenwert ist überschritten, wenn ein Verhältnis zwischen einer Anzahl von Abfragen, die in einer Warteschlange für eine Dienstklasse warten, und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne größer ist als ein festgelegtes Verhältnis. Der festgelegte Herunterskalierungsschwellenwert ist überschritten, wenn ein Verhältnis zwischen einer Anzahl von aktiven Abfragen für eine Dienstklasse und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne kleiner ist als ein festgelegtes Verhältnis.
  • In Schritt 208 kann das Verfahren 200 über alle Dienstklassen hinweg eine Anzahl von Knoten ermitteln, die hinzugefügt oder entfernt werden müssen. In beispielhaften Ausführungsformen kann das Verfahren 200 den Schritt 208 durchführen, indem es die Dienstklassen zusammenfasst, für die der festgelegte Hochskalierungsschwellenwert oder der festgelegte Herunterskalierungsschwellenwert überschritten ist, indem es die Anzahl von Worker-Knoten, die für jede Dienstklasse hinzuzufügen oder zu entfernen sind, auf einen aktuellen Anteil von Worker-Knoten, die der Dienstklasse zugewiesen sind, und eine erforderliche Erhöhung oder Verringerung der Kapazität auf der Grundlage des Vergleichs stützt.
  • Wenn ein Herunterskalieren erforderlich ist, kann das Verfahren 200 Worker-Knoten zum Entleeren in der Reihenfolge der festgelegten dynamischen Knotengruppen auswählen (Schritt 209). Zum Beispiel kann das Verfahren 200 die Knoten auswählen, die weniger kostspielige Abfragen bearbeiten, wie zum Beispiel diejenigen Knoten, die effizienter entleert werden können. In beispielhaften Ausführungsformen kann das Verfahren 200 den Prozess des Entleerens durchführen, ohne bestehende Abfragen, die auf diesen Worker-Knoten laufen, zu beeinträchtigen oder zu unterbrechen. Das Verfahren 200 kann in Frage kommende Knoten, die während des Herunterskalierens zu entfernen sind, zunächst aus Knotengruppen auswählen, denen die kürzer laufenden Abfragen zugewiesen sind, dann aus den Knotengruppen, denen die Abfragen mit mittlerer Laufzeit und Komplexität zugewiesen sind, und schließlich, als letztes Mittel, lediglich aus der Knotengruppe für lang laufende Abfragen auswählen. Dementsprechend werden die in Frage kommenden Knoten schnell von aktiven Abfragen entleert, wodurch sichergestellt wird, dass die Worker-Knoten freigegeben werden können, um den Arbeitsschritt des Herunterskalierens schnell und für die Endbenutzer transparent abzuschließen.
  • Wenn das Entleeren der erforderlichen Anzahl von Worker-Knoten abgeschlossen ist, kann das Verfahren 200, wenn dies zum Herunterskalieren erforderlich ist, automatisch so skalieren, dass die erforderliche Anzahl von Worker-Knoten hinzugefügt oder entfernt wird (Schritt 210). Sowohl in Szenarien des Hochskalierens als auch des Herunterskalierens kann das Verfahren 200 die Gleichzeitigkeitsschwellenwerte der Dienstklassen auf der Grundlage der nach oben oder nach unten skalierten Anzahl von Worker-Knoten anpassen (in Schritt 211). Dann kann das Verfahren 200 die Anpassung für das Festsetzen des Gleichzeitigkeitsschwellenwerts (in Schritt 202) zum weiteren Überwachen und automatischen Skalieren der Abfrage-Steuerungsroutine 100 zurückmelden. Sowohl in Szenarien des Hochskalierens als auch des Herunterskalierens kann das Verfahren 200 die dynamischen Knotengruppen auf der Grundlage der nach oben oder unten skalierten Anzahl von Worker-Knoten anpassen (in Schritt 212). Dann kann das Verfahren 200 (in Schritt 204) die Anpassung an die dynamische Knotengruppenkonfiguration zum weiteren Überwachen und automatischen Skalieren der Abfrage-Steuerungsroutine 100 zurückmelden.
  • Unter Bezugnahme auf 3 zeigt ein Ablaufplan ein Verfahren 300, eine beispielhafte Ausführungsform eines Verfahrens zum automatischen Hochskalieren eines Clusters von Knoten in einer Abfrage-Steuerungsroutine 100, gemäß Ausführungsformen der vorliegenden Erfindung. In verschiedenen Ausführungsformen kann die Abfrage-Steuerungsroutine 100 (dargestellt in dem Blockschaubild 101 in 1) die Prozesse des Verfahrens 300 durchführen.
  • In Schritt 301 wird das Verfahren 300 eingeleitet, und in Schritt 302 überwacht das Verfahren 300 dann in Warteschlange befindliche Abfragen in dem Cluster der Abfrage-Steuerungsroutine 100. Dann führt das Verfahren 300 in Prozess 310 des Verfahrens 300 für jede Dienstklasse den Prozess von Schritten 311 bis 312 fortlaufend parallel durch. In Schritt 311 prüft das Verfahren, ob sich Abfragen für die Dienstklasse in einer Warteschlange befinden. Als Reaktion auf ein Feststellen (in Schritt 312), dass das Verhältnis zwischen in Warteschlange befindlichen Abfragen und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse größer ist als ein Schwellenwertverhältnis für eine Zeit in Warteschlange, die länger ist als eine festgelegte Reaktionszeit, ermittelt das Verfahren 300 dann (in Schritt 313) eine Anzahl von Deltaknoten, die der Dienstklasse hinzuzufügen sind.
  • Weiterhin ermittelt das Verfahren 300 in Schritt 303 eine Gesamtzahl von Deltaknoten, die klassenübergreifend hinzuzufügen sind. Dann skaliert das Verfahren 300 den Cluster hoch und fügt die Delta-Anzahl von Worker-Knoten (in Schritt 304) hinzu. In Schritt 305 passt das Verfahren 300 die konfigurierten Gleichzeitigkeitsschwellenwerte der Dienstklasse so an, dass die neuen Worker-Knoten berücksichtigt werden. Zusätzlich kann das Verfahren 200 (in Schritt 306) auch die dynamischen Knotengruppen für die Dienstklassen anpassen. Das Verfahren 300 geht dann in einer Schleife zu Schritt 302 über, um in Warteschlange befindliche Abfragen in dem hochskalierten Cluster zu überwachen.
  • Unter Bezugnahme auf 4 zeigt ein Ablaufplan ein Verfahren 400, eine beispielhafte Ausführungsform eines Verfahrens zum automatischen Herunterskalieren eines Clusters von Knoten in einer Abfrage-Steuerungsroutine 100, gemäß Ausführungsformen der vorliegenden Erfindung. In verschiedenen Ausführungsformen kann die Abfrage-Steuerungsroutine 100 (dargestellt in dem Blockschaubild 101 in 1) die Prozesse des Verfahrens 400 durchführen.
  • In Schritt 401 wird das Verfahren 400 eingeleitet, und in Schritt 402 überwacht das Verfahren 400 dann aktive Abfragen in den Knoten des Clusters der Abfrage-Steuerungsroutine 100. Dann führt das Verfahren 400 in Prozess 410 des Verfahrens 400 für jede Dienstklasse Schritte 411 bis 412 fortlaufend parallel durch. In Schritt 411 prüft das Verfahren 400, ob aktive Abfragen für die Dienstklasse vorliegen. Als Reaktion auf ein Feststellen (in Schritt 412), dass das Verhältnis zwischen aktiven Abfragen und dem Gleichzeitigkeitsschwellenwert kleiner ist als ein Schwellenwertverhältnis, und zwar für eine Zeit, die länger ist als eine festgelegte Zeit niedriger Aktivität, ermittelt das Verfahren 400 dann (in Schritt 413) eine Anzahl von Deltaknoten, die für die Dienstklasse zu entfernen sind.
  • Weiterhin ermittelt das Verfahren 400 in Schritt 403 eine Gesamtzahl von Deltaknoten, die klassenübergreifend zu entfernen sind. In verschiedenen Ausführungsformen müssen die Knoten vor dem Entfernen der Knoten entleert werden. Das Verfahren 400 umfasst ein Auswählen der zu entleerenden Worker-Knoten in der Reihenfolge der festgelegten dynamischen Knotengruppen, die Dienstklassen angehörig sind (Schritt 404). Nachdem das Entleeren der erforderlichen Anzahl von Knoten abgeschlossen wurde, kann das Verfahren 400 den Cluster herunterskalieren, um die Delta-Anzahl von Worker-Knoten zu entfernen (Schritt 405).
  • In Schritt 406 kann das Verfahren 400 die prozentualen Schwellenwerte für die aktive Dienstklasse so anpassen, dass die entfernten Worker-Knoten berücksichtigt werden. Zusätzlich kann das Verfahren 400 in Schritt 407 auch die dynamischen Knotengruppen für die Dienstklassen anpassen. Das Verfahren 400 geht dann in einer Schleife zu Schritt 402 über, um in Warteschlange befindliche Abfragen in dem herunterskalierten Cluster zu überwachen.
  • 5A stellt ein schematisches Schaubild 500 dar, um eine beispielhafte Ausführungsform der beschriebenen Verfahren gemäß Ausführungsformen der vorliegenden Erfindung zu veranschaulichen. 5B stellt ein schematisches Schaubild 590 dar, um eine beispielhafte Ausführungsform der beschriebenen Verfahren gemäß Ausführungsformen der vorliegenden Erfindung zu veranschaulichen. 5C stellt ein schematisches Schaubild 598 dar, um eine beispielhafte Ausführungsform der beschriebenen Verfahren gemäß Ausführungsformen der vorliegenden Erfindung zu veranschaulichen. In den dargestellten Ausführungsformen veranschaulicht 5A ein Hochskalierungsszenario, 5B veranschaulicht eine Zusammengehörigkeit von dynamischen Knotengruppen und Dienstklassen, und 5C veranschaulicht ein Herunterskalierungsszenario.
  • 5A und 5B zeigen eine Komponente 120 zur Verwaltung von Arbeitslasten, die mehrere Abfragen (d.h. eine Abfrage 501, eine Abfrage 502, eine Abfrage 503 und eine Abfrage 504) zur Ausführung durch einen Cluster von Worker-Knoten 570 empfängt und verarbeitet, der einen Knoten 571, einen Knoten 572, einen Knoten 573, einen Knoten 574, einen Knoten 575, einen Knoten 576, einen Knoten 577, einen Knoten 578 und einen Knoten 579 (d.h. die Knoten 571 bis 579) umfasst. In dem dargestellten Beispiel werden mehrere Dienstklassen für unterschiedliche Kostenklassen von Abfragen konfiguriert. In der dargestellten Ausführungsform umfasst die Komponente 120 zur Verwaltung von Arbeitslasten eine triviale Dienstklasse 510, eine einfache Dienstklasse 520, eine mittlere Dienstklasse 530 und eine komplexe Dienstklasse 540. Jede Dienstklasse verfügt über einen konfigurierten Gleichzeitigkeitsschwellenwert als Anzahl der gleichzeitigen Abfragen, die für jede Klasse bearbeitet werden können. In der dargestellten Ausführungsform ist der Gleichzeitigkeitsschwellenwert für triviale Abfragen unbegrenzt 511, für einfache Abfragen beträgt er zehn (Gleichzeitigkeitsschwellenwert 521), für mittlere Abfragen beträgt er fünf (Gleichzeitigkeitsschwellenwert 531) und für komplexe Abfragen beträgt er zwei (Gleichzeitigkeitsschwellenwert 541).
  • Die Komponente 120 zur Verwaltung von Arbeitslasten umfasst Warteschlangen 512, 522, 532, 542 für Abfragen aus jeder Dienstklasse, die in dem Cluster von Worker-Knoten 570 auf die Ausführung warten. Die dargestellten Beispiele umfassen auch eine Knotengruppen-Zuordnungskomponente 550, die in Bezug auf 5B näher beschrieben wird. Der Cluster von Worker-Knoten 570 kann eine Anzahl von Worker-Knoten umfassen (d.h. die Knoten 571 bis 579). Zusätzlich ist in aktiven Abfragen 560 die Anzahl von aktiven Abfragen (d.h. die trivialen aktiven Abfragen 514, die einfachen aktiven Abfragen 524, die mittleren aktiven Abfragen 534 und die komplexen aktiven Abfragen 544) für jede Dienstklasse von Abfragen dargestellt, die über Untergruppen der Knoten 571 bis 579 ausgeführt werden.
  • Unter Bezugnahme auf 5A veranschaulicht das schematische Schaubild 500 ein automatisches Skalieren einer Anzahl von Worker-Knoten gemäß beispielhaften Ausführungsformen der vorliegenden Erfindung. In einem Beispiel kann ein Systemverwalter eine Höhe 551 des Warteschlangenschwellenwerts konfigurieren, der in diesem Beispiel eine prozentuale Anzahl von in Warteschlange befindlichen Abfragen in jeder Dienstklasse im Vergleich zum Gleichzeitigkeitsschwellenwert für jede Dienstklasse darstellt. In diesem Beispiel konfiguriert der Cluster-Systemverwalter die prozentuale Änderung auf einen Wert von 50 % und die Reaktionszeit auf fünf Minuten. Ein Systemverwalter kann auch eine Höhe 552 des Aktiv-Schwellenwerts konfigurieren, der in diesem Beispiel eine prozentuale Anzahl von in jeder Dienstklasse aktiven Abfragen im Vergleich zum Gleichzeitigkeitsschwellenwert für jede Dienstklasse darstellt.
  • Das in 5A gezeigte Beispiel umfasst sechzehn aktive triviale Abfragen 514. Der Gleichzeitigkeitsschwellenwert 511 für triviale Abfragen ist unbegrenzt, so dass der Gleichzeitigkeitsschwellenwert kein Hochskalieren von Knoten bewirkt. Zusätzlich stellt 5A neun aktive einfache Abfragen 524 dar, und der Gleichzeitigkeitsschwellenwert 521 für einfache Abfragen beträgt zehn; daher bewirkt der Gleichzeitigkeitsschwellenwert kein Hochskalieren von Knoten.
  • In einer weiteren Ausführungsform beträgt der Gleichzeitigkeitsschwellenwert für die Dienstklasse von mittleren Abfragen fünf (Gleichzeitigkeitsschwellenwert 531), und 5A stellt eine volle Kapazität von fünf aktiven mittleren Abfragen 534 dar. Zusätzlich umfasst 5A zwei in Warteschlange befindliche mittlere Abfragen 533; allerdings beträgt zwei weniger als der Warteschlangenschwellenwert 551 von 50 %, so dass dies kein Hochskalieren der Knotenpunkte auslöst.
  • In einer anderen Ausführungsform ist der Gleichzeitigkeitsschwellenwert für eine Dienstklasse 4 für komplexe Abfragen auf einen Gleichzeitigkeitsschwellenwert von zwei gesetzt (z.B. der Gleichzeitigkeitsschwellenwert 541), und auf dem Cluster von Worker-Knoten 570 laufen bereits zwei komplexe aktive Abfragen 544. Eine neue komplexe Abfrage 543 wird an den Cluster von Worker-Knoten 570 übermittelt und von der Arbeitslast-Verwaltungskomponente 120 für mehr als fünf Minuten in die Warteschlange 542 gestellt. Daher wird eine Autoskalierungskomponente 130 ein Hochskalieren von Knoten bewirken, um den Cluster von Worker-Knoten 570 zu erweitern.
  • Die Anzahl von hochskalierten Knoten kann auf einem gleichen Prozentsatz beruhen wie die Höhe 551 des Warteschlangenschwellenwerts und kann daher als 50 % des Anteils von Knoten in dem Cluster berechnet werden, die komplexe Abfragen bearbeiten. In dieser Ausführungsform wird die Anzahl von Knoten gleichmäßig auf drei Arten aufgeteilt, um die einfachen, mittleren und komplexen Abfragen zu bearbeiten, wobei die trivialen Abfragen über den gesamten Cluster hinweg unbeschränkt sind. In der beispielhaften Ausführungsform aus 5A umfasst das schematische Schaubild 500 aktuell fünfzehn Worker-Knoten (d.h. die Knoten 571 bis 577), von denen fünf komplexe Abfragen bearbeiten. Es ist eine Hochskalierung von 50 % von fünf Knoten erforderlich, was drei zusätzliche Knoten 581, 582, 583 erfordert. Der vorab hochskalierte Cluster 584 ist in Form der Knoten 571 bis 577 dargestellt, und der hochskalierte Cluster 585 ist in Form der Knoten 571 bis 579 und 581 bis 583 dargestellt.
  • Die Autoskalierungskomponente 130 kann die Delta-Anzahl von erforderlichen Worker-Knoten auf der Grundlage der folgenden Formel berechnen:
 D = Obergrenze(N*(IF(qS*100/tS)>=p THEN qS*100/tS/300 ELSE 0 ENDIF + IF(qM*100/tM)>=
 p
 THEN qM*100/tM/300 ELSE 0 ENDIF + IF(qC*100/tC)>=p THEN qC*100/tC/300 ELSE 0 ENDIF)
  • Wobei:
    • D die Delta-Anzahl von Worker-Knoten ist;
    • tS der Gleichzeitigkeitsschwellenwert für die Anzahl von einfachen Abfragen ist;
    • tM der Gleichzeitigkeitsschwellenwert für die Anzahl von mittleren Abfragen ist;
    • tC der Gleichzeitigkeitsschwellenwert für die Anzahl von komplexen Abfragen ist;
    • qS die Anzahl von einfachen, in Warteschlange befindlichen Abfragen ist;
    • qM die Anzahl von mittleren, in Warteschlange befindlichen Abfragen ist;
    • qC die Anzahl von komplexen, in Warteschlange befindlichen Abfragen ist;
    • N die Anzahl von Worker-Knoten ist, die sich aktuell in dem Cluster befinden; und
    • p der Auslöser für das automatische Skalieren in Prozent ist.
  • Es sei darauf hingewiesen, dass der Teiler dreihundert (3x100) auf der Annahme beruht, dass die Kalibrierungsphase zu einer gleichmäßigen Zuteilung von Cluster-Ressourcen zu den drei Bereichen der einfachen, mittleren und komplexen Abfragen führte. Dies kann für verschiedene Zuordnungen variiert werden.
  • Somit wird D in dem beschriebenen Fall wie folgt berechnet: D = Obergrenze ( 15 * ( 1 * 100 / 2 / 300 ) ) = 3
    Figure DE112021005586T5_0001
  • Daher wird der Cluster um drei Worker erweitert, um die Größe des Clusters von fünfzehn auf achtzehn Worker zu erhöhen.
  • Der Gleichzeitigkeitsschwellenwert für die Dienstklasse für mittlere Abfragen liegt bei fünf (Gleichzeitigkeitsschwellenwert 531), und wenn die Anzahl von aktiven mittleren Abfragen 534 auf zwei sinkt, ohne dass sich mittlere Abfragen 533 in Warteschlange befinden, und der Zustand fünf Minuten lang anhält, bewirkt die Autoskalierungskomponente 130 eine entsprechende Verringerung der Größe des Clusters (d.h. sie skaliert den Cluster herunter, um eine berechnete Anzahl von Worker-Knoten freizugeben).
  • Zusätzlich kann der Systemverwalter einen Satz von dynamischen Knotengruppen konfigurieren. In dieser Ausführungsform wird eine erste Knotengruppe für langlaufende Abfragen „lang“ genannt, die an einen ersten Prozentsatz von Knoten in dem Cluster gebunden ist. Eine zweite Knotengruppe wird „durchschnittlich“ für durchschnittlich lange laufende Abfragen genannt, die an einen zweiten Prozentsatz von verschiedenen Knoten in dem Cluster gebunden ist. Eine dritte Knotengruppe wird „kurz“ für kurz laufende Abfragen genannt, die an alle Knoten in dem Cluster gebunden ist. Der Systemverwalter kann dann eine Zuordnung einer Dienstklasse zu einer Knotengruppe erstellen, welche die Dienstklassen für triviale und einfache Abfrage der Knotengruppe „kurz“, die mittlere Dienstklasse der Knotengruppe „durchschnittlich“ und die komplexe Dienstklasse der Knotengruppe „lang“ zuordnet. Die Zuordnung stellt eine Zusammengehörigkeit von Dienstklassen und Knotengruppen bereit.
  • Immer dann, wenn die Autoskalierungskomponente einen Arbeitsschritt zum Herunterskalieren einleitet, werden die zum Entleeren in Frage kommenden Knoten aus Gruppen von Knoten zuerst aus der „kurzen“ Knotengruppe, dann aus der „mittleren“ Knotengruppe und schließlich aus der „langen“ Knotengruppe ausgewählt (z.B. nur als letztes Mittel). Dementsprechend kann eine ziemlich aggressive oder kurze Übergangszeit für die Entleerung vorgegeben werden, da alle Abfragen, die in der „kurzen“ Knotengruppe laufen, recht flüchtig sind und schnell geleert werden. Wenn Knoten aus dem Cluster entleert und wieder freigegeben werden, werden die angegebenen Prozentsätze für die Knotengruppenzuordnung beibehalten, indem die Liste von Knoten, auf denen die AbfrageFragmente eingeplant sind, dynamisch angepasst wird, wenn neue Abfragen an die Abfrage-Steuerungsroutine übermittelt werden.
  • 5B stellt die Knotengruppen-Zuordnungskomponente 550 und die Dienstklasse-Knotengruppen-Zuordnung 595 dar, die eine Affinität zwischen Abfragekomplexität und bestimmten Worker-Knoten bereitstellt. Zusätzlich zum Zuweisen jeder einzelnen Abfrage zu der jeweiligen Dienstklasse auf der Grundlage von Optimierungskosten und dem Anwenden der zugehörigen Gleichzeitigkeitsschwellenwerte ordnet die Komponente 120 zur Verwaltung von Arbeitslasten den entsprechenden Knotengruppen Abfragen zu 595, in denen die Abfragefragmente für die Abfragen der Dienstklasse geplant werden.
  • In diesem Beispiel können die Abfragen der trivialen Dienstklasse 510 und der einfachen Dienstklasse 520 einer Knotengruppe für „kurz“ laufende Abfragen 593 zugeordnet werden, die alle Worker-Knoten in dem Cluster umfasst; die Abfragen der Dienstklasse 530 mittlerer Komplexität können der Knotengruppe für Abfragen 592 von „durchschnittlicher“ Laufzeit zugeordnet werden, die an 35 % der Worker-Knoten in dem Cluster gebunden ist; und die komplexen Abfragen der Dienstklasse 540 können der Knotengruppe für „lang“ laufende Abfragen 591 werden, die an einen anderen Satz gebunden ist, der 35 % der Worker-Knoten umfasst.
  • Als Reaktion auf ein Einleiten eines Arbeitsschritts zum Herunterskalieren des Clusters werden zunächst die für die Räumung in Frage kommenden Worker-Knoten aus den Knoten ausgewählt, die ausschließlich an die Knotengruppe „kurz“ gebunden sind. In der in 5B dargestellten beispielhaften Konfiguration werden die 30 % der Worker-Knoten 594 in dem Cluster ausgewählt, die nicht auch an die Knotengruppen „durchschnittlich“ 592 und „lang“ (die lange laufenden Abfragen 591) gebunden sind, was bedeutet, dass der Cluster um 30 % der ursprünglichen Größe herunterskaliert werden kann und lediglich von kurz laufenden Abfragen (die auf der Grundlage der Abfragekomplexität zugeordnet sind) entleert werden muss. Daher sollte die Entleerung schnell erfolgen, damit die Knoten ohne jegliche Auswirkung auf laufende Abfragen schnell freigegeben werden können. Wenn der Cluster alternativ um 50 % herunterskaliert werden müsste, dann müssten auch Worker aus der Knotengruppe „durchschnittlich“ ausgewählt werden, was für diese Knoten eine längere Entleerungszeit zur Folge hätte und möglicherweise eine Übergangsfrist erfordern würde, bevor weitere Ausweichmaßnahmen ergriffen werden, um die Räumung abzuschließen. Beim Skalieren des Clusters werden die Gleichzeitigkeitsschwellenwerte ebenfalls proportional angepasst, um die aktuelle Gesamtberechnungskapazität widerzuspiegeln. Die neuen Gleichzeitigkeitsschwellenwerte werden auf alle nachfolgend übermittelten Abfragen angewendet.
  • Wenn man all dies in 5C zusammenfasst, beträgt die Anzahl von Abfragen, die in der Dienstklasse „komplex“ ausgeführt werden (die komplexen aktiven Abfragen 544), jetzt nur noch zwei, was weniger als der Gleichzeitigkeitsschwellenwert 541 von drei für diese Dienstklasse ist. In einem Szenario, in dem die Anzahl von Abfragen, die in der Dienstklasse „komplex“ ausgeführt werden (die komplexen aktiven Abfragen 544), mehr als fünf Minuten lang zwei beträgt, löst die Autoskalierungskomponente einen Arbeitsschritt zum Herunterskalieren aus, um die Anzahl von Workern um eine berechnete Delta-Anzahl von drei Workern zu verringern (d.h. im Grunde die Umkehrung des in 5A bewirkten Hochskalierens). Sobald der Arbeitsschritt zum Herunterskalieren abgeschlossen ist, wird der Schwellenwert für die Dienstklasse „komplexe Abfrage“ wieder auf zwei gesetzt (auf den Gleichzeitigkeitsschwellenwert 541).
  • Unter Bezugnahme auf 6 zeigt ein Blockschaubild eine beispielhafte Ausführungsform einer Steuerungsroutine 100 gemäß Ausführungsformen der vorliegenden Erfindung mit weiteren Komponenten einer Komponente 120 zur Verwaltung von Arbeitslast 120 zum Anweisen einer Autoskalierungskomponente 130 zum automatischen Skalieren einer Anzahl von Worker-Knoten eines Clusters von Worker-Knoten, der Abfragen der Steuerungsroutine 100 verarbeitet. Die Komponente 120 zur Verwaltung von Arbeitslasten kann die folgenden Komponenten umfassen.
  • Eine Komponente 601 zum Überwachen des Abfrageverkehrs überwacht den Abfrageverkehr an der Abfrage-Steuerungsroutine, wobei die Abfragen von einer Dienstklassen-Zuordnungskomponente 121 auf der Grundlage einer Komplexitätsstufe einer Abfrage in eine Mehrzahl von Dienstklassen eingestuft werden. Die Komponente 601 zum Überwachen des Abfrageverkehrs kann eine Komponente 602 zum Überwachen von Abfragewarteschlangen zum Überwachen von Abfragewarteschlangen für Dienstklassen, die auf eine Verarbeitung warten, was zum Hochskalieren einer Anzahl von Worker-Knoten verwendet werden kann, und eine Komponente 603 zum Überwachen von aktiven Abfragen zum Überwachen von aktiven Abfragen, die für Dienstklassen verarbeitet werden, umfassen, was zum Herunterskalieren einer Anzahl von Worker-Knoten verwendet werden kann. Die Komponente 120 zur Verwaltung von Arbeitslasten umfasst auch eine Komponente 122 zum Festsetzen und Anpassen des Gleichzeitigkeitsschwellenwerts zum Festsetzen einer maximalen Anzahl von Abfragen einer Klasse, die gleichzeitig aktiv sein dürfen, und zum Anpassen der maximalen Anzahl auf der Grundlage einer sich ändernden Anzahl von Worker-Knoten aufgrund eines automatischen Skalierens.
  • Zusätzlich umfasst die Komponente 120 zur Verwaltung von Arbeitslasten eine Komponente 604 zum Vergleichen der Gleichzeitigkeit, um den Abfrageverkehr für jede Dienstklasse mit dem Gleichzeitigkeitsschwellenwert zu vergleichen und festzustellen, ob ein Hochskalierungsschwellenwert oder ein Herunterskalierungsschwellenwert für eine Dienstklasse überschritten wurde. Die Komponente 604 zum Vergleichen der Gleichzeitigkeit kann eine Hochskalierungsschwellenwert-Komponente 605, um einen Hochskalierungsschwellenwert als ein festgelegtes Verhältnis zwischen einer Anzahl von Abfragen, die in einer Warteschlange für eine Dienstklasse warten, und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse für eine festgelegte Zeitspanne festzulegen. Der Hochskalierungsschwellenwert ist überschritten, wenn das Verhältnis während des festgelegten Zeitraums größer als das festgelegte Verhältnis ist. Die Komponente 604 zum Vergleichen der Gleichzeitigkeit kann eine Herunterskalierungsschwellenwert-Komponente 606 umfassen, um einen Herunterskalierungsschwellenwert als ein festgelegtes Verhältnis zwischen einer Anzahl von aktiven Abfragen für eine Dienstklasse und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse für eine festgelegte Zeitspanne festzulegen. Der Herunterskalierungsschwellenwert ist überschritten, wenn das Verhältnis während der festgelegten Zeitspanne kleiner als das festgelegte Verhältnis ist.
  • Die Komponente 120 zur Verwaltung von Arbeitslasten umfasst auch eine Deltaknoten-Ermittlungskomponente 607, um auf der Grundlage einer Zusammenfassung von Vergleichen des Abfrageverkehrs über alle Dienstklassen hinweg zu einem bestimmten Zeitpunkt eine Anzahl von Worker-Knoten zu ermitteln, die hinzuzufügen oder zu entfernen sind. Die Deltaknoten-Ermittlungskomponente 607 stützt die Anzahl von hinzuzufügenden oder zu entfernenden Worker-Knoten für jede Dienstklasse, für die der festgelegte Hochskalierungsschwellenwert oder der festgelegte Herunterskalierungsschwellenwert überschritten ist, auf einen aktuellen Anteil von der Dienstklasse zugewiesenen Worker-Knoten und eine auf der Grundlage des Vergleichs erforderliche Erhöhung oder Verringerung der Kapazität. Eine Abfrageklassen-Zusammenfassungskomponente 608 kann die Anforderungen der Dienstklassen kombinieren.
  • Darüber hinaus umfasst die Komponente 120 zur Verwaltung von Arbeitslasten eine Komponente 620 zum Anweisen eines automatischen Skalierens des Clusters, um ein automatisches Skalieren des Clusters anzuweisen, so dass eine Anzahl von Worker-Knoten zu den in dem Cluster verfügbaren Worker-Knoten hinzugefügt oder von diesen entfernt wird, und zwar auf der Grundlage des Vergleichens des Überschreitens eines festgelegten Hochskalierungsschwellenwerts oder eines festgelegten Herunterskalierungsschwellenwerts, wobei das Überschreiten für einen festgelegten Zeitraum beibehalten wird. Bei einer Autoskalierungskomponente, die angewiesen wird, kann es sich um eine integrierte Komponente oder um eine Autoskalierungskomponente eines Drittanbieters handeln, die anhand angepasster Kennzahlen angewiesen wird. Zum Beispiel umfasst die automatische Skalierungsfunktion von Kubernetes die Fähigkeit, angepasste Kennzahlen zu nutzen, die auf der Grundlage der Anweisungen berechnet werden können.
  • Die Komponente 120 zur Verwaltung von Arbeitslasten kann eine Knotengruppenkomponente 610 umfassen, um mehrere Knotengruppen bereitzustellen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen, wobei die Knotengruppen für erwartete Laufzeiten von Abfragen konfiguriert sind. Die Komponente 120 zur Verwaltung von Arbeitslasten kann auch eine Dienstklassen-Zuordnungskomponente 612 zum Zuordnen einer Dienstklasse von Abfragen zu einer Knotengruppe umfassen, um Worker-Knoten der zugeordneten Knotengruppe Abfragen einer Dienstklasse zuzuordnen. Die Komponente 120 zur Verwaltung von Arbeitslasten kann die Knotengruppenkomponente 610 und eine Dienstklassen-Zuordnungskomponente 612 mit einer Knotenentleerungsauswahlkomponente 613 zum Auswählen einer Anzahl von Worker-Knoten zum Entleeren vor dem Entfernen während des Herunterskalierens gemäß Knotengruppen verwenden, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst niedrige erwartete Laufzeit von Abfragen konfiguriert ist. Der Prozess der Knotenentleerungsauswahlkomponente 613, in dem eine Anzahl von Worker-Knoten zum Entleeren ausgewählt wird, kann ein Anordnen der Knotengruppen umfassen, wobei Knotengruppen für geringere erwartete Laufzeiten von Abfragen zuerst entleert werden. In beispielhaften Ausführungsformen passt die Knotengruppenkomponente 610 die Knotengruppen gemäß dem automatischen Skalieren der Worker-Knoten dynamisch an.
  • 7 stellt ein Blockschaltbild von Komponenten der Datenverarbeitungseinheit eines Kopfknotens der Abfrage-Steuerungsroutine 100 aus 1 gemäß Ausführungsformen der vorliegenden Erfindung dar. Man sollte sich bewusst sein, dass 7 lediglich eine Veranschaulichung einer Umsetzung bereitstellt und keinerlei Einschränkungen in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen umgesetzt werden können, mit sich bringt. Es können viele Abwandlungen an der dargestellten Umgebung vorgenommen werden.
  • Die Datenverarbeitungseinheit kann einen oder mehrere Prozessoren 702, einen oder mehrere durch einen Computer lesbare Direktzugriffsspeicher (RAMs, random access memories) 704, einen oder mehrere durch einen Computer lesbare Nur-Lese-Speicher (ROMs, read-only memories) 706, ein oder mehrere durch einen Computer lesbare Speichermedien 708, Einheitentreiber 712, ein Lese/Schreib-Laufwerk oder eine Lese/Schreib-Schnittstelle 714 und einen Netzwerkadapter oder eine Netzwerkschnittstelle 716 umfassen, die alle über ein Datenübertragungsnetz 718 miteinander verbunden sind. Das Datenübertragungsnetz 718 kann mit jeder beliebigen Architektur umgesetzt werden, die zum Weiterleiten von Daten und/oder Steuerungsinformationen zwischen Prozessoren (wie zum Beispiel Mikroprozessoren, Datenübertragungs- und Netzwerkprozessoren usw.), Systemspeicher, Peripherieeinheiten und beliebigen anderen Hardware-Komponenten innerhalb eines Systems ausgelegt ist.
  • Ein oder mehrere Betriebssysteme 710 und Anwendungsprogramme 711 wie zum Beispiel Anwendungen, die Verarbeitungsschritten des Verfahrens 200, des Verfahrens 300 und des Verfahrens 400 entsprechen, ] sind auf einem oder mehreren der durch einen Computer lesbaren Speichermedien 708 zur Ausführung durch einen oder mehrere der Prozessoren 702 über einen oder mehrere der jeweiligen RAMs 704 (die üblicherweise einen Cache umfassen) gespeichert. In der veranschaulichten Ausführungsform kann es sich bei jedem der durch einen Computer lesbaren Speichermedien 708 gemäß Ausführungsformen der Erfindung um eine Magnetplatten-Speichereinheit eines internen Festplattenlaufwerks, eine CD-ROM, eine DVD, einen Speicherstick, ein Magnetband, eine Magnetplatte, eine optische Platte, eine Halbleiter-Speichereinheit wie zum Beispiel RAM, ROM, EPROM, Flash-Speicher oder beliebige andere durch einen Computer lesbare, physische Speichermedien handeln, die ein Computerprogramm und digitale Informationen speichern können.
  • Die Datenverarbeitungseinheit kann auch das Lese/Schreib-Laufwerk oder die Lese/Schreib-Schnittstelle 714 umfassen, um von einem oder mehreren tragbaren, durch einen Computer lesbaren Speichermedien 726 zu lesen und auf diese(s) zu schreiben. Anwendungsprogramme 711 auf der Datenverarbeitungseinheit können auf einem oder mehreren der tragbaren, durch einen Computer lesbaren Speichermedien 726 gespeichert sein, über das jeweilige Lese/Schreib-Laufwerk oder die Lese/Schreib-Schnittstelle 714 gelesen und in die jeweiligen durch einen Computer lesbaren Speichermedien 708 geladen werden.
  • Die Datenverarbeitungseinheit kann auch einen Netzwerkadapter oder eine Netzwerkschnittstelle 716 enthalten, wie zum Beispiel eine TCP/IP-Adapterkarte oder einen drahtlosen Datenübertragungsadapter. Die Anwendungsprogramme 711 auf der Datenverarbeitungseinheit können von einem externen Computer oder einer externen Speichereinheit über ein Netzwerk ( zum Beispiel das Internet, ein lokales Netzwerk oder andere Weitverkehrsnetze oder drahtlose Netzwerke) und den Netzwerkadapter oder die Netzwerkschnittstelle 716 auf die Datenverarbeitungseinheit heruntergeladen werden. Von dem Netzwerkadapter oder der Netzwerkschnittstelle 716 können die Programme auf das durch einen Computer lesbare Speichermedium 708 geladen werden. Das Netzwerk kann Kupferkabel, Lichtwellenleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und Edge-Server aufweisen.
  • Die Datenverarbeitungseinheit kann auch einen Anzeigebildschirm 720, eine Tastatur oder einen Ziffernblock 722 und eine Computermaus oder ein Touchpad 724 umfassen. Die Einheitentreiber 712 weisen eine Schnittstelle zu dem Anzeigebildschirm 720 für die Bildgebung, zu der Tastatur oder dem Ziffernblock 722, zu der Computermaus oder dem Touchpad 724 und/oder zu dem Anzeigebildschirm 720 zur Druckabtastung von alphanumerischen Zeicheneingaben und Benutzerauswahlen auf. Die Einheitentreiber 712, das Lese/Schreib-Laufwerk oder die Lese/Schreib-Schnittstelle 714 und der Netzwerkadapter oder die Netzwerkschnittstelle 716 können Hardware und Software aufweisen, die auf den durch einen Computer lesbaren Speichermedien 708 und/oder dem ROM 706 gespeichert sind.
  • Cloud Computing
  • Es sei von vornherein klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing umfasst. Vielmehr können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Hauptspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
  • Bei den Eigenschaften handelt es sich um die Folgenden:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
    • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
    • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
    • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
    • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Bei den Dienstmodellen handelt es sich um die Folgenden:
    • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
    • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
    • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die Folgenden:
    • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
    • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann in den eigenen Räumen oder fremden Räumen stehen.
    • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
    • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
    • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten umfasst.
  • Unter Bezugnahme auf 8 ist eine veranschaulichende Cloud-Computing-Umgebung 50 abgebildet. Wie gezeigt ist, umfasst die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie ein elektronischer Assistent (PDA, personal digital assistant) oder ein Mobiltelefon 54A, ein Desktop-Computer 54B, ein Laptop-Computer 54C und/oder ein Automobil-Computer-System 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie private, Benutzergemeinschafts-, öffentliche oder hybride Clouds gruppiert werden (nicht gezeigt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten der in 8 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 9 wird ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (8) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 9 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie abgebildet ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
  • Eine Hardware- und Software-Schicht 60 umfasst Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten gehören: Mainframe-Computer 61; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Software-Komponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbank-Software 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71, virtueller Speicher 72, virtuelle Netzwerke 73, darunter virtuelle private Netzwerke, virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann die Verwaltungsschicht 80 die nachfolgend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungs-Software-Lizenzen umfassen. Eine Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
  • Eine Arbeitslastschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalytikverarbeitung 94; Transaktionsverarbeitung 95; und Abfragebearbeitung 96.
  • Ein Computerprogrammprodukt der vorliegenden Erfindung weist eine oder mehrere durch einen Computer lesbare Hardware-Speichereinheiten auf, in denen ein durch einen Computer lesbarer Programmcode gespeichert ist, wobei der Programmcode von einem oder mehreren Prozessoren ausführbar ist, um die Verfahren der vorliegenden Erfindung umzusetzen.
  • Ein Computersystem der vorliegenden Erfindung weist einen oder mehrere Prozessoren, einen oder mehrere Speicher und eine oder mehrere durch einen Computer lesbare Hardware-Speichereinheiten auf, wobei die eine oder die mehreren Hardware-Speichereinheiten einen Programmcode enthalten, der von dem einen oder den mehreren Prozessoren über den einen oder die mehreren Speicher ausführbar ist, um die Verfahren der vorliegenden Erfindung umzusetzen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung aufgeführt, sollen jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die offenbarten Ausführungsformen. Für Fachleute werden viele Abänderungen und Abwandlungen ersichtlich sein, ohne von dem Umfang und Sinngehalt der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt vorgefundenen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin dargelegten Ausführungsformen zu verstehen.
  • Es können Verbesserungen und Abwandlungen an dem oben Beschriebenen vorgenommen werden, ohne von dem Umfang der vorliegenden Erfindung abzuweichen.
  • Die hierin beschriebenen Programme werden beruhend auf der Anwendung bestimmt, für die sie in einer spezifischen Ausführungsform der Erfindung umgesetzt werden. Man sollte sich jedoch bewusst sein, dass jede bestimmte Programm-Nomenklatur hierin lediglich der Einfachheit halber verwendet wird, und folglich darf die Erfindung nicht auf die ausschließliche Verwendung in einer beliebigen spezifischen Anwendung, die durch eine derartige Nomenklatur ermittelt und/oder impliziert wird, beschränkt werden.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailstufe der Integration handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server umfassen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt umfasst, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der festgelegten logischen Funktion(en) umfassen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit als ein Schritt durchgeführt, gleichzeitig ausgeführt, im Wesentlichen gleichzeitig ausgeführt, in einer sich teilweise oder ganz zeitlich überlappenden Weise ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist darüber hinaus anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung aufgeführt, sollen jedoch nicht gesamthaft stehen für bzw. begrenzt sein auf die offenbarten Ausführungsformen. Für den Fachmann werden viele Abänderungen und Abwandlungen ersichtlich sein, ohne von dem Umfang und dem Sinngehalt der Erfindung abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsform, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt vorgefundenen Technologien bestmöglich zu erläutern oder um es anderen Fachleuten zu ermöglichen, die hierin dargelegten Ausführungsformen zu verstehen.
  • Claims (31)

    1. Verfahren zum automatischen Skalieren einer Abfrage-Steuerungsroutine, das Verfahren aufweisend: Überwachen eines Abfrageverkehrs an der Abfrage-Steuerungsroutine durch einen oder mehrere Prozessoren; Einstufen von Abfragen des Abfrageverkehrs nach einer Mehrzahl von Dienstklassen auf Grundlage einer Komplexitätsstufe einer Abfrage durch einen oder mehrere Prozessoren; Vergleichen des Abfrageverkehrs für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig verarbeitet werden dürfen, durch einen oder mehrere Prozessoren; und Anweisen eines automatischen Skalierens eines Clusters von Worker-Knoten durch einen oder mehrere Prozessoren, um eine Anzahl von Worker-Knoten der in dem Cluster verfügbaren Worker-Knoten auf der Grundlage des Vergleichs des Abfrageverkehrs mit einem festgelegten Hochskalierungsschwellenwert und einem festgelegten Herunterskalierungsschwellenwert über eine festgelegte Zeitspanne zu ändern, wobei durch das automatische Skalieren eine Anzahl von Worker-Knoten zu einem Cluster von Worker-Knoten, der Prozesse der Abfrage-Steuerungsroutine verarbeitet, hinzugefügt oder aus diesem entfernt wird.
    2. Verfahren nach Anspruch 1, wobei es sich bei dem festgelegten Hochskalierungsschwellenwert und dem festgelegten Herunterskalierungsschwellenwert jeweils um ein festgelegtes Schwellenverhältnis zwischen einer Anzahl von Abfragen in dem Abfrageverkehr und dem Gleichzeitigkeitsschwellenwert handelt.
    3. Verfahren nach Anspruch 1, darüber hinaus aufweisend: Ermitteln einer Anzahl von zu ändernden Worker-Knoten durch einen oder mehrere Prozessoren auf der Grundlage einer Zusammenfassung der Vergleiche des Abfrageverkehrs über alle Dienstklassen hinweg zu einem gegebenen Zeitpunkt.
    4. Verfahren nach Anspruch 3, wobei das Ermitteln einer Anzahl von zu ändernden Worker-Knoten darüber hinaus aufweist: Bestimmen der Anzahl von zu ändernden Worker-Knoten für jede Dienstklasse, für die der festgelegte Hochskalierungsschwellenwert überschritten ist, durch einen oder mehrere Prozessoren auf der Grundlage eines aktuellen Anteils von Worker-Knoten, die der Dienstklasse zugewiesen sind, und einer erforderlichen Erhöhung der Kapazität auf der Grundlage des Vergleichs.
    5. Verfahren nach Anspruch 3, wobei das Ermitteln einer Anzahl von zu ändernden Worker-Knoten darüber hinaus aufweist: Bestimmen der Anzahl von zu ändernden Worker-Knoten für jede Dienstklasse, für die der festgelegte Herunterskalierungsschwellenwert überschritten ist, durch einen oder mehrere Prozessoren auf der Grundlage eines aktuellen Anteils von Worker-Knoten, die der Dienstklasse zugewiesen sind, und einer erforderlichen Verringerung der Kapazität auf der Grundlage des Vergleichs.
    6. Verfahren nach Anspruch 1, darüber hinaus aufweisend: Anpassen des Gleichzeitigkeitsschwellenwerts für eine oder mehrere Dienstklassen durch einen oder mehrere Prozessoren auf der Grundlage einer neuen Anzahl von Worker-Knoten in dem Cluster nach dem automatischen Skalieren.
    7. Verfahren nach Anspruch 2, darüber hinaus aufweisend: Bestimmen des Abfrageverkehrs durch einen oder mehrere Prozessoren auf der Grundlage von in Warteschlange befindlichen Abfragen, die in Warteschlangen warten, für jede Dienstklasse aufgrund des Erreichens des Gleichzeitigkeitsschwellenwerts für die Dienstklasse; und wobei der festgelegte Hochskalierungsschwellenwert überschritten ist, wenn ein Verhältnis zwischen einer Anzahl von Abfragen, die in einer Warteschlange für eine Dienstklasse warten, und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne größer ist als ein festgelegtes Verhältnis.
    8. Verfahren nach Anspruch 2, darüber hinaus aufweisend: Bestimmen des Abfrageverkehrs durch einen oder mehrere Prozessoren auf der Grundlage von aktuell aktiven Abfragen für jede Dienstklasse; und wobei der festgelegte Herunterskalierungsschwellenwert überschritten ist, wenn ein Verhältnis zwischen einer Anzahl von aktiven Abfragen für eine Dienstklasse und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne kleiner ist als ein festgelegtes Verhältnis.
    9. Verfahren nach Anspruch 1, darüber hinaus aufweisend: Bereitstellen von mehreren Knotengruppen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen, durch einen oder mehrere Prozessoren, wobei die Knotengruppen für erwartete Laufzeiten von Abfragen konfiguriert sind; und Zuordnen einer Dienstklasse von Abfragen zu einer Knotengruppe durch einen oder mehrere Prozessoren, um Worker-Knoten der zugeordneten Knotengruppe Abfragen einer Dienstklasse zuzuweisen.
    10. Verfahren nach Anspruch 9, darüber hinaus aufweisend: automatisches Skalieren durch einen oder mehrere Prozessoren, um eine Anzahl von Worker-Knoten zu entfernen, indem eine Anzahl von Worker-Knoten zum Entleeren vor dem Entfernen gemäß Knotengruppen ausgewählt wird, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst niedrige erwartete Laufzeit von Abfragen konfiguriert ist.
    11. Verfahren nach Anspruch 9, wobei die Knotengruppen dynamisch sind und entsprechend dem automatischen Skalieren der Worker-Knoten angepasst werden.
    12. Verfahren nach Anspruch 1, aufweisend: Bereitstellen von mehreren Knotengruppen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen, durch einen oder mehrere Prozessoren, wobei die Knotengruppen für eine erwartete Laufzeit von Abfragen konfiguriert sind; und Zuordnen jeder Dienstklasse von Abfragen zu einer Knotengruppe durch einen oder mehrere Prozessoren entsprechend einer Affinität zwischen Dienstklassen und Knotengruppen, wobei das automatische Skalieren durch Entfernen einer Anzahl von Worker-Knoten darüber hinaus aufweist: Auswählen, durch einen oder mehrere Prozessoren, einer Anzahl von Worker-Knoten zum Entleeren vor dem Entfernen gemäß Knotengruppen, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst niedrige erwartete Laufzeit von Abfragen konfiguriert ist.
    13. Verfahren nach Anspruch 12, wobei das Auswählen einer Anzahl von Worker-Knoten zum Entleeren darüber hinaus aufweist: Ordnen der Knotengruppen durch einen oder mehrere Prozessoren, wobei Knotengruppen mit geringeren erwarteten Laufzeiten von Abfragen zuerst entleert werden.
    14. Verfahren nach Anspruch 12, wobei die Knotengruppen dynamisch sind und entsprechend dem automatischen Skalieren der Worker-Knoten angepasst werden.
    15. Verfahren nach Anspruch 12, darüber hinaus aufweisend: Vergleichen des Abfrageverkehrs in Form von aktiven Abfragen für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig zu verarbeiten sind, durch einen oder mehrere Prozessoren; und automatisches Skalieren durch einen oder mehrere Prozessoren durch Entfernen einer Anzahl von Worker-Knoten aus den in dem Cluster verfügbaren Worker-Knoten, und zwar auf der Grundlage, dass der Vergleich einen festgelegten Herunterskalierungsschwellenwert überschreitet, wobei die Überschreitung über eine festgelegte Zeitspanne beibehalten wird.
    16. Verfahren nach Anspruch 15, wobei der festgelegte Herunterskalierungsschwellenwert überschritten ist, wenn ein Verhältnis zwischen einer Anzahl von aktiven Abfragen für eine Dienstklasse und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne kleiner ist als ein festgelegtes Verhältnis.
    17. Verfahren zum automatischen Skalieren einer Abfrage-Steuerungsroutine, das Verfahren aufweisend: Einstufen von Abfragen des Abfrageverkehrs durch einen oder mehrere Prozessoren auf Grundlage einer Dienstklasse, und zwar auf der Grundlage von jeweiligen Stufen der Abfragekomplexität; automatisches Skalieren von Worker-Knoten durch einen oder mehrere Prozessoren durch Hinzufügen oder Entfernen einer Anzahl von Worker-Knoten zu/aus dem/den in einem Cluster verfügbaren Worker-Knoten auf der Grundlage des Abfrageverkehrs an einer Steuerungsroutine; Bereitstellen von mehreren Knotengruppen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen, durch einen oder mehrere Prozessoren, wobei die Knotengruppen für eine erwartete Laufzeit von Abfragen konfiguriert sind; und Zuordnen jeder Dienstklasse von Abfragen zu einer Knotengruppe durch einen oder mehrere Prozessoren entsprechend einer Affinität zwischen Dienstklassen und Knotengruppen, wobei das automatische Skalieren durch Entfernen einer Anzahl von Worker-Knoten darüber hinaus aufweist: Auswählen, durch einen oder mehrere Prozessoren, einer Anzahl von Worker-Knoten zum Entleeren vor dem Entfernen gemäß Knotengruppen, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst niedrige erwartete Laufzeit von Abfragen konfiguriert ist.
    18. Verfahren nach Anspruch 17, wobei das Auswählen einer Anzahl von Worker-Knoten zum Entleeren darüber hinaus aufweist: Ordnen der Knotengruppen durch einen oder mehrere Prozessoren, wobei Knotengruppen mit geringeren erwarteten Laufzeiten von Abfragen zuerst entleert werden.
    19. Verfahren nach Anspruch 17, wobei die Knotengruppen dynamisch sind und entsprechend dem automatischen Skalieren der Worker-Knoten angepasst werden.
    20. Verfahren nach Anspruch 17, darüber hinaus aufweisend: Vergleichen des Abfrageverkehrs in Form von aktiven Abfragen für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig zu verarbeiten sind, durch einen oder mehrere Prozessoren; und automatisches Skalieren durch einen oder mehrere Prozessoren durch Entfernen einer Anzahl von Worker-Knoten aus den in dem Cluster verfügbaren Worker-Knoten, und zwar auf der Grundlage, dass der Vergleich einen festgelegten Herunterskalierungsschwellenwert überschreitet, wobei die Überschreitung über eine festgelegte Zeitspanne beibehalten wird.
    21. Verfahren nach Anspruch 20, wobei der festgelegte Herunterskalierungsschwellenwert überschritten ist, wenn ein Verhältnis zwischen einer Anzahl von aktiven Abfragen für eine Dienstklasse und dem Gleichzeitigkeitsschwellenwert für die Dienstklasse über eine festgelegte Zeitspanne kleiner ist als ein festgelegtes Verhältnis.
    22. Computersystem zum automatischen Skalieren einer Abfrage-Steuerungsroutine, das Computersystem aufweisend: einen oder mehrere Computerprozessoren; ein oder mehrere durch einen Computer lesbare Speichermedien; und Programmanweisungen, die auf den durch einen Computer lesbaren Speichermedien gespeichert sind, zur Ausführung durch mindestens einen des einen oder der mehreren Prozessoren, die Programmanweisungen aufweisend: Programmanweisungen zum Überwachen des Abfrageverkehrs an der Abfrage-Steuerungsroutine; Programmanweisungen zum Einstufen von Abfragen des Abfrageverkehrs nach einer Mehrzahl von Dienstklassen auf Grundlage einer Komplexitätsstufe einer Abfrage; Programmanweisungen zum Vergleichen des Abfrageverkehrs für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig verarbeitet werden dürfen; und Programmanweisungen zum Anweisen eines automatischen Skalierens eines Clusters von Worker-Knoten, um eine Anzahl von Worker-Knoten der in dem Cluster verfügbaren Worker-Knoten auf der Grundlage des Vergleichs des Abfrageverkehrs mit einem festgelegten Hochskalierungsschwellenwert und einem festgelegten Herunterskalierungsschwellenwert über eine festgelegte Zeitspanne zu ändern, wobei durch das automatische Skalieren eine Anzahl von Worker-Knoten zu einem Cluster von Worker-Knoten, der Prozesse der Abfrage-Steuerungsroutine verarbeitet, hinzugefügt oder aus diesem entfernt wird.
    23. Computersystem nach Anspruch 22, wobei es sich bei dem festgelegten Hochskalierungsschwellenwert und dem festgelegten Herunterskalierungsschwellenwert jeweils um ein jeweiliges festgelegtes Schwellenverhältnis zwischen einer Anzahl von Abfragen in dem Abfrageverkehr und dem Gleichzeitigkeitsschwellenwert handelt.
    24. Computersystem nach Anspruch 22, darüber hinaus aufweisend Programmanweisungen, die auf dem durch einen Computer lesbaren Speichermedien gespeichert sind, zur Ausführung durch mindestens einen des einen oder der mehreren Prozessoren zum: Ermitteln einer Anzahl von zu ändernden Worker-Knoten auf der Grundlage einer Zusammenfassung der Vergleiche des Abfrageverkehrs über alle Dienstklassen hinweg zu einem gegebenen Zeitpunkt.
    25. Computersystem nach Anspruch 22, darüber hinaus aufweisend Programmanweisungen, die auf dem durch einen Computer lesbaren Speichermedien gespeichert sind, zur Ausführung durch mindestens einen des einen oder der mehreren Prozessoren zum: Anpassen des Gleichzeitigkeitsschwellenwerts für eine oder mehrere Dienstklassen auf der Grundlage einer neuen Anzahl von Worker-Knoten in dem Cluster nach dem automatischen Skalieren.
    26. Computersystem zum automatischen Skalieren einer Abfrage-Steuerungsroutine, das Computersystem aufweisend: einen oder mehrere Computerprozessoren; ein oder mehrere durch einen Computer lesbare Speichermedien; und Programmanweisungen, die auf den durch einen Computer lesbaren Speichermedien gespeichert sind, zur Ausführung durch mindestens einen des einen oder der mehreren Prozessoren, die Programmanweisungen aufweisend: Programmanweisungen zum Einstufen von Abfragen des Abfrageverkehrs durch einen oder mehrere Prozessoren auf Grundlage einer Dienstklasse, und zwar auf der Grundlage von jeweiligen Stufen der Abfragekomplexität; Programmanweisungen zum automatischen Skalieren von Worker-Knoten durch Hinzufügen oder Entfernen einer Anzahl von Worker-Knoten zu/aus dem/den in einem Cluster verfügbaren Worker-Knoten auf der Grundlage des Abfrageverkehrs an einer Steuerungsroutine; Programmanweisungen zum Bereitstellen von mehreren Knotengruppen, die jeweils eine Teilmenge der verfügbaren Worker-Knoten in dem Cluster aufweisen, wobei die Knotengruppen für eine erwartete Laufzeit von Abfragen konfiguriert sind; und Programmanweisungen zum Zuordnen jeder Dienstklasse von Abfragen zu einer Knotengruppe entsprechend einer Affinität zwischen Dienstklassen und Knotengruppen; und wobei das automatische Skalieren durch Entfernen einer Anzahl von Worker-Knoten darüber hinaus aufweist: Programmanweisungen zum Auswählen einer Anzahl von Worker-Knoten zum Entleeren vor dem Entfernen gemäß Knotengruppen, wobei Worker-Knoten aus einer Knotengruppe ausgewählt werden, die für eine möglichst niedrige erwartete Laufzeit von Abfragen konfiguriert ist.
    27. Computersystem nach Anspruch 26, wobei die Programmanweisungen zum Auswählen einer Anzahl von Worker-Knoten zum Entleeren darüber hinaus Programmanweisungen aufweisen zum: Ordnen der Knotengruppen, wobei Knotengruppen mit geringeren erwarteten Laufzeiten von Abfragen zuerst entleert werden.
    28. Computersystem nach Anspruch 26, wobei die Knotengruppen dynamisch sind und entsprechend dem automatischen Skalieren der Worker-Knoten angepasst werden.
    29. Computersystem nach Anspruch 26, darüber hinaus aufweisend Programmanweisungen, die auf den durch einen Computer lesbaren Speichermedien gespeichert sind, zur Ausführung durch mindestens einen des einen oder der mehreren Prozessoren zum: Vergleichen des Abfrageverkehrs in Form von aktiven Abfragen für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig zu verarbeiten sind; und automatisches Skalieren durch Entfernen einer Anzahl von Worker-Knoten aus den in dem Cluster verfügbaren Worker-Knoten, und zwar auf der Grundlage, dass der Vergleich einen festgelegten Herunterskalierungsschwellenwert überschreitet, wobei die Überschreitung über eine festgelegte Zeitspanne beibehalten wird.
    30. Computerprogrammprodukt zum automatischen Skalieren einer Abfrage-Steuerungsroutine, das Computerprogrammprodukt aufweisend: ein oder mehrere durch einen Computer lesbare Speichermedien und auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeicherte Programmanweisungen, die Programmanweisungen aufweisend: Programmanweisungen zum Überwachen des Abfrageverkehrs an der Abfrage-Steuerungsroutine; Programmanweisungen zum Einstufen von Abfragen des Abfrageverkehrs nach einer Mehrzahl von Dienstklassen auf der Grundlage einer Komplexitätsstufe einer Abfrage; Programmanweisungen zum Vergleichen des Abfrageverkehrs für jede Dienstklasse mit einem Gleichzeitigkeitsschwellenwert einer maximalen Anzahl von Abfragen der Dienstklasse, die gleichzeitig verarbeitet werden dürfen; und Programmanweisungen zum Anweisen eines automatischen Skalierens eines Clusters von Worker-Knoten, um eine Anzahl von Worker-Knoten der in dem Cluster verfügbaren Worker-Knoten auf der Grundlage des Vergleichs des Abfrageverkehrs mit einem festgelegten Hochskalierungsschwellenwert und einem festgelegten Herunterskalierungsschwellenwert über eine festgelegte Zeitspanne zu ändern, wobei durch das automatische Skalieren eine Anzahl von Worker-Knoten zu einem Cluster von Worker-Knoten, der Prozesse der Abfrage-Steuerungsroutine verarbeitet, hinzugefügt oder aus diesem entfernt wird.
    31. Computerprogramm, das ein Programmcodemittel aufweist, das dafür geeignet ist, das Verfahren nach einem der Ansprüche 1 bis 21 durchzuführen, wenn das Programm auf einem Computer ausgeführt wird.
    DE112021005586.0T 2020-10-23 2021-10-07 Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene Pending DE112021005586T5 (de)

    Applications Claiming Priority (3)

    Application Number Priority Date Filing Date Title
    US17/078,327 2020-10-23
    US17/078,327 US11809424B2 (en) 2020-10-23 2020-10-23 Auto-scaling a query engine for enterprise-level big data workloads
    PCT/IB2021/059207 WO2022084784A1 (en) 2020-10-23 2021-10-07 Auto-scaling a query engine for enterprise-level big data workloads

    Publications (1)

    Publication Number Publication Date
    DE112021005586T5 true DE112021005586T5 (de) 2023-09-14

    Family

    ID=81258457

    Family Applications (1)

    Application Number Title Priority Date Filing Date
    DE112021005586.0T Pending DE112021005586T5 (de) 2020-10-23 2021-10-07 Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene

    Country Status (6)

    Country Link
    US (1) US11809424B2 (de)
    JP (1) JP2023545970A (de)
    CN (1) CN116391175A (de)
    DE (1) DE112021005586T5 (de)
    GB (1) GB2615466A (de)
    WO (1) WO2022084784A1 (de)

    Families Citing this family (4)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11467877B2 (en) * 2020-01-31 2022-10-11 Salesforce, Inc. Throttling and limiting thread resources of service computing platform
    US11809424B2 (en) * 2020-10-23 2023-11-07 International Business Machines Corporation Auto-scaling a query engine for enterprise-level big data workloads
    US11843548B1 (en) * 2022-12-09 2023-12-12 Dell Products L.P. Resource scaling of microservice containers
    CN116775958B (zh) * 2023-08-21 2023-11-21 宇文道静 信息查询数据处理方法及装置

    Family Cites Families (48)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US7630986B1 (en) * 1999-10-27 2009-12-08 Pinpoint, Incorporated Secure data interchange
    US6946715B2 (en) * 2003-02-19 2005-09-20 Micron Technology, Inc. CMOS image sensor and method of fabrication
    US8874477B2 (en) * 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
    US8527473B1 (en) * 2005-10-20 2013-09-03 Teradata Us, Inc. Identifying database request sources in multi-database systems
    US8555288B2 (en) * 2006-05-17 2013-10-08 Teradata Us, Inc. Managing database utilities to improve throughput and concurrency
    CN101344882B (zh) 2007-07-10 2010-06-02 中国移动通信集团公司 数据查询方法、插入方法及删除方法
    US8204870B2 (en) * 2007-08-03 2012-06-19 Sybase, Inc. Unwired enterprise platform
    US8775413B2 (en) * 2008-06-30 2014-07-08 Teradata Us, Inc. Parallel, in-line, query capture database for real-time logging, monitoring and optimizer feedback
    US20090327216A1 (en) * 2008-06-30 2009-12-31 Teradata Us, Inc. Dynamic run-time optimization using automated system regulation for a parallel query optimizer
    US8745036B2 (en) * 2009-07-07 2014-06-03 Teradata Us, Inc. System, method, and computer-readable medium for enhancing query execution by an optimizer in a database system
    US8352945B2 (en) * 2009-08-11 2013-01-08 International Business Machines Corporation System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database
    US8510273B2 (en) * 2009-09-02 2013-08-13 Teradata Us, Inc. System, method, and computer-readable medium to facilitate application of arrival rate qualifications to missed throughput server level goals
    US8756585B2 (en) * 2009-12-29 2014-06-17 International Business Machines Corporation Efficient monitoring in a software system
    CN102298580A (zh) * 2010-06-22 2011-12-28 Sap股份公司 使用异步缓冲器的多核查询处理
    US9495227B2 (en) * 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
    WO2014016950A1 (ja) 2012-07-27 2014-01-30 株式会社日立製作所 並列計算機システムおよび並列計算機システムへの処理負荷配置方法
    US9992269B1 (en) * 2013-02-25 2018-06-05 EMC IP Holding Company LLC Distributed complex event processing
    US9817699B2 (en) * 2013-03-13 2017-11-14 Elasticbox Inc. Adaptive autoscaling for virtualized applications
    US10740358B2 (en) * 2013-04-11 2020-08-11 Oracle International Corporation Knowledge-intensive data processing system
    US9081622B2 (en) * 2013-05-13 2015-07-14 Vmware, Inc. Automated scaling of applications in virtual data centers
    US10198292B2 (en) * 2013-11-27 2019-02-05 Actian Sub Iii, Inc. Scheduling database queries based on elapsed time of queries
    US9424311B2 (en) 2014-03-20 2016-08-23 International Business Machines Corporation Query routing based on complexity class determination
    US20150286725A1 (en) 2014-04-03 2015-10-08 Zillabyte, Inc. Systems and/or methods for structuring big data based upon user-submitted data analyzing programs
    US10885565B1 (en) * 2014-06-20 2021-01-05 Amazon Technologies, Inc. Network-based data discovery and consumption coordination service
    WO2015197564A1 (en) * 2014-06-23 2015-12-30 Getclouder Ltd. Cloud hosting systems featuring scaling and load balancing with containers
    US11474874B2 (en) 2014-08-14 2022-10-18 Qubole, Inc. Systems and methods for auto-scaling a big data system
    US10216770B1 (en) * 2014-10-31 2019-02-26 Amazon Technologies, Inc. Scaling stateful clusters while maintaining access
    US20180089271A1 (en) 2015-04-15 2018-03-29 Hewlett Packard Enterprise Development Lp Database query classification
    US10410155B2 (en) 2015-05-01 2019-09-10 Microsoft Technology Licensing, Llc Automatic demand-driven resource scaling for relational database-as-a-service
    US9848041B2 (en) * 2015-05-01 2017-12-19 Amazon Technologies, Inc. Automatic scaling of resource instance groups within compute clusters
    US10217053B2 (en) * 2015-06-23 2019-02-26 International Business Machines Corporation Provisioning service requests in a computer system
    US10296551B2 (en) * 2015-09-30 2019-05-21 Juniper Networks, Inc. Analytics for a distributed network
    US20170147961A1 (en) * 2015-11-19 2017-05-25 International Business Machines Corporation Adjustment of change requests
    CN105786992A (zh) 2016-02-17 2016-07-20 中国建设银行股份有限公司 一种用于联机交易的数据查询方法和装置
    US10409642B1 (en) * 2016-11-22 2019-09-10 Amazon Technologies, Inc. Customer resource monitoring for versatile scaling service scaling policy recommendations
    US20180196867A1 (en) 2017-01-09 2018-07-12 Alexander WIESMAIER System, method and computer program product for analytics assignment
    US12118009B2 (en) * 2017-07-31 2024-10-15 Splunk Inc. Supporting query languages through distributed execution of query engines
    US11989194B2 (en) * 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
    CN110321214A (zh) * 2018-03-29 2019-10-11 阿里巴巴集团控股有限公司 一种数据查询方法、装置及设备
    US11010150B2 (en) * 2018-04-18 2021-05-18 Verizon Media Inc. System and method for performing device updates
    US20190364109A1 (en) 2018-05-23 2019-11-28 Microsoft Technology Licensing, Llc Scale out data storage and query filtering using storage pools
    CN108920552B (zh) 2018-06-19 2022-04-29 浙江工业大学 一种面向多源大数据流的分布式索引方法
    US11061896B2 (en) * 2018-06-19 2021-07-13 Salesforce.Com, Inc. Maximizing operator parallelism
    US10924398B2 (en) * 2018-09-25 2021-02-16 Ebay Inc. Time-series data monitoring with sharded server
    US10841369B2 (en) * 2018-11-26 2020-11-17 International Business Machines Corporation Determining allocatable host system resources to remove from a cluster and return to a host service provider
    CN109766175A (zh) 2018-12-28 2019-05-17 深圳晶泰科技有限公司 面向高性能计算在云上的资源弹性伸缩系统及其调度方法
    US10956215B2 (en) * 2019-02-18 2021-03-23 International Business Machines Corporation Predictive job admission control with feedback
    US11809424B2 (en) * 2020-10-23 2023-11-07 International Business Machines Corporation Auto-scaling a query engine for enterprise-level big data workloads

    Also Published As

    Publication number Publication date
    WO2022084784A1 (en) 2022-04-28
    US11809424B2 (en) 2023-11-07
    GB2615466A (en) 2023-08-09
    GB202306511D0 (en) 2023-06-14
    US20220129460A1 (en) 2022-04-28
    CN116391175A (zh) 2023-07-04
    JP2023545970A (ja) 2023-11-01

    Similar Documents

    Publication Publication Date Title
    DE112021005586T5 (de) Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene
    DE112020002189B4 (de) Container-basierte anwendungen
    DE112012004336B4 (de) System, Verfahren und Programmprodukt für kostenbewusste Auswahl von Vorlagen zum Bereitstellen von gemeinsam genutzten Ressourcen
    DE60016283T2 (de) Arbeitsbelastungsverwaltung in einer rechnerumgebung
    DE112012000444B4 (de) Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems
    DE112021006130T5 (de) Automatisierte orchestrierung von containern durch bewerten von mikrodiensten
    DE102013205572B4 (de) Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung
    DE102013204508A1 (de) Dynamisches Neukonfigurieren eines Speichersystems
    DE112012004999T5 (de) Beschleunigungselement zur Cloud-Bereitstellung
    DE112012002941T5 (de) Anwendungsressourcenverwalter über eine Cloud
    DE112019000421B4 (de) Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster
    DE112018005268T5 (de) Priorisieren von anwendungen für eine diagonale skalierung in einer verteilten datenverarbeitungsumgebung
    DE112010005096T5 (de) Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern
    DE112012003505T5 (de) Automatisierte Auswahl von Funktionen zum Verringern der Speicherkapazität auf der Grundlage von Leistungsanforderungen
    DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
    DE102013216735A1 (de) Ressourcenzuweisung in einer virtualisierten Datenverarbeitungsumgebung
    DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
    DE112021003294T5 (de) Systemverwaltung auf grundlage von leistung und leistungsfähigkeit
    DE112021000390T5 (de) Anpassen der leistung eines datenverarbeitungssystems
    DE112020003825T5 (de) Entsprechung zwischen externen Operationen und Containern sowie Mutationsereignissen
    DE102021122508A1 (de) Ausgleichen von grossrechner- und verteilten arbeitslasten auf der grundlage von leistung und kosten
    DE102021125182A1 (de) Gemeinsam genutzte unternehmenscloud
    DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
    DE112018005973T5 (de) Automatisches diagonales skalieren von arbeitslasten in einer verteilten datenverarbeitungsumgebung
    DE112018004415B4 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R084 Declaration of willingness to licence
    R079 Amendment of ipc main class

    Free format text: PREVIOUS MAIN CLASS: H04L0067103100

    Ipc: G06F0016245300