DE202021102315U1 - Flexibles Computing - Google Patents
Flexibles Computing Download PDFInfo
- Publication number
- DE202021102315U1 DE202021102315U1 DE202021102315.5U DE202021102315U DE202021102315U1 DE 202021102315 U1 DE202021102315 U1 DE 202021102315U1 DE 202021102315 U DE202021102315 U DE 202021102315U DE 202021102315 U1 DE202021102315 U1 DE 202021102315U1
- Authority
- DE
- Germany
- Prior art keywords
- computer
- local
- resources
- computer resources
- current
- 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.)
- Active
Links
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims abstract 13
- 238000003860 storage Methods 0.000 claims description 69
- 238000004891 communication Methods 0.000 claims description 37
- 238000012545 processing Methods 0.000 claims description 29
- 230000015654 memory Effects 0.000 claims description 23
- 238000009826 distribution Methods 0.000 claims description 20
- 238000012544 monitoring process Methods 0.000 claims description 9
- 238000000034 method Methods 0.000 description 69
- 238000013500 data storage Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 22
- 238000007726 management method Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen:
Empfangen, durch einen oder mehrere Prozessoren eines lokalen Hintergrunddienstes, von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren;
basierend auf der Information in Bezug auf Abfrageanforderungen, Erzeugen eines aktuellen lokalen Bedarfs an Computerressourcen;
Kommunizieren des aktuellen lokalen Bedarfs an Computerressourcen zu einem globalen Hintergrunddienst über ein Netzwerk;
Empfangen einer aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst;
Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit zugeordneten Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen;
Kommunizieren eines upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst;
Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst;
Zuordnen der upgedateten aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren; und
in Reaktion auf die upgedatete aktuelle zulässige Anzahl von Computerressourcen, die kleiner als die aktuelle zulässige Anzahl von Computerressourcen ist, Übertragen bzw. Senden einer Anweisung, eine zugeordnete Computerressource freizugeben, zu einer der Vielzahl von Abfragekoordinatoren.
Empfangen, durch einen oder mehrere Prozessoren eines lokalen Hintergrunddienstes, von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren;
basierend auf der Information in Bezug auf Abfrageanforderungen, Erzeugen eines aktuellen lokalen Bedarfs an Computerressourcen;
Kommunizieren des aktuellen lokalen Bedarfs an Computerressourcen zu einem globalen Hintergrunddienst über ein Netzwerk;
Empfangen einer aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst;
Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit zugeordneten Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen;
Kommunizieren eines upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst;
Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst;
Zuordnen der upgedateten aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren; und
in Reaktion auf die upgedatete aktuelle zulässige Anzahl von Computerressourcen, die kleiner als die aktuelle zulässige Anzahl von Computerressourcen ist, Übertragen bzw. Senden einer Anweisung, eine zugeordnete Computerressource freizugeben, zu einer der Vielzahl von Abfragekoordinatoren.
Description
- TECHNISCHES GEBIET
- Die vorliegende Offenbarung bezieht sich allgemeinen auf flexibles Computing und insbesondere auf eine dynamische Zuteilung von Computerressourcen auf Bedarfsbasis.
- Um als Gebrauchsmuster geschützt und Gegenstand davon zu sein, gibt es gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren. In einem Fall, in welchem in der Beschreibung Bezug auf Verfahren genommen wird, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen darzustellen, für welche mit den enthaltenen Ansprüchen Schutz gesucht wird.
- HINTERGRUND
- Da die Welt immer datengetriebener wird, speichern Datenbanksysteme und andere Datensysteme immer mehr Daten. Damit ein Unternehmen diese Daten verwenden kann, werden unterschiedliche Operationen oder Abfragen typischerweise an dieser großen Datenmenge ausgeführt. Einige Operationen, wie zum Beispiel diejenigen, die große Tabellenscans bzw. -abtastungen enthalten, können eine beträchtliche Menge an Zeit in Anspruch nehmen, um an einer großen Datenmenge auszuführen. Die Zeit zur Ausführung solcher Operationen kann proportional zur Anzahl von zur Ausführung verwendeten Computerressourcen sein, so dass die Zeit unter Verwendung von mehr Computerressourcen verkürzt werden kann.
- Zu diesem Zweck können einige Datensysteme einen Pool von Computerressourcen bereitstellen und diese Ressourcen können zugeordnet werden, um verschiedene Operationen auszuführen. In solchen Systemen arbeiten jedoch die zugeordneten Computerressourcen typischerweise zusammen, wie zum Beispiel in einer Prozessgruppe. Somit sind ihre Zuordnungen fest und statisch. Das bedeutet, dass eine Computerressource einer Operation zugeordnet bleiben kann, die diese Computerressource nicht mehr benötigt. Die Zuordnungen dieser Computerressourcen können nicht einfach in Reaktion auf Bedarfsänderungen modifiziert werden. Somit werden die Computerressourcen nicht bis zu ihrer vollständigen Leistungsfähigkeit genutzt.
- Figurenliste
- Verschiedene der beigefügten Zeichnungen stellen lediglich beispielhafte Ausführungsformen der vorliegenden Offenbarung dar und sollten nicht als ihren Schutzumfang beschränkend angesehen werden.
-
1 stellt eine beispielhafte Computerumgebung, in welcher ein netzwerkbasiertes, universelles Datenbanksystem Streams an gemeinsam genutzten bzw. geteilten Datenbankobjekten implementieren kann, gemäß einigen beispielhaften Ausführungsformen dar. -
2 ist ein Blockdiagramm, das Komponenten eines Computer-Servicemanagers darstellt, gemäß einigen beispielhaften Ausführungsformen. -
3 ist ein Blockdiagramm, das Komponenten einer Ausführungsplattform darstellt, gemäß einigen beispielhaften Ausführungsformen. -
4 ist ein Blockdiagramm, das einen globalen Vordergrunddienst darstellt, gemäß einigen beispielhaften Ausführungsformen. -
5 ist ein Blockdiagramm, das ein Netzwerksystem darstellt, gemäß einigen beispielhaften Ausführungsformen. -
6 zeigt ein Ablaufdiagramm zum Berechnen eines lokalen Bedarfs an Computerressourcen gemäß einigen beispielhaften Ausführungsformen. -
7 zeigt ein Ablaufdiagramm zum Zuteilen von Computerressourcen gemäß einigen beispielhaften Ausführungsformen. -
8A-8B zeigen ein Ablaufdiagramm zur dynamischen Zuteilung von Computerressourcen gemäß einigen beispielhaften Ausführungsformen. -
9 stellt eine schematische Darstellung einer Maschine in der Form eines Computersystems, innerhalb von welchem eine Gruppe von Anweisungen ausgeführt werden kann, um zu veranlassen, dass die Maschine irgendeine oder mehrere der hierin diskutierten Methoden durchführt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. - DETAILLIERTE BESCHREIBUNG
- Die Beschreibung, die folgt, enthält Systeme, Methoden, Techniken, Anweisungssequenzen und Computermaschinenprogrammprodukte, die illustrative Ausführungsformen der Offenbarung verkörpern. In der folgenden Beschreibung werden zum Zwecke einer Erklärung zahlreiche spezifische Details dargelegt, um für ein Verstehen verschiedener Ausführungsformen des erfinderischen Gegenstands zu sorgen. Für Fachleute auf dem Gebiet wird es jedoch klar sein, dass Ausführungsformen des erfinderischen Gegenstands ohne diese spezifischen Details ausgeführt werden können. Im Allgemeinen werden wohlbekannte Anweisungsinstanzen, Protokolle, Strukturen und Techniken nicht notwendigerweise im Detail gezeigt.
- Die Ausführungsformen der vorliegenden Offenbarung können dynamische Zuordnungstechniken zum Zuteilen von Ressourcen auf einer Bedarfsbasis zur Verfügung stellen. Eine Zuordnungssteuerung kann in wenigstens zwei Komponenten getrennt sein: eine lokale Komponente und eine globale Komponente. Jede Komponente kann einen aktiven Dialog miteinander haben; der Dialog kann zwei Aspekte enthalten: 1) einen Bedarf an Computerressourcen und 2) eine zulässige Gesamtanzahl von Computerressourcen. Die lokale Komponente kann den ersten Aspekt, den aktuellen Bedarf an Computerressourcen, einstellen; die globale Komponente kann den zweiten Aspekt, die zulässige Gesamtanzahl von Computerressourcen, einstellen. Diese Aufteilung einer Steuerung bietet Vorteile, wie beispielsweise ein proportionales Zuteilen von Ressourcen zu konkurrierenden Anforderungen unter Verwendung von Algorithmen für gerechte Verteilung. Die globale Komponente kann Ressourcen aus einem Pool von Ressourcen verschiedenen lokalen Komponenten zuteilen und die lokalen Komponenten können wiederum ihre zugeteilten Ressourcen lokalen konkurrierenden Anforderungen zuordnen. Sowohl die globalen als auch die lokalen Komponenten können Algorithmen für gerechte Verteilung für ihre jeweiligen Zuteilungen und Zuordnungen verwenden. Somit können die Zuordnungen der Ressourcen dynamisch modifiziert werden, wenn sich ein Bedarf ändert, was zu einer weiter optimierten Nutzung von Computerressourcen führt.
-
1 stellt eine beispielhafte gemeinsam genutzte bzw. geteilte Datenverarbeitungsplattform100 , die eine sichere Nachrichtenübermittlung zwischen Bereitstellungen bzw. Stationierungen implementiert, gemäß einigen Ausführungsformen der vorliegenden Offenbarung dar. Um zu vermeiden, dass der erfinderische Gegenstand mit unnötigem Detail verdunkelt wird, wurden in den Figuren verschiedene funktionelle Komponenten weggelassen, die nicht passend dafür sind, ein Verstehen des erfinderischen Gegenstands zu fördern. Ein erfahrener Handwerker wird jedoch ohne weiteres erkennen, dass verschiedene zusätzliche funktionelle Komponenten als Teil der gemeinsam genutzten bzw. geteilten Datenverarbeitungsplattform100 enthalten sein können, um eine zusätzliche Funktionalität zu ermöglichen, die hierin nicht spezifisch beschrieben ist. - Wie es gezeigt ist, umfasst die gemeinsam genutzte Datenverarbeitungsplattform
100 das netzwerkbasierte, universelle Datenbanksystem102 , eine Cloud-Computing-Speicherplattform104 (z. B. eine Speicherplattform, einen AWS®-Service, Microsoft Azure® oder Google Cloud Services®) und eine entfernte Computervorrichtung106 . Das netzwerkbasierte, universellen Datenbanksystem102 ist ein netzwerkbasiertes System, das zum Speichern von und Zugreifen auf Daten (z. B. internes Speichern von Daten, Zugreifen auf externe, entfernt angeordnete Daten) und zum Berichten über die und Analysieren der integrierten Daten aus der einen oder den mehreren ungleichen Quellen (z. B. der Cloud-Computing-Speicherplattform104 ) verwendet wird. Die Cloud-Computing-Speicherplattform104 umfasst eine Vielzahl von Computermaschinen und stellt dem netzwerkbasierten, universellen Datenbanksystem102 Computersystemressourcen auf eine Anforderung hin bzw. On-Demand-Computersystemressourcen, wie beispielsweise Datenspeicherung und Rechenleistung, zur Verfügung. Während bei der in1 dargestellten Ausführungsform eine universelle Datenbank gezeigt ist, können andere Ausführungsformen andere Arten von Datenbanken oder andere Datenverarbeitungssysteme enthalten. - Die entfernte Computervorrichtung
106 (z.B. ein Anwendergerät wie beispielsweise ein Laptop-Computer) umfasst eine oder mehrere Computermaschinen (z.B. ein Anwendergerät wie beispielsweise einen Laptop-Computer), die eine entfernte Softwarekomponente108 (z.B. Clouddienst, auf den durch einen Browserzugegriffen wird) ausführen, um Anwendern des netzwerkbasierten, universellen Datenbanksystems102 eine zusätzliche Funktionalität zur Verfügung zu stellen. Die entfernte Softwarekomponente108 umfasst eine Gruppe von maschinenlesbaren Anweisungen (z.B. einen Code), die dann, wenn sie durch die entfernte Computervorrichtung106 ausgeführt werden, veranlassen, dass die entfernte Computervorrichtung106 eine bestimmte Funktionalität zur Verfügung stellt. Die entfernte Softwarekomponente108 kann mit Eingabedaten betrieben werden und erzeugt Ergebnisdaten basierend auf einem Verarbeiten, Analysieren oder einem anderweitigen Transformieren der Eingabedaten. Als ein Beispiel kann die entfernte Softwarekomponente108 ein Datenanbieter oder Datenverbraucher sein, der Datenbankverfolgungsprozeduren, wie beispielsweise Streams an geteilten Tabellen und Ansichten, ermöglicht, wie es nachstehend in weiterem Detail diskutiert wird. - Das netzwerkbasierte, universelle Datenbanksystem
102 umfasst ein Zugriffsmanagementsystem110 , einen Computer-Servicemanager112 , eine Ausführungsplattform114 und eine Datenbank116 . Das Zugriffsmanagementsystem110 ermöglicht, dass administrative Anwender einen Zugriff auf Ressourcen und Dienste, die durch das netzwerkbasierte, universelle Datenbanksystem102 zur Verfügung gestellt sind, managen. Administrative Anwender können Anwender, Rollen bzw. Aufgaben und Gruppen erzeugen und managen und Berechtigungen verwenden, um einen Zugriff auf Ressourcen und Dienste zuzulassen oder zu verweigern. Das Zugriffsmanagementsystem110 kann Teilungsdaten speichern, die einen geteilten Zugriff auf die Speicherressourcen der Cloud-Computing-Speicherplattform104 unter unterschiedlichen Anwender des netzwerkbasierten, universellen Datenbanksystems102 sicher managen, wie es nachstehend in weiterem Detail diskutiert wird. - Der Computer-Servicemanager
112 koordiniert und managt Operationen des netzwerkbasierten, universellen Datenbanksystems102 . Der Computer-Servicemanager112 führt auch Abfrageoptimierung und -kompilierung sowie ein Managen von Clustern von Computerdiensten durch, die Computerressourcen (z.B. virtuelle Lagerorte, virtuelle Maschinen, EC2-Cluster) zur Verfügung stellen. Der Computer-Servicemanager112 kann eine beliebige Anzahl von Client-Konten unterstützen, wie beispielsweise Endanwender, die Datenspeicherungs- und -wiedergewinnungsanforderungen zur Verfügung stellen, Systemadministratoren, die die hierin beschriebenen Systeme und Verfahren managen, und andere Komponenten/Vorrichtungen, die mit dem Computer-Servicemanager112 interagieren. - Der Computer-Servicemanager
112 ist auch mit der Datenbank116 gekoppelt, die mit der Gesamtheit von auf der gemeinsam genutzten bzw. geteilten Datenverarbeitungsplattform100 gespeicherten Daten assoziiert ist. Die Datenbank116 speichert Daten, die zu verschiedenen Funktionen und Aspekten gehören, die mit dem netzwerkbasierten, universellen Datenbanksystem102 und seinen Anwendern assoziiert sind. - Bei einigen Ausführungsformen enthält die Datenbank
116 eine Zusammenfassung von in entfernten Datenspeichersystemen gespeicherten Daten sowie Daten, die aus einem oder mehreren lokalen Caches verfügbar sind. Zusätzlich kann die Datenbank116 Information in Bezug darauf enthalten, wie Daten in den entfernten Datenspeichersystemen und den lokalen Caches organisiert sind. Die Datenbank116 lässt zu, dass Systeme und Dienste bestimmen, ob auf ein Datenstück zugegriffen werden muss, ohne die tatsächlichen Daten aus einer Speichervorrichtung zu laden oder darauf zuzugreifen. Der Computer-Servicemanager112 ist weiterhin mit einer Ausführungsplattform114 gekoppelt, die mehrere Computerressourcen (z.B. virtuelle Lagerorte) zur Verfügung stellt, die verschiedene Datenspeicherungs- und Datenwiedergewinnungsaufgaben ausführen, wie es nachstehend in größerem Detail diskutiert wird. - Die Ausführungsplattform
114 ist mit mehreren Datenspeichervorrichtungen124-1 bis124-n gekoppelt, die Teil einer Cloud-Computing-Speicherplattform104 sind. Bei einigen Ausführungsformen sind die Datenspeichervorrichtungen124-1 bis124-n cloudbasierte Speichervorrichtungen, die sich an einem oder mehreren geografischen Standorten befinden. Zum Beispiel können die Datenspeichervorrichtungen124-1 bis124-n Teil einer öffentlichen Cloud-Infrastruktur oder einer privaten Cloud-Infrastruktur sein. Die Datenspeichervorrichtungen124-1 bis124-n können Festplattenlaufwerke (HDDs), Festkörperlaufwerke (SSDs), Speichercluster, Amazon-S3-Speichersysteme oder irgendeine andere Datenspeichertechnologie sein. Zusätzlich kann die Cloud-Computing-Speicherplattform104 verteilte Dateiensysteme (z.B. Hadoop Distributed File Systems (HDFS)), Objektspeichersysteme und ähnliches enthalten. - Die Ausführungsplattform
114 umfasst eine Vielzahl von Computerknoten (z.B. virtuelle Lagerorte). Eine Gruppe von Prozessen auf einem Computerknoten führt einen Abfrageplan aus, der durch den Computer-Servicemanager112 kompiliert ist. Die Gruppe bzw. der Satz von Prozessen kann folgendes enthalten: einen ersten Prozess, um den Abfrageplan auszuführen; einen zweiten Prozess, um Mikropartitionsdateien unter Verwendung einer „am-längsten-nicht-verwendet“-(LRU-)Strategie zu überwachen und zu löschen und um einen „außerhalb-des-Speichers“-(OOM-)Fehlerminderungsprozesses zu implementieren; einen dritten Prozess, der Gesundheits- bzw. Integritätsinformation aus Prozessprotokollen und Statusinformationen extrahiert, um sie zum Computer-Servicemanager112 zurückzusenden; einen vierten Prozess, um eine Kommunikation mit dem Computer-Servicemanager112 nach einem Systemstart einzurichten; und einen fünften Prozess, um die gesamte Kommunikation mit einem Computercluster für einen gegebenen Job bzw. Auftrag handzuhaben, der durch den Computer-Servicemanager112 zur Verfügung gestellt ist, und um Information zurück zum Computer-Servicemanager112 und andere Computerknoten der Ausführungsplattform114 zu kommunizieren. - Die Cloud-Computing-Speicherplattform
104 umfasst auch ein Zugriffsmanagementsystem118 und einen Web-Proxy120 . Wie beim Zugriffsmanagementsystem110 lässt das Zugriffsmanagementsystem118 zu, dass Anwender Anwender, Rollen bzw. Aufgaben und Gruppen erzeugen und managen und Berechtigungen verwenden, um einen Zugriff auf Clouddienste und -ressourcen zuzulassen oder zu verweigern. Das Zugriffsmanagementsystem110 des netzwerkbasierten, universellen Datenbanksystems102 und das Zugriffsmanagementsystem118 der Cloud-Computing-Speicherplattform104 können kommunizieren und Information teilen, um einen Zugriff und ein Management von Ressourcen und Diensten zu ermöglichen, die von Anwender des netzwerkbasierten, universellen Datenbanksystems102 und der Cloud-Computing-Speicherplattform104 gemeinsam genutzt bzw. geteilt werden. Der Web-Proxy120 handhabt Aufgaben, die an einem Akzeptieren und Verarbeiten gleichzeitiger API-Aufrufe beteiligt sind, einschließlich eines Verkehrsmanagements, einer Autorisierung und einer Zugriffssteuerung, einer Überwachung und eines API-Versionsmanagements. Der Web-Proxy120 stellt einen HTTP-Proxydienst zum Erzeugen, Veröffentlichen, Warten, Sichern und Überwachen von APIs (z.B. REST-APIs) zur Verfügung. - Bei einigen Ausführungsformen sind Kommunikationsverbindungen zwischen Elementen der gemeinsam genutzten Datenverarbeitungsplattform
100 über ein oder mehrere Datenkommunikationsnetzwerke implementiert. Diese Datenkommunikationsnetzwerke können irgendein Kommunikationsprotokoll und irgendeinen Typ von Kommunikationsmedium nutzen. Bei einigen Ausführungsformen sind die Datenkommunikationsnetzwerke eine Kombination aus zwei oder mehr miteinander gekoppelten Datenkommunikationsnetzwerken (oder Unternetzwerken). In alternativen Ausführungsformen sind diese Kommunikationsverbindungen unter Verwendung von irgendeinem Typ von Kommunikationsmedium und irgendeinem Kommunikationsprotokoll implementiert. - Wie es in
1 gezeigt ist, sind die Datenspeichervorrichtungen124-1 bis124-N von den Computerressourcen entkoppelt, die mit der Ausführungsplattform114 assoziiert sind. Das bedeutet, dass neue virtuelle Lagerstandorte in der Ausführungsplattform114 erzeugt und aufgelöst werden können und zusätzliche Datenspeichervorrichtungen auf der Cloud-Computing-Speicherplattform104 auf unabhängige Weise erzeugt und aufgelöst werden können. Diese Architektur unterstützt dynamische Änderungen am netzwerkbasierten, universellen Datenbanksystem102 basierend auf den sich ändernden Notwendigkeiten von Datenspeicherung/-wiedergewinnung sowie den sich ändernden Notwendigkeiten der Anwender und Systeme, die auf die gemeinsam genutzte Datenverarbeitungsplattform100 zugreifen. Die Unterstützung dynamischer Änderungen lässt zu, dass sich das netzwerkbasierte, universelle Datenbanksystem102 in Reaktion auf sich ändernde Anforderungen an die Systeme und Komponenten innerhalb des netzwerkbasierten, universellen Datenbanksystems102 schnell skaliert bzw. maßstäblich anpasst. Die Entkopplung der Computerressourcen von den Datenspeichervorrichtungen124-1 bis124-n unterstützt die Speicherung großer Datenmengen, ohne dass eine entsprechende große Menge an Computerressourcen erforderlich ist. Auf ähnliche Weise unterstützt diese Entkopplung von Ressourcen eine signifikante Erhöhung bei den zu einem bestimmten Zeitpunkt genutzten Computerressourcen, ohne dass eine entsprechende Erhöhung bei den verfügbaren Datenspeicherressourcen erforderlich ist. Zusätzlich ermöglicht die Entkopplung von Ressourcen unterschiedlichen Konten ein Erzeugen zusätzlicher Computerressourcen zu handhaben, um Daten zu verarbeiten, die von anderen Anwendern gemeinsam genutzt bzw. geteilt werden, ohne die Systeme der anderen Anwender zu beeinflussen bzw. zu beeinträchtigen. Zum Beispiel kann ein Datenanbieter drei Computerressourcen haben und Daten mit einem Datenverbraucher teilen und kann der Datenverbraucher neue Computerressourcen erzeugen, um Abfragen gegenüber den geteilten Daten auszuführen, wobei die neuen Computerressourcen durch den Datenverbraucher gemanagt werden und die Computerressourcen des Datenanbieters nicht beeinflussen oder mit ihnen interagieren. - Der Computer-Servicemanager
112 , die Datenbank116 , die Ausführungsplattform114 , die Cloud-Computing-Speicherplattform104 und die entfernte Computervorrichtung106 sind in1 als einzelne Komponenten gezeigt. Jedoch kann jeder bzw. jede von dem Computer-Servicemanager112 , der Datenbank116 , der Ausführungsplattform114 , der Cloud-Computing-Speicherplattform104 und der entfernten Computerumgebung als verteiltes System implementiert sein (z. B. verteilt über mehrere Systeme/Plattformen an mehreren geografischen Standorten), das durch APIs und Zugriffsinformation (z.B. Token, Anmeldedaten) verbunden ist. Zusätzlich kann jeder oder jede von dem Computer-Servicemanager112 , der Datenbank116 , der Ausführungsplattform114 und der Cloud-Computing-Speicherplattform104 abhängig von Änderungen an den empfangenen Anforderungen und den sich ändernden Notwendigkeiten der der gemeinsam genutzten Datenverarbeitungsplattform100 nach oben oder unten skaliert werden. Somit ist das netzwerkbasierte, universellen Datenbanksystem102 bei den beschriebenen Ausführungsformen dynamisch und unterstützt regelmäßige Änderungen, um den aktuellen Notwendigkeiten einer Datenverarbeitung gerecht zu werden. - Während einer typischen Operation bzw. eines typischen Betriebs verarbeitet das netzwerkbasierte, universelle Datenbanksystem
102 mehrere Jobs bzw. Aufträge (z.B. Abfragen), die durch den Computer-Servicemanager112 bestimmt sind. Diese Aufträge werden durch den Computer-Servicemanager112 geplant und gemanagt, um zu bestimmen, wann und wie der Auftrag ausgeführt werden soll. Zum Beispiel kann der Computer-Servicemanager112 den Job in mehrere diskrete Aufgaben aufteilen und kann bestimmen, welche Daten nötig sind, um jede der mehreren diskreten Aufgaben auszuführen. Der Computer-Servicemanager112 kann jede der mehreren diskreten Aufgaben einem oder mehreren Knoten der Ausführungsplattform114 zuordnen, um die Aufgabe zu verarbeiten. Der Computer-Servicemanager112 kann bestimmen, welche Daten nötig sind, um eine Aufgabe zu verarbeiten, und weiter bestimmen, welche Knoten innerhalb der Ausführungsplattform114 am besten geeignet sind, um die Aufgabe zu verarbeiten. Einige Knoten können bereits die Daten in einem Cache gespeichert bzw. zwischengespeichert haben, die nötig sind, um die Aufgabe zu verarbeiten (aufgrund dessen, dass die Knoten die Daten kürzlich von der Cloud-Computing-Speicherplattform104 für einen früheren Auftrag heruntergeladen haben), und können daher ein guter Kandidat zum Verarbeiten der Aufgabe sein. Metadaten, die in der Datenbank116 gespeichert sind, helfen dem Computer-Servicemanager112 beim Bestimmen, welche Knoten in der Ausführungsplattform114 bereits wenigstens einen Teilbereich der Daten zwischengespeichert haben, die nötig sind, um die Aufgabe zu verarbeiten. Ein oder mehrere Knoten in der Ausführungsplattform114 verarbeiten die Aufgabe unter Verwendung von Daten, die durch die Knoten zwischengespeichert sind, und, wenn es nötig ist, Daten, die von der Cloud-Computing-Speicherplattform104 wiedergewonnen sind. Es ist wünschenswert, so viele Daten wie möglich aus Caches innerhalb der Ausführungsplattform114 wiederzugewinnen bzw. abzurufen, weil die Wiedergewinnungs- bzw. Abrufgeschwindigkeit typischerweise viel schneller ist als eine Abrufen von Daten von der Cloud-Computing-Speicherplattform104 . - Wie es in
1 gezeigt ist, trennt die gemeinsam genutzte Datenverarbeitungsplattform100 die Ausführungsplattform114 von der Cloud-Computing-Speicherplattform104 . Bei dieser Anordnung arbeiten die Verarbeitungsressourcen und Cache-Ressourcen in der Ausführungsplattform114 unabhängig von den Datenspeichervorrichtungen124-1 bis124-n in der Cloud-Computing-Speicherplattform104 . Somit sind die Computerressourcen und Cache-Ressourcen nicht auf spezifische Datenspeichervorrichtungen124-1 bis124-n beschränkt. Stattdessen können alle Computerressourcen und alle Cache-Ressourcen Daten aus irgendeiner der Datenspeicherressourcen in der Cloud-Computing-Speicherplattform104 abrufen und Daten zu dieser speichern. -
2 ist ein Blockdiagramm, das Komponenten des Computer-Servicemanagers112 darstellt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Wie es in2 gezeigt ist, managt ein Anforderungsverarbeitungsdienst202 empfangene Datenspeicheranforderungen und Datenabrufanfragen (z.B. Jobs bzw. Aufträge, die an Datenbankdaten durchgeführt werden sollen). Zum Beispiel kann der Anforderungsverarbeitungsdienst202 die Daten bestimmen, die nötig sind, um eine empfangene Abfrage zu verarbeiten (z.B. eine Datenspeicheranforderung oder Datenabrufanforderung). Die Daten können in einem Cache innerhalb der Ausführungsplattform114 oder in einer Datenspeichervorrichtung auf der Cloud-Computing-Speicherplattform104 gespeichert werden. Ein Managementkonsolendienst204 unterstützt den Zugriff auf verschiedene Systeme und Prozesse durch Administratoren und andere Systemmanager. Zusätzlich kann der Managementkonsolendienst204 eine Anforderung empfangen, um einen Job auszuführen und die Arbeitsbelastung auf dem System zu überwachen. Die Stream-Teilungsmaschine225 managt eine Änderungsverfolgung an Datenbankobjekten, wie beispielsweise eine Datenfreigabe bzw. -teilung (z.B. freigegebene bzw. geteilte Tabelle) oder eine freigegebene bzw. geteilte Ansicht, gemäß einigen beispielhaften Ausführungsformen und wie es nachstehend in weiterem Detail diskutiert wird. - Der Computer-Servicemanager
112 enthält auch einen Auftrags- bzw. Job-Compiler206 , einen Auftrags- bzw. Job-Optimierer208 und einen Auftrags- bzw. Job-Ausführer210 . Der Job-Compiler206 zerlegt bzw. parst einen Job in mehrere diskrete Aufgaben und erzeugt den Ausführungscode für jede der mehreren diskreten Aufgaben. Der Job-Optimierer208 bestimmt die beste Methode, um die mehreren diskreten Aufgaben auszuführen, basierend auf den zu verarbeitenden Daten. Der Job-Optimierer208 handhabt auch verschiedene Datenbeschneidungsoperationen und andere Datenoptimierungstechniken, um die Geschwindigkeit und Effizienz einer Ausführung des Jobs zu verbessern. Der Job-Ausführer210 führt den Ausführungscode für Jobs aus, die von einer Warteschlange empfangen oder durch den Computer-Servicemanager112 bestimmt sind. - Ein Auftrags- bzw. Job-Planer und -Koordinator
212 sendet empfangene Jobs zu den geeigneten Diensten oder Systemen zur Kompilierung, Optimierung und Auslieferung zur Ausführungsplattform114 . Zum Beispiel können Jobs priorisiert und in dieser priorisierten Reihenfolge verarbeitet werden. Bei einer Ausführungsform bestimmt der Job-Planer und -Koordinator212 eine Priorität für interne Jobs, die durch den Computer-Servicemanager112 geplant sind, mit anderen Jobs „von außerhalb“, wie beispielsweise Anwenderabfragen, die durch andere Systeme in der Datenbank geplant sein können, aber dieselben Verarbeitungsressourcen in der Ausführungsplattform114 verwenden können. Bei einigen Ausführungsformen identifiziert der Job-Planer und -Koordinator212 bestimmte Knoten in der Ausführungsplattform114 oder ordnet sie zu, um bestimmter Aufgaben zu verarbeiten. Ein virtueller Lagermanager214 managt die Operation von mehreren virtuellen Lagern, die in der Ausführungsplattform114 implementiert sind. Wie es nachstehend diskutiert wird, enthält jedes virtuelle Lager mehrere Ausführungsknoten, die jeweils einen Cache und einen Prozessor enthalten (z.B. eine virtuelle Maschine, eine Containerausführungsumgebung auf Betriebssystemebene). - Zusätzlich enthält der Computer-Servicemanager
112 einen Konfigurations- und Metadaten-Manager216 , der die Informationen in Bezug auf die Daten managt, die in den entfernten Datenspeichervorrichtungen und in den lokalen Caches (d.h. den Caches in der Ausführungsplattform114 ) gespeichert sind. Der Konfigurations- und Metadaten-Manager216 verwendet die Metadaten, um zu bestimmen, auf welche Daten-Mikropartitionen zugegriffen werden muss, um Daten zur Verarbeitung einer bestimmten Aufgabe oder eines bestimmten Auftrags bzw. Jobs abzurufen. Ein Überwachungs- und Arbeitsbelastungs-Analysator218 überwacht durch den Computer-Servicemanager112 durchgeführte Prozesse und managt die Verteilung von Aufgaben (z.B. Arbeitsbelastung) quer über die virtuellen Lagerorte und Ausführungsknoten in der Ausführungsplattform114 . Der Überwachungs- und Arbeitsbelastungs-Analysator218 verteilt Aufgaben auch neu, wie es nötig ist, basierend auf sich ändernden Arbeitsbelastungen im gesamten netzwerkbasierten, universellen Datenbanksystem102 und kann Aufgaben weiterhin neu verteilen basierend auf einer Abfragearbeitsbelastung eines Anwenders (z.B. „extern“), die auch durch die Ausführungsplattform114 verarbeitet werden können. Der Konfigurations- und Metadaten-Manager216 sowie der Überwachungs- und Arbeitsbelastungs-Analysator218 sind mit einer Datenspeichervorrichtung220 gekoppelt. Die Datenspeichervorrichtung220 in2 stellt irgendeine Datenspeichervorrichtung innerhalb des netzwerkbasierten, universellen Datenbanksystems102 dar. Zum Beispiel kann die Datenspeichervorrichtung220 Caches in der Ausführungsplattform114 , Speichervorrichtungen in der Cloud-Computing-Speicherplattform104 oder irgendeine andere Speichervorrichtung darstellen. -
3 ist ein Blockdiagramm, das Komponenten der Ausführungsplattform114 darstellt, gemäß einigen Ausführungsformen der vorliegenden Offenbarung. Wie es in3 gezeigt ist, enthält die Ausführungsplattform114 mehrere virtuelle Lagerorte, die elastische Cluster von Computerinstanzen sind, wie beispielsweise virtuelle Maschinen. Bei dem dargestellten Beispiel enthalten die virtuellen Lagerorte einen virtuellen Lagerort 1, einen virtuellen Lagerort 2 und einen virtuellen Lagerort n. Jeder virtuelle Lagerort bzw. jedes virtuelle Lager (z.B. EC2-Cluster) enthält mehrere Ausführungsknoten (z.B. virtuelle Maschinen), die jeweils einen Datencache und einen Prozessor enthalten. Die virtuellen Lager können mehrere Aufgaben parallel ausführen, indem sie die mehreren Ausführungsknoten verwenden. Wie es hierin diskutiert ist, kann die Ausführungsplattform114 neue virtuelle Lager hinzufügen und existierende virtuelle Lager fallenlassen, und zwar in Echtzeit basierend auf den aktuellen Notwendigkeiten einer Verarbeitung der Systeme und Anwender. Diese Flexibilität lässt zu, dass die Ausführungsplattform114 schnell große Mengen an Computerressourcen nutzt, wenn sie benötigt werden, ohne dazu gezwungen zu sein, weiterhin für diese Computerressourcen zu bezahlen, wenn sie nicht mehr benötigt werden. Alle virtuellen Lager können von irgendeiner Datenspeichervorrichtung (z. B. irgendeiner Speichervorrichtung in der Cloud-Computing-Speicherplattform104 ) aus auf Daten zugreifen. - Obwohl jedes in
3 gezeigte virtuelle Lager drei Ausführungsknoten enthält, kann ein bestimmtes virtuelles Lager eine beliebige Anzahl von Ausführungsknoten enthalten. Weiterhin ist die Anzahl von Ausführungsknoten in einem virtuellen Lager dynamisch, so dass neue Ausführungsknoten erzeugt werden, wenn zusätzlicher Bedarf vorhanden ist, und existierende Ausführungsknoten gelöscht werden, wenn sie nicht mehr benötigt werden (z.B. auf eine Abfrage oder eine Job-Beendigung hin). - Jedes virtuelle Lager ist in der Lage, auf irgendeine der in
1 gezeigten Datenspeichervorrichtungen124-1 bis124-n zuzugreifen. Somit sind die virtuellen Lager nicht notwendigerweise einer spezifischen Datenspeichervorrichtung124-1 bis124-n zugeordnet und können stattdessen auf Daten von irgendeiner der Datenspeichervorrichtungen124-1 bis124-n innerhalb der Cloud-Computing-Speicherplattform104 zugreifen. Gleichermaßen kann jeder der in3 gezeigten Ausführungsknoten auf Daten von irgendeiner der Datenspeichervorrichtungen124-1 bis124-n zugreifen. Zum Beispiel kann die Speichervorrichtung124-1 eines ersten Anwenders (z.B. Anbieterkontoanwender) mit einem Arbeiterknoten in einem virtuellen Lager eines anderen Anwenders (z. B. Verbraucherkontoanwender) geteilt werden, so dass der andere Anwender eine Datenbank (z.B. schreibgeschützte Datenbank) erzeugen und die Daten in der Speichervorrichtung124-1 direkt verwenden kann, ohne die Daten kopieren zu müssen (z.B. sie auf eine neue, durch den Anwender gemanagte Festplatte zu kopieren). Bei einigen Ausführungsformen kann ein bestimmtes virtuelles Lager oder ein bestimmter Ausführungsknoten temporär einer bestimmten Datenspeichervorrichtung zugeordnet sein, aber das virtuelle Lager oder der Ausführungsknoten kann später auf Daten von irgendeiner anderen Datenspeichervorrichtung zugreifen. - Bei dem Beispiel von
3 enthält das virtuelle Lager 1 drei Ausführungsknoten302-1 ,302-2 und302-n . Der Ausführungsknoten302-1 enthält einen Cache304-1 und einen Prozessor306-1 . Der Ausführungsknoten302-2 enthält einen Cache304-2 und einen Prozessor306-2 . Der Ausführungsknoten302-n enthält einen Cache304-n und einen Prozessor306-n . Jeder Ausführungsknoten302-1 ,302-2 und302-n ist mit einer Verarbeitung von einer oder mehreren Datenspeicher- und/oder Datenabrufaufgaben assoziiert. Ein virtuelles Lager kann zum Beispiel Datenspeicher- und Datenabrufaufgaben handhaben, die mit einem internen Dienst assoziiert sind, wie beispielsweise einem Clusterdienst, einem Auffrischdienst für eine materialisierte Ansicht, einem Dateikomprimierungsdienst, einem Speicherprozedurdienst oder einem Dateiaktualisierungsdienst bzw. -upgradedienst. Bei anderen Implementierungen kann ein bestimmtes virtuelles Lager Datenspeicher- und Datenabrufaufgaben, die mit einem bestimmten Datenspeichersystem oder einer bestimmten Datenkategorie assoziiert sind, handhaben. - Ähnlich dem oben diskutierten virtuellen Lager 1 enthält das virtuelle Lager 2 drei Ausführungsknoten
312-1 ,312-2 und312-n . Der Ausführungsknoten312-1 enthält einen Cache314-1 und einen Prozessor316-1 . Der Ausführungsknoten312-2 enthält einen Cache314-2 und einen Prozessor316-2 . Der Ausführungsknoten312-n enthält einen Cache314-n und einen Prozessor316-n . Zusätzlich enthält das virtuelle Lager 3 drei Ausführungsknoten322-1 ,322-2 und322-n . Der Ausführungsknoten322-1 enthält einen Cache324-1 und einen Prozessor326-1 . Der Ausführungsknoten322-2 enthält einen Cache324-2 und einen Prozessor326-2 . Der Ausführungsknoten322-n enthält einen Cache324-n und einen Prozessor326-n . - Bei einigen Ausführungsformen sind die in
3 gezeigten Ausführungsknoten in Bezug auf die Daten, die die Ausführungsknoten im Cache speichern, zustandslos. Zum Beispiel speichern diese Ausführungsknoten keine Statusinformation über den Ausführungsknoten oder unterhalten sie auf andere Weise, oder die Daten, die durch einen bestimmten Ausführungsknoten im Cache gespeichert bzw. zwischengespeichert sind. Somit kann im Falle eines Ausführungsknotenfehlers der ausgefallene Knoten transparent durch einen anderen Knoten ersetzt werden. Da es keine Statusinformationen gibt, die mit dem fehlgeschlagenen Ausführungsknoten assoziiert ist, kann der neue (Ersatz-)Ausführungsknoten den ausgefallenen Knoten auf einfache Weise ersetzen, ohne Sorge um ein erneutes Erzeugen eines bestimmten Status. - Obwohl die in
3 gezeigten Ausführungsknoten jeweils einen Datencache und einen Prozessor enthalten, können alternative Ausführungsformen Ausführungsknoten enthalten, die eine beliebige Anzahl von Prozessoren und eine beliebige Anzahl von Caches enthalten. Zusätzlich können die Caches bezüglich der Größe zwischen den verschiedenen Ausführungsknoten variieren. Die in3 gezeigten Caches speichern im lokalen Ausführungsknoten (z. B. einer lokalen Platte) Daten, die von einer oder mehreren Datenspeichervorrichtungen in der Cloud-Computing-Speicherplattform104 abgerufen wurden (z.B. S3-Objekte, auf die kürzlich durch den gegebenen Knoten zugegriffen wurde). Bei einigen beispielhaften Ausführungsformen speichert der Cache Dateiheader und einzelne Spalten von Dateien als Abfrage-Downloads nur Spalten, die für diese Abfrage nötig sind. - Um Cache-Treffer zu verbessern und überlappende redundante Daten zu vermeiden, die in den Knotencaches gespeichert sind, ordnet der Job-Optimierer
208 den Knoten unter Verwendung eines konstanten Hash-Schemas Eingabedateisätze zu, um über Tabellendateinamen der Daten, auf die zugegriffen ist, (z. B. Daten in der Datenbank116 oder der Datenbank122 ) zu hashen. Nachfolgende oder gleichzeitige Abfragen, die auf dieselbe Tabellendatei zugreifen, werden daher gemäß einigen beispielhaften Ausführungsformen auf demselben Knoten durchgeführt werden. - Wie es diskutiert ist, können sich die Knoten und virtuellen Lager bzw. Lagerorte in Reaktion auf Umgebungsbedingungen (z.B. Katastrophenszenarien), Hardware-/Softwareprobleme (z.B. Fehlfunktionen) oder administrative Änderungen (z.B. ein Wechseln von einem großen Cluster zu einem kleineren Cluster zu niedrigeren Kosten) dynamisch ändern. Bei einigen beispielhaften Ausführungsformen werden dann, wenn sich die Gruppe bzw. der Satz von Knoten ändert, keine Daten sofort neu gemischt bzw. umstrukturiert. Stattdessen ist die Am-längsten-nicht-verwendet-Ersatzstrategie implementiert, um die verlorenen Cacheinhalte möglicherweise über mehrere Jobs zu ersetzen. Somit reduzieren oder eliminieren die Caches die Engpassprobleme, die in Plattformen auftreten, die konsistent Daten aus entfernten Speichersystemen abrufen. Anstelle eines wiederholten Zugreifens auf Daten von den entfernten Speichervorrichtungen, greifen die hierin beschriebenen Systeme und Verfahren auf Daten von den Caches in den Ausführungsknoten zu, was signifikant schneller ist und das oben diskutierte Engpassproblem vermeidet. Bei einigen Ausführungsformen sind die Caches unter Verwendung von Hochgeschwindigkeits-Speichervorrichtungen implementiert, die schnellen Zugriff auf die im Cache gespeicherten bzw. zwischengespeicherten Daten zur Verfügung stellen. Jeder Cache kann Daten von irgendeiner der Speichervorrichtungen in der Cloud-Computing-Speicherplattform
104 speichern. - Weiterhin können die Cacheressourcen und Computerressourcen zwischen verschiedenen Ausführungsknoten variieren. Zum Beispiel kann ein Ausführungsknoten signifikante Computerressourcen und minimale Cacheressourcen enthalten, was den Ausführungsknoten für Aufgaben nützlich macht, die signifikante Computerressourcen erfordern. Ein anderer Ausführungsknoten kann signifikante Cacheressourcen und minimale Computerressourcen enthalten, was diesen Ausführungsknoten für Aufgaben nützlich macht, die das Speichern im Cache bzw. Zwischenspeichern großer Datenmengen erfordern. Ein weiterer Ausführungsknoten kann Cacheressourcen enthalten, die schnellere Eingabe-/Ausgabeoperationen zur Verfügung stellen, was für Aufgaben nützlich ist, die ein schnelles Scannen großer Datenmengen erfordern. Bei einigen Ausführungsformen implementiert die Ausführungsplattform
114 eine Schieflagenhandhabung, um Arbeit auf die Cacheressourcen und Computerressourcen zu verteilen, die mit einer bestimmten Ausführung assoziiert sind, wobei die Verteilung weiter auf den erwarteten Aufgaben basieren kann, die durch die Ausführungsknoten durchgeführt werden sollen. Zum Beispiel können einem Ausführungsknoten mehr Verarbeitungsressourcen zugeordnet werden, wenn die durch den Ausführungsknoten durchgeführten Aufgaben prozessorintensiver werden. Gleichermaßen können einem Ausführungsknoten mehr Cacheressourcen zugeordnet werden, wenn die durch den Ausführungsknoten durchgeführten Aufgaben eine größere Cachekapazität erfordern. Weiterhin kann es sein, dass einige Knoten aufgrund verschiedener Probleme (z.B. Virtualisierungsprobleme, Netzwerk-Overhead) viel langsamer ausführend sind als andere. Bei einigen beispielhaften Ausführungsformen wird sich mit den Ungleichgewichten auf der Scan-Ebene unter Verwendung eines Dateidiebstahl-Schemas befasst. Insbesondere fordert ein Knotenprozess, wann immer er ein Scannen seiner Gruppe bzw. seines Satzes von Eingabedateien beendet, zusätzliche Dateien von anderen Knoten an. Wenn der eine der anderen Knoten eine solche Anforderung empfängt, analysiert der Knoten seinen eigenen Satz (z.B. wie viele Dateien im Eingabedateisatz gelassen sind, wenn die Anforderung empfangen wird), und überträgt dann den Besitz einer oder mehrerer der verbleibenden Dateien für die Dauer des aktuellen Jobs (z.B. Abfrage). Der anfordernde Knoten (z.B. der Dateidiebstahl-Knoten) empfängt dann die Daten (z.B. Headerdaten) und lädt die Dateien von der Cloud-Computing-Speicherplattform104 (z.B. von der Datenspeichervorrichtung124-1 ) herunter und lädt die Dateien nicht vom übertragenden Knoten herunter. Auf diese Weise können verzögernde Knoten Dateien über Dateidiebstahl auf eine Weise übertragen, die die Last auf den verzögernden Knoten nicht verschlechtert. - Obwohl virtuelle Lager 1, 2 und n mit derselben Ausführungsplattform
114 assoziiert sind, können die virtuellen Lager bzw. Lagerorte unter Verwendung von mehreren Computersystemen an mehreren geografischen Standorten implementiert sein. Zum Beispiel kann das virtuelle Lager 1 durch ein Computersystem an einem ersten geografischen Standort implementiert sein, während die virtuellen Lager 2 und n durch ein anderes Computersystem an einem zweiten geografischen Standort implementiert sind. Bei einigen Ausführungsformen sind diese verschiedenen Computersysteme cloudbasierte Computersysteme, die durch eine oder mehrere verschiedene Einheiten aufrechterhalten sind. - Zusätzlich ist jedes virtuelle Lager in
3 derart gezeigt, dass es mehrere Ausführungsknoten hat. Die mehreren Ausführungsknoten, die mit jedem virtuellen Lager assoziiert sind, können unter Verwendung von mehreren Computersystemen an mehreren geografischen Standorten implementiert sein. Zum Beispiel implementiert ein Fall des virtuellen Lagers 1 Ausführungsknoten302-1 und302-2 auf einer Computerplattform an einem geografischen Standort und implementiert einen Ausführungsknoten302-n auf einer anderen Computerplattform an einem anderen geografischen Standort. Ein Auswählen bestimmter Computersysteme, um einen Ausführungsknoten zu implementieren, kann von verschiedenen Faktoren abhängen, wie beispielsweise der Ebene der Ressourcen, die für einen bestimmten Ausführungsknoten nötig sind (z.B. Verarbeitungsressourcenanforderungen und Cacheanforderungen), den Ressourcen, die bei bestimmten Computersystemen verfügbar sind, Kommunikationsfähigkeiten von Netzwerken innerhalb eines geografischen Standorts oder zwischen geografischen Standorten und welche Computersysteme bereits andere Ausführungsknoten im virtuellen Lager implementieren. - Die Ausführungsplattform
114 ist auch fehlertolerant. Wenn zum Beispiel ein virtuelles Lager ausfällt, wird dieses virtuelle Lager schnell durch ein anderes virtuelles Lager an einem anderen geografischen Standort ersetzt. - Eine bestimmte Ausführungsplattform
114 kann eine beliebige Anzahl virtueller Lager enthalten. Zusätzlich ist die Anzahl von virtuellen Lager in einer bestimmten Ausführungsplattform dynamisch, so dass neue virtuelle Lager erzeugt werden, wenn zusätzliche Verarbeitungs- und/oder Zwischenspeicherressourcen nötig sind. Gleichermaßen können existierende virtuelle Lager gelöscht werden, wenn die mit dem virtuellen Lager assoziierten Ressourcen nicht mehr nötig sind. - Bei einigen Ausführungsformen können die virtuellen Lager an denselben Daten in der Cloud-Computing-Speicherplattform
104 arbeiten, aber jedes virtuelle Lager hat seine eigenen Ausführungsknoten mit unabhängigen Verarbeitungs- und Zwischenspeicherungsressourcen. Diese Konfiguration lässt zu, dass Anforderungen in verschiedenen virtuellen Lagern unabhängig ohne Interferenz bzw. Beeinflussung zwischen den Anforderungen verarbeitet werden. Diese unabhängige Verarbeitung kombiniert mit der Fähigkeit, virtuelle Lagerorte dynamisch hinzuzufügen und zu entfernen, unterstützt das Hinzufügen neuer Verarbeitungskapazität für neue Anwender, ohne die durch die existierenden Anwender beobachtete Leistungsfähigkeit zu beeinträchtigen. -
4 zeigt einen beispielhaften globalen Vordergrunddienst (GS)400 gemäß einigen beispielhaften Ausführungsformen. Auf GS kann auch als Computer-Servicemanager Bezug genommen werden. Der Vordergrund-GS400 kann Abfrageanforderungen empfangen und Abfragepläne entwickeln, um die Abfrageanforderungen auszuführen. Der Vordergrund-GS400 kann Anforderungen zu Computerknoten oder -ressourcen vermitteln, die einen Abfrageplan ausführen, wie es hierin in weiterem Detail erklärt ist. Der Vordergrund-GS400 kann Abfragekoordinatoren (QCs)402.1-402.3 enthalten, die mit einem lokalen Hintergrunddienst (BG)404 gekoppelt sind. Bei einer Ausführungsform kann der Vordergrund-GS400 für einen bestimmten Typ von Dienst definiert sein, wie beispielsweise Kopieren (Replizieren), Aufnehmen (eines Typs eines großen Tabellenscans), Berechnen, Abfragen des Typs eines großen Tabellenscans, etc. Die QCs402.1-402.3 können Abfrageanforderungen aus verschiedenen Quellen empfangen, die unterschiedliche Konto-IDs haben können. Für bestimmte Operationen, wie beispielsweise diejenigen, an denen mehrere Computerressourcen beteiligt sind, die zusammenarbeiten, um verschiedene Teilbereiche einer Operation (z.B. große Tabellenscans) auszuführen, kann die Quelle bei einer Granularität auf einer Ebene einer universellen Datenbank definiert sein. Die QCs402.1-402.3 können Information in Bezug auf die Abfrageanforderungen und ihre Quellen zum lokalen BG404 kommunizieren. - Wie es nachstehend in weiterem Detail erklärt wird, kann der lokale BG
404 dem QC402.1-402.3 Computerressourcen (manchmal auch als Ausführungsplattformen bezeichnet) zuordnen. Die Computerressourcen können Computerknoten, die dem Vordergrund-GS400 zugeteilt sind, aus einem Pool von Computerknoten sein. Bei einer Ausführungsform können die Computerressourcen Maschinen, Server und/oder Prozessoren sein. Bei einer Ausführungsform können die Computerressourcen Verarbeitungskernen einer Maschine sein. Auf ein Empfangen seiner Zuordnung von Computerressourcen hin können die QCs402.1-402.3 direkt mit den zugeordneten Computerressourcen kommunizieren, um jeweilige Abfragepläne auszuführen. -
5 zeigt ein Beispiel eines Netzwerksystems500 zum Zuteilen von Computerressourcen gemäß einigen beispielhaften Ausführungsformen. Das Netzwerksystem500 kann eine Vielzahl von Vordergrunddiensten510 ,520 ,530 enthalten. Jeder Vordergrunddienst kann eine Vielzahl von Abfragekoordinatoren und lokalen BGs enthalten, wie es oben beschrieben ist. Zum Beispiel kann der Vordergrunddienst510 Abfragekoordinatoren512.1-512.3 enthalten, die mit einem lokalen BG514 gekoppelt sind; der Vordergrunddienst520 kann Abfragekoordinatoren522.1-522.3 enthalten, die mit einem lokalen BG524 gekoppelt sind; und der Vordergrunddienst530 kann Abfragekoordinatoren532.1-532.3 enthalten, die mit einem lokalen BG534 gekoppelt sind. - Die lokalen BGs
514 ,524 ,534 können mit einem globalen BG550 über ein Netzwerk kommunizieren. Bei einer Ausführungsform können Kommunikationen zwischen den lokalen BGs514 ,524 ,534 und der globalen BG550 über eine Metadatendatenbank540 durchgeführt werden. Das bedeutet, dass der lokale BG514 ,524 ,534 Nachrichten, zum Beispiel in Bezug auf ihre aktuellen Computeranforderungen, zu der Metadatendatenbank540 übertragen kann, wo die Information aus diesen Nachrichten gespeichert werden kann. Und der globale BG550 kann die Information, die von dem lokalen BG514 ,524 ,534 gesendet ist, aus der Metadatendatenbank540 , lesen. Bei einer anderen Ausführungsform können die Kommunikation zwischen den lokalen BGs514 ,524 ,534 und dem globalen BG550 direkt über, zum Beispiel, entfernte Prozeduraufrufe, wie beispielsweise gRPCs, durchgeführt werden. Darüber hinaus können Kommunikationen zwischen den lokalen BGs514 ,524 ,534 und dem globalen BG550 unter Verwendung einer Kombination aus direkter Kommunikation (z.B. entfernte Prozeduraufrufe) und indirekten Kommunikationen (z.B. über eine Metadatendatenbank) durchgeführt werden. - Der globale BG
550 kann mit einem Cloudressourcenanbieter560 gekoppelt sein. Der Cloudressourcenanbieter560 kann einen Pool von Computerressourcen unterhalten. Bei einer Ausführungsform kann der globale BG550 mit einer Kommunikationsschicht über dem Cloudressourcenanbieter560 kommunizieren. - Wie es nachstehend in weiterem Detail erklärt wird, kann das Netzwerksystem
500 dynamische Computerressourcen-Zuteilungstechniken implementieren, indem Zuteilungs- oder Zuordnungsteuerungen zwischen den lokalen BGs514 ,524 ,534 und dem globalen BG550 aufgeteilt werden. Jede oder jeder der Zuteilungssteuerungskomponenten, der lokalen BGs und des globalen BG, kann Computerressourcen basierend auf Fair-Distribution-Algorithmen, wie beispielsweise einem Max-Min-Fairness-Algorithmus, zuteilen oder zuordnen. Und jede der Zuteilungssteuerungskomponenten kann ihre Zuteilungen oder Zuordnungen auf einer Bedarfsbasis modifizieren. -
6 zeigt ein Ablaufdiagramm eines Verfahrens600 zum Berechnen eines lokalen Bedarfs an Computerressourcen durch einen Vordergrund-GS gemäß einigen beispielhaften Ausführungsformen. Wie es gezeigt ist, können Teilbereiche des Verfahrens600 durch QCs (z.B. QC512.1 ) und einen lokalen BG (z.B. lokalen BG514 ) ausgeführt werden. - Bei einer Operation
605 kann der QC eine Abfrageanforderung von einer Quelle empfangen. Zum Beispiel kann die Abfrageanforderung ein Kopierbefehl oder ein Befehl für ein großes Scannen oder ähnliches sein. Die Quelle kann durch eine Konto-ID oder durch die universelle Datenbank oder ähnliches identifiziert werden. Bei einer Operation610 kann der QC Information in Bezug auf die Abfrageanforderung zum lokalen BG kommunizieren; die kommunizierte Information kann die Quelle der Abfrageanforderung enthalten. Andere QCs im Vordergrund-GS können auch Information in Bezug auf ihre jeweiligen Abfrageanforderungen zum lokalen BG kommunizieren, einschließlich der Quellen der Abfrageanforderungen. Bei einer Ausführungsform kann der Vordergrund-GS service-spezifisch bzw. dienstspezifisch sein; zum Beispiel kann der Vordergrund-GS, während er Abfragen von verschiedenen Quellen verarbeiten kann, einen Diensttyp, z.B. Kopieren, Aufnehmen, Scannen einer großen Tabelle, etc., handhaben. - Bei einer Operation
615 kann der lokale BG Abfrageinformation von seinen QCs empfangen und sammeln. Bei einer Operation620 kann der lokale BG die Abfrageinformation von den QCs konsolidieren bzw. zusammenlegen, den Bedarf durch die QCs zu einem Bedarf pro Quelle (oder Konto) umsetzen und er kann einen aktuellen lokalen Bedarf an Computerressourcen für den Vordergrund-GS berechnen. Der lokale BG kann den aktuellen lokalen Bedarf an Computerressourcen mit der Information in Bezug auf den Bedarf pro Quelle in einem lokalen Speicher speichern und aufrechterhalten. - Ein Kommunizieren des aktuellen lokalen Bedarfs und ein Empfangen einer aktuellen zulässigen Anzahl von Ressourcen vom globalen BG wird als nächstes unter Bezugnahme auf
7 beschrieben.7 zeigt ein Ablaufdiagramm eines Verfahrens700 zur Zuteilung von Computerressourcen durch einen globalen BG gemäß einigen beispielhaften Ausführungsformen. Wie es gezeigt ist, können Teilbereiche des Verfahrens700 durch lokale BGs (z.B. den lokalen BG514 ), einen globalen BG (z.B. den globalen BG550 ) und einen Cloudressourcenanbieter (z.B. den Cloudressourcenanbieter560 ) ausgeführt werden. Ebenso kann, wie es hierin diskutiert ist, die Kommunikation zwischen den lokalen BGs und den globalen BGs wenigstens teilweise über eine Metadaten-DB (z.B.540 ) durchgeführt werden. Der Klarheit und Kürze halber ist die Metadaten-DB in7 nicht gezeigt, aber es sollte verstanden werden, dass Kommunikationen zwischen dem lokalen BG und dem globalen BG ganz oder teilweise über eine Metadaten-DB durchgeführt werden können. Es sollte auch verstanden werden, dass Kommunikationen zwischen dem globalen BG und dem Cloudressourcenanbieter über eine Kommunikationsschicht über dem Cloudressourcenanbieter durchgeführt werden können. - Bei einer Operation
705 kann der lokale BG seinen aktuellen lokalen Bedarf an Computerressourcen und die Informationen in Bezug auf den Bedarf pro Quelle kommunizieren. Bei einer Ausführungsform kann der lokale BG diese Information (aktuellen lokalen Bedarf und Quellinformation) in seinem lokalen Speicher sammeln, updaten und speichern und kann durch den globalen BG abgefragt werden, um diese Information periodisch (sagen wir alle zwei Minuten) zu kommunizieren. Zu dieser Zeit kann der lokale BG die in seinem Speicher gespeicherte letzte Information kommunizieren. Bei einer Ausführungsform kann die Häufigkeit eines Kommunizierens des aktuellen lokalen Bedarfs basierend auf Systembedingungen eingestellt werden. Wenn zum Beispiel der Bedarf volatiler bzw. unbeständiger bzw. instabiler ist, kann die Häufigkeit eines Berichtens erhöht werden, und wenn der Bedarf weniger volatil ist, kann die Häufigkeit eines Berichtens erniedrigt werden. - Bei einer Operation
710 kann der globale BG die aktuellen lokalen Bedürfnisse und Quellinformation von den lokalen BGs empfangen und sammeln. Bei einer Operation715 kann der globale BG basierend auf der gesammelten Information einen aktuellen Bedarf für das System, N Anzahl von Ressourcen, berechnen. Bei einer Ausführungsform kann der berechnete aktuelle Bedarf für das System, N, die Summe der aktuellen lokalen Bedürfnisse der lokalen BGs sein. Bei einer Ausführungsform kann N kleiner als die Summe der aktuellen lokalen Bedürfnisse der lokalen BGs sein. Zum Beispiel kann der globale BG die Daten glätten und/oder historische Daten bei seiner Berechnung des aktuellen Bedarfs für das System berücksichtigen. Dies kann ein Anfordern von zu vielen Ressourcen basierend auf einem kurzfristigen Anstieg bezüglich eines Bedarfs verhindern, wo die Ressourcen möglicherweise nicht vollständig genutzt werden, sobald sich der Anstieg des Bedarfs auflöst. Zusätzlich kann der globale BG die Quelleninformation aus den verschiedenen Abfrageanforderungen überprüfen und basierend auf einer Quote oder einer Kontoobergrenze von Ressourcen für eine Quelle bestimmen, dass eine oder mehrere der Quellen möglicherweise nicht geeignet sind, alle angeforderten Ressourcen in Bezug auf ihren Anforderungen zu empfangen. Die Quote oder die Kontoobergrenze kann durch eine Quelle oder einen Administrator eingestellt werden. - Bei einer Operation
720 kann der globale BG den Cloudressourcenanbieter für die Anzahl N von Ressourcen anfordern. Bei einer Operation725 kann der Cloudressourcenanbieter die Anforderung für die Anzahl N von Ressourcen auch empfangen. Der Cloudressourcenanbieter kann auch Anforderungen von anderen Quellen empfangen. Bei einer Operation730 kann der Cloud-Anbieter eine Verteilung einer Anzahl M von Computerressourcen zum globalen BG und eine Identifizierung der M Computerressourcen senden, und bei einer Operation735 kann der globale BG diese Information empfangen. Bei einer Ausführungsform kann M gleich oder kleiner als N sein. Anders ausgedrückt kann der globale BG alle angeforderten Computerressourcen empfangen oder er kann weniger Computerressourcen als angefordert empfangen. - Bei einer Operation
740 kann der globale BG die M Computerressourcen oder wenigstens einen Teilbereich davon unter Verwendung von Fair-Distribution-Algorithmen, wie beispielsweise einem Max-Min-Fairness-Algorithmus, den verschiedenen lokalen BGs zuteilen. Der globale BG kann die zulässige Anzahl von Computerressourcen für jeden lokalen BG einstellen. Bei einer Ausführungsform kann der globale BG eine abgestufte hierarchische Klassifizierung für zur Zuteilung verwenden. Zum Beispiel kann eine oberste Stufe bzw. Ebene der Diensttyp sein, wobei der globale BG die M Computerressourcen basierend auf Diensttypen verteilen kann. Einige Dienste können gegenüber anderen Diensten priorisiert sein. Unter der Dienstebene kann die nächste Ebene eine Quelle sein. Hier können die zugeteilten Computerressourcen unter jedem Diensttyp dann basierend auf den Quellen der Abfrageanforderungen verteilt werden. Unter der Quellebene kann die nächste Stufe bzw. Ebene GSes sein. Das bedeutet, dass die zugeteilten Ressourcen unter jedem Quellentyp dann basierend auf den GSes verteilt werden, die die Anforderungen vorlegen. - Bei einer Ausführungsform kann die Quellenklassifizierung zum Implementieren einer Beschränkung und Drosselung verwendet werden, wenn es nötig ist, basierend auf eingestellten Quoten oder Obergrenzen für Quellen. Zum Beispiel kann eine Quelle eine Quote oder Obergrenze diesbezüglich einstellen, wie viele Ressourcen sie für eine Zeitperiode, zum Beispiel einen Monat, verwenden kann. Daher kann der globale BG die einer Quelle zugeteilten Computerressourcen basierend auf der Quote für diese Quelle beschränken oder drosseln.
- Bei einer Operation
745 kann der globale BG seine Zuteilungsentscheidung zu den lokalen BGs kommunizieren. Der globale BG kann seine jeweils zulässige Anzahl von Computerressourcen zu jedem lokalen BG kommunizieren. Bei einer Ausführungsform kann der globale BG die Zuteilung von M Computerressourcen kommunizieren. Bei einer Operation750 kann der lokale BG eine Benachrichtigung über seine Zuteilung empfangen, z.B. seine zulässige Anzahl von Computerressourcen. - Der globale BG kann auch eine Liste der M Computerressourcen oder wenigstens eines Teilbereichs davon unterhalten, die den lokalen BGs zuzuteilen sind, wie zum Beispiel als eine persistente Liste. Bei einer Ausführungsform kann der globale BG die Computerressourcen den lokalen BGs basierend auf der zulässigen Anzahl von Computerressourcen von jedem lokalen BG zuordnen. Zum Beispiel kann der globale BG Identifikationsinformation der zugeordneten Computerressourcen zu jedem der lokalen BGs kommunizieren. Bei einer anderen Ausführungsform kann der globale BG die Liste der M Computerressourcen unterhalten und kann zulassen, dass jeder lokale BG Computerressourcen bis seiner zulässigen Anzahl von Computerressourcen in Anspruch nimmt. Der globale BG kann eine Liste der Computerressourcen unterhalten, die jedem der lokalen BGs zugeordnet sind. Bei einer Ausführungsform können die Liste der Computerressourcen und ihre Zuordnungen in der Metadaten-DB gehalten werden. Zum Beispiel kann die Liste in der Metadaten-DB durch den globalen BG gehalten werden, und verschiedene Identifizierer können verwendet werden, um zu identifizieren, ob eine Computerressource zugeordnet oder frei ist, und, wenn sie zugeordnet ist, zu welchem lokalen BG (oder Vordergrund-GS) sie zugeordnet ist. Wie es nachstehend in weiterem Detail erklärt ist, kann jeder lokale BG in der Lage sein, Computerressourcen freizugeben, und kann Benachrichtigungen über diese Freigabe kommunizieren, um die Liste upzudaten.
-
8A-8B zeigen ein Ablaufdiagramm eines Verfahrens800 zur dynamischen Zuteilung von Computerressourcen durch lokale und globale BGs gemäß einigen beispielhaften Ausführungsformen. Wie es gezeigt ist, können Teilbereiche des Verfahrens800 durch QCs (z.B. den QC512.1 ), einen lokalen BG (z.B. den lokalen BG514 ), einen globalen BG (z.B. den globalen BG550 ) ausgeführt werden. Wie es hierin diskutiert ist, kann auch eine Kommunikation zwischen den lokalen BGs und den globalen BGs wenigstens teilweise über eine Metadaten-DB durchgeführt werden. Der Klarheit und Kürze halber ist die Metadaten-DB in8A-8B nicht gezeigt, aber es sollte verstanden werden, dass Kommunikationen zwischen dem lokalen BG und dem globalen BG ganz oder teilweise über eine Metadaten-DB durchgeführt werden kann. - Bei einer Operation
802 kann der lokale BG in Reaktion auf ein Empfangen seiner zulässigen Anzahl von Computerressourcen vom globalen BG (z.B. Operation750 ) seinen QCs Computerressourcen zuordnen. Diese Zuordnung kann mit Fair-Distribution-Algorithmen, wie beispielsweise einem Max-Min-Fairness-Algorithmus, implementiert werden. Bei einer Ausführungsform kann der lokale BG die Quelle der Abfrageanforderungen bei seinem Durchführen einer Zuweisungsentscheidung berücksichtigen. Zum Beispiel kann der lokale BG die Computerressourcen jeder Quelle basierend auf der aktuell zulässigen Anzahl von Ressourcen und der Anforderungsbestellung zuordnen. - Bei einer Operation
804 kann der lokale BG die Computerressourcenzuordnungen zu den QCs kommunizieren. Die Zuordnung kann Identifikationsinformation für die Computerressourcen enthalten. Bei einer Operation806 kann der QC seine Zuordnung von Computerressourcen vom lokalen BG empfangen. Bei einer Operation808 kann sich der QC mit seinen zugeordneten Computerressourcen koordinieren, um jeweilige Abfrageergebnisse auszuführen. Der QC kann zum Planen von Jobs direkt mit seinen zugeordneten Computerressourcen kommunizieren. Der QC kann zum Beispiel Dateien oder Batches bzw. Stapel von Dateien zur Computerressource verteilen, um sie zu verarbeiten. Der QC kann die Leistungsfähigkeit seiner zugeordneten Computerressourcen nachverfolgen. - Bei einer Operation
810 kann der lokale BG Bedingungen bei den QCs überwachen und kann die Computerressourcen den QCs neu zuordnen, wie es nötig ist. Zum Beispiel können die QCs abgefragt werden, um Information zum lokalen BG zu senden. Bei einer Operation812 kann der lokale BG in Reaktion auf ein Überwachen der Leistungsfähigkeit durch die QCs in der Zeit zwischen einem abgefragt werden durch den globalen BG die Computerressourcen seinen verschiedenen QCs dynamisch neu zuordnen. Diese neue Zuordnung kann zum Beispiel durch den lokalen BG periodisch, sagen wir alle 10 oder 30 Sekunden (im Vergleich mit alle zwei Minuten durch den globalen BG) durchgeführt werden. Daher kann der lokale BG im Vergleich mit dem globalen BG Computerressourcen schneller und flexibler zuordnen und neu zuordnen, wodurch die Nutzung der zugeordneten Computerressourcen optimiert wird. Darüber hinaus kann deshalb, weil der lokale BG seine Liste von zugeteilten Computerressourcen und ihre Zuordnungen zum QC im lokalen Speicher speichern kann (im Vergleich mit einer persistenten Liste in einer Metadaten-DB, z.B.), die Geschwindigkeit eines Änderns von Zuordnungen zu QCs erhöht werden. Der lokale BG und die QCs können die Operationen804-812 bis zu der Zeit wiederholen, zu welcher der nächste aktuelle lokale Bedarf beim lokalen BG erzeugt wird. - Wie es oben diskutiert ist, können die lokalen BGs periodisch (z.B. alle zwei Minuten) bezüglich ihres aktuellen Bedarfs an Computerressourcen abgefragt werden. Bei einer Operation
814 kann der lokale BG, basierend auf den überwachten Bedingungen der QCs (z.B. Operationen610-615 ,810 ), seinen aktuellen lokalen Bedarf an Computerressourcen für den Vordergrunddienst berechnen (z.B. Operation620 ). Bei einer Operation816 kann der lokale BG seinen aktuellen lokalen Bedarf zum globalen BG kommunizieren, der bei einer Operation818 die aktuellen lokalen Bedürfnisse von den lokalen BGs empfangen kann. Bei einer Operation820 kann der globale BG mit dem Cloudressourcenanbieter interagieren und die aktuelle Zuteilung (z.B. aktuell zulässige Anzahl von Computerressourcen für jeden lokalen BG) erzeugen, wie es oben unter Bezugnahme auf7 diskutiert ist, wie z.B. das Verfahren700 oder Teilbereiche davon ausführen. - Bei einer Operation
822 kann der globale BG seine aktuelle (überarbeitete) Zuteilungsentscheidung zu den lokalen BGs kommunizieren. Zum Beispiel kann der globale BG zu jedem lokalen BG seine jeweilige zulässige Anzahl von Computerressourcen kommunizieren. Bei einer Operation824 kann der lokale BG eine Benachrichtigung über seine Zuteilung, z.B. seine zulässige Anzahl von Computerressourcen, empfangen. Der lokale BG kann seine gespeicherte Information in Bezug auf eine aktuelle zulässige Anzahl von Computerressourcen entsprechend synchronisieren. Wenn die aktuelle zulässige Anzahl von Ressourcen erhöht worden ist, kann der lokale BG zusätzliche Computerressourcen aus der Liste beanspruchen, die durch den globalen BG unterhalten ist, und diese zusätzlichen Computerressourcen verwenden, um seine Jobs weiter zu planen. Bei einer Operation826 kann der lokale BG seinem QC Computerressourcen zuordnen bzw. zuweisen (oder frühere Zuordnungen modifizieren). - Als nächstes soll ein Beispiel betrachtet werden, bei welchem die zulässige Anzahl von Computerressourcen für den lokalen BG reduziert worden ist. Zum Beispiel waren dem lokalen BG zuvor zehn Computerressourcen zugeordnet, aber ihm wurden nun durch den globalen BG acht Computerressourcen zugeordnet - eine Reduzierung um zwei. Bei diesem Beispiel muss der lokale BG zwei Computerressourcen zu dem globalen BG freigeben. Bei einer Operation
828 kann der lokale BG Anweisungen zum QC übertragen, um eine oder mehrere Computerressourcen freizugeben, und der QC kann die Anweisungen bei einer Operation830 empfangen. Bei einer Operation832 kann der QC bestimmen, welche Computerressource(n) freigegeben werden soll(en). Der QC kann zulassen, dass die ausgewählte(n) Computerressource(n) ihre aktuelle(n) Operation(en) beendet (beenden), zum Beispiel an einer Datei oder an einem Stapel von Dateien arbeitet (arbeiten), und kann aufhören, irgendwelche weiteren Dateien zu der (den) ausgewählten Computerressource(n) zu verteilen, wodurch seine Verwendung der ausgewählten Computerressource(n) abgeschlossen wird. Bei Operationen834 kann der QC den lokalen BG darüber benachrichtigen, welche ausgewählte(n) Computerressource(n) (z.B. Identifikationsinformation von freigegebener (freigegebenen) Computerressource(n)) er nicht mehr verwendet, und der lokale BG kann diese Benachrichtigung bei einer Operation836 empfangen und kann diese Information bei einer Operation838 zum globalen BG weitergeben. - Als nächstes kann bei einer Operation
840 der globale BG in Reaktion auf die Benachrichtigung über eine (oder mehrere) freigegebene Ressource(n) seine aktuelle Zuteilung (z.B. Operation818 ) weiter implementieren. Wenn zum Beispiel die freigegebene(n) Computerressource(n) anderen lokalen BGs zuzuteilen sind, kann der globale BG eine Benachrichtigung über diese Zuteilung zu diesen anderen lokalen BGs kommunizieren, wie es hierin diskutiert ist. Wenn die freigegebenen Computerressourcen zum Cloudressourcenanbieter zurück freigegeben werden sollen, kann der globale BG eine Benachrichtigung über diese Freigabe zum Cloudressourcenanbieter kommunizieren. Die Liste der Computerressourcenzuordnungen kann entsprechend überarbeitet werden. - Darüber hinaus kann das Netzwerksystem für eine Zuteilungssteuerung Wiederherstellungsprozeduren in dem Fall implementieren, dass eine oder mehrere Komponenten einen Fehler erfährt. Wie es hierin diskutiert ist, kann das Netzwerksystem für die Zuteilungssteuerung wenigstens drei primäre Komponenten enthalten: 1) die QCs, 2) die lokalen BGs (oder Vordergrund-GSes) und 3) den globalen BG. Wenn ein QC einen Fehler erfährt, kann der lokale BG den Fehler erkennen und die Abfragepläne entsprechend modifizieren. Dies kann ein neues Zuordnen von Abfragen und Computerressourcen enthalten. Wenn ein lokaler BG (oder ein Vordergrund-GS) einen Fehler erfährt, kann der globale BG Information dieses lokalen BG löschen bzw. beseitigen bzw. reinigen, bis der lokale BG wiederhergestellt ist. Und wenn der globale BG einen Fehler erfährt, kann der Status der Zuteilungen (z.B. aktueller Bedarf pro lokalem BG, aktuelle zulässige Anzahl pro lokalem BG) aus früheren Dialogen oder Kommunikationen wiederhergestellt werden, bis sich der globale BG erholt.
-
9 zeigt eine schematische Darstellung einer Maschine900 in der Form eines Computersystems, innerhalb von welchem eine Gruppe von Anweisungen ausgeführt werden kann, zum Veranlassen, dass die Maschine900 irgendeine oder mehrere der hierin diskutieren Methoden durchführt, gemäß einer beispielhaften Ausführungsform. Spezifisch zeigt9 eine schematische Darstellung der Maschine900 in der beispielhaften Form eines Computersystems, innerhalb von welchem Anweisungen916 (z.B. Software, ein Programm, eine Anwendung, ein Applet, eine App oder ein anderer ausführbarer Code) zum Veranlassen, dass die Maschine900 irgendeine oder mehrere der hierin diskutierten Methoden durchführt, ausgeführt werden können. Die Anweisungen916 können zum Beispiel veranlassen, dass die Maschine900 irgendeine oder mehrere Operationen von irgendeinem oder mehreren der Verfahren600 ,700 und800 ausführt. Als ein weiteres Beispiel können die Anweisungen916 veranlassen, dass die Maschine900 Teilbereiche der Datenflüsse implementiert, die in irgendeiner oder mehreren der1-8 dargestellt sind. Auf diese Weise transformieren die Anweisungen916 eine allgemeine, nicht programmierte Maschine in eine bestimmte Maschine900 (z.B. die entfernte Computervorrichtung106 , das Zugriffsmanagementsystem110 , den Computer-Servicemanager112 , die Ausführungsplattform114 , das Zugriffsmanagementsystem118 , den Web-Proxy120 , die entfernte Computervorrichtung106 ), die speziell konfiguriert ist, um irgendeine der beschriebenen und dargestellten Funktionen auf die hierin beschriebenen Weise auszuführen. - Bei alternativen Ausführungsformen arbeitet die Maschine
900 als alleinstehende Vorrichtung oder sie kann mit anderen Maschinen gekoppelt (z.B. vernetzt) sein. Bei einer vernetzten Verwendung kann die Maschine900 in der Funktion einer Server-Maschine oder einer Client-Maschine in einer Server-Client-Netzwerkumgebung oder als Peer-Maschine in einer Peer-zu-Peer-(oder verteilten)Netzwerkumgebung arbeiten. Die Maschine900 kann, ist aber nicht beschränkt darauf, einen Servercomputer, einen Client-Computer, einen Personalcomputer PC, einen Tablet-Computer, einen Laptop-Computer, ein Netbook, ein Smartphone, ein mobiles Gerät, einen Netzwerkrouter, einen Netzwerkschalter, eine Netzwerkbrücke oder irgendeiner Maschine, die die Anweisungen916 sequentiell oder auf andere Weise ausführen kann, die von der Maschine900 vorzunehmende Aktionen spezifizieren. Weiterhin soll, während nur eine einzige Maschine900 dargestellt ist, der Ausdruck „Maschine“ auch derart genommen werden, dass er eine Sammlung von Maschinen900 enthält, die einzeln oder gemeinsam die Anweisungen916 ausführen, um irgendeine oder mehrere der hierin diskutierten Methoden durchzuführen. - Die Maschine
900 enthält Prozessoren910 , einen Speicher930 und Eingabe-/Ausgabe-(I/O-)Komponenten950 , die konfiguriert sind, um miteinander zu kommunizieren, wie beispielsweise über einen Bus902 . Bei einer beispielhaften Ausführungsform sind können die Prozessoren910 (z.B. eine zentrale Verarbeitungseinheit (CPU), ein Prozessor mit reduziertem Befehlssatz (RISC), ein Prozessor mit komplexem Befehlssatz (CISC), eine Grafikverarbeitungseinheit (GPU), ein digitaler Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), eine integrierte Funkfrequenz-Schaltung (RFIC), ein anderer Prozessor oder irgendeine geeignete Kombination davon) zum Beispiel einen Prozessor912 und einen Prozessor914 umfassen, der die Anweisungen916 ausführen können. Es ist beabsichtigt, dass der Ausdruck „Prozessor“ Mehrkernprozessoren910 enthält, die zwei oder mehr unabhängige Prozessoren (auf die manchmal auch als „Kerne“ Bezug genommen wird) umfassen können, die Anweisungen916 gleichzeitig ausführen können. Obwohl9 mehrere Prozessoren910 zeigt, kann die Maschine900 einen einzelnen Prozessor mit einem einzigen Kern, einen einzelnen Prozessor mit mehreren Kernen (z.B. einen Mehrkernprozessor), mehrere Prozessoren mit einem einzigen Kern, mehrere Prozessoren mit mehreren Kernen oder eine beliebige Kombination davon enthalten. - Der Speicher
930 kann einen Hauptspeicher932 , einen statischen Speicher934 und eine Speichereinheit936 enthalten, die alle für die Prozessoren910 zugreifbar bzw. zugänglich sind, wie beispielsweise über den Bus902 . Der Hauptspeicher932 , der statische Speicher934 und die Speichereinheit936 speichern die Anweisungen916 , die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpern. Die Anweisungen916 können sich während ihrer Ausführung durch die Maschine900 auch ganz oder teilweise innerhalb des Hauptspeichers932 , innerhalb des statischen Speichers934 , innerhalb der Speichereinheit936 , innerhalb von wenigstens einem der Prozessoren910 (z.B. innerhalb des Cachespeichers des Prozessors) oder irgendeiner geeigneten Kombination davon befinden. - Die I/O-Komponenten
950 enthalten Komponenten, um eine Eingabe zu empfangen, eine Ausgabe zur Verfügung zu stellen, eine Ausgabe zu erzeugen, Information zu übertragen, Information auszutauschen, Messungen zu erfassen, und so weiter. Die spezifischen I/O-Komponenten950 , die in einer bestimmten Maschine900 enthalten sind, werden vom Typ einer Maschine abhängen. Zum Beispiel werden portierbare bzw. tragbare Maschinen, wie beispielsweise Mobiltelefone, wahrscheinlich eine Berührungseingabevorrichtung oder andere solche Eingabemechanismen enthalten, während eine monitorlose Servermaschine wahrscheinlich keine solche Berührungseingabevorrichtung enthalten wird. Es wird eingesehen werden, dass die I/O-Komponenten950 viele andere Komponenten enthalten können, die nicht in9 gezeigt sind. Die I/O-Komponenten950 sind lediglich zum Vereinfachen der folgenden Diskussion nach Funktionalität gruppiert und die Gruppierung ist in keiner Weise beschränkend. Bei verschiedenen beispielhaften Ausführungsformen können die I/O-Komponenten950 Ausgabekomponenten952 und Eingabekomponenten954 enthalten. Die Ausgabekomponenten952 können visuelle Komponenten (z.B. eine Anzeige wie einen Plasmabildschirm (PDP), eine Leuchtdioden-(LED-)Anzeige, eine Flüssigkristallanzeige (LCD), einen Projektor oder eine Kathodenstrahlröhre (CRT)), akustische Komponenten (z.B. Lautsprecher), andere Signalgeneratoren und so weiter enthalten. Die Eingabekomponenten954 können alphanumerische Eingabekomponenten (z.B. eine Tastatur, einen Berührungsbildschirm, der konfiguriert ist, um eine alphanumerische Eingabe zu empfangen, eine fotooptische Tastatur oder andere alphanumerische Eingabekomponenten), punktbasierte Eingabekomponenten (z.B. eine Maus, eine Rollkugel, ein Joystick, ein Bewegungssensor oder ein anderes Zeigeinstrument), taktile Eingabekomponenten (z.B. eine physikalische Taste, einen Berührungsbildschirm, der eine Stelle und eine Kraft von Berührungen oder Berührungsgesten zur Verfügung stellt, oder andere taktile Eingabekomponenten), Audio-Eingabekomponenten (z.B. ein Mikrofon) und ähnliches enthalten. - Kommunikation kann unter Verwendung einer weiten Vielzahl von Technologien implementiert werden. Die I/O-Komponenten
950 können Kommunikationskomponenten964 enthalten, die betreibbar sind, um die Maschine900 mit einem Netzwerk980 oder Vorrichtungen bzw. Geräten970 über eine Kopplung982 bzw. eine Kopplung972 zu koppeln. Zum Beispiel können die Kommunikationskomponenten964 eine Netzwerkschnittstellenkomponente oder eine andere geeignete Vorrichtung enthalten, um eine Schnittstelle mit dem Netzwerk980 zu bilden. Bei weiteren Beispielen können die Kommunikationskomponenten964 kabelgebundene bzw. verdrahtete Kommunikationskomponenten, drahtlose Kommunikationskomponenten, zellulare Kommunikationskomponenten und andere Kommunikationskomponenten enthalten, um Kommunikation über andere Modalitäten zur Verfügung zu stellen. Die Vorrichtungen bzw. Geräte970 können eine andere Maschine oder irgendeine einer Vielzahl von peripheren Vorrichtungen bzw. Peripheriegeräten (z.B. ein Peripheriegerät, das über einen universellen seriellen Bus (USB) gekoppelt ist) sein. Zum Beispiel kann, wie es oben angemerkt ist, die Maschine900 irgendetwas von der entfernten Computervorrichtung106 , dem Zugriffsmanagementsystem110 , dem Computer-Servicemanager112 , der Ausführungsplattform114 , dem Zugriffsmanagementsystem118 , dem Web-Proxy120 und den Vorrichtungen bzw. Geräten970 entsprechen. - Die verschiedenen Speicher (z.B.
930 ,932 ,934 und/oder Speicher des (der) Prozessors (Prozessoren)910 und/oder der Speichereinheit936 ) können einen oder mehrere Sätze von Anweisungen916 und Datenstrukturen (z.B. Software) speichern, die irgendeine oder mehrere der hierin beschriebenen Methoden oder Funktionen verkörpert oder durch diese genutzt werden. Diese Anweisungen916 veranlassen dann, wenn sie von dem (den) Prozessor(en)910 ausgeführt werden, verschiedene Operationen, um die offenbarten Ausführungsformen zu implementieren. - Wie sie hierin verwendet sind, bedeuten die Ausdrücke „Maschinenspeichermedium“, „Vorrichtungsspeichermedium“ und „Computerspeichermedium“ dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke beziehen sich auf eine einzelne oder mehrere Speichervorrichtungen und/oder Medien (z.B. eine zentrale oder verteilte Datenbank und/oder assoziierte Caches und Server), die ausführbare Anweisungen und/oder Daten speichern. Die Ausdrücke sollen demgemäß genommen werden, um Festkörperspeicher und optische und magnetische Medien, einschließlich eines Speichers intern oder extern von Prozessoren, zu enthalten, aber nicht um darauf beschränkt zu sein. Spezifische Beispiele für Maschinenspeichermedien, Computerspeichermedien und/oder Vorrichtungsspeichermedien enthalten einen nichtflüchtigen Speicher, einschließlich, anhand eines Beispiels, Halbleiterspeichervorrichtungen, wie z.B. eines löschbaren programmierbaren Nurlesespeichers (EPROM), elektrisch löschbaren programmierbaren Nurlesespeichers (EEPROM), von feldprogrammierbaren Gate-Arrays (FPGAs) und Flashspeichervorrichtungen; Magnetplatten wie beispielsweise interne Festplatten und entfernbare Scheiben bzw. Wechseldatenträger; magneto-optische Scheiben; und CD-ROM- und DVD-ROM-Scheiben. Die Ausdrücke „Maschinenspeichermedien“, „Computerspeichermedien“ und „Vorrichtungsspeichermedien“ schließen spezifisch Trägerwellen, modulierte Datensignale und andere solche Medien aus, von welchen wenigstens einige unter dem nachstehend diskutierten Ausdruck „Signalmedium“ abgedeckt sind.
- Bei verschiedenen beispielhaften Ausführungsformen können ein oder mehrere Teilbereiche des Netzwerks
980 ein Ad-hoc-Netzwerk, ein Intranet, ein Extranet, ein virtuelles privates Netzwerk (VPN), ein lokales Netz (LAN), ein drahtloses LAN (WLAN), ein Weitverkehrsnetz (WAN), ein drahtloses WAN (WWAN), ein Stadtgebietsnetz (MAN), das Internet, ein Teilbereich des Internets, ein Teilbereich des öffentlichen geschalteten Telefonnetzes (PSTN), ein altes analoges Telefondienst-(POTS-)Netz, ein zellulares Telefonnetz, ein drahtloses Netz, ein Wi-Fi®-Netz, ein anderer Typ von Netzwerk oder eine Kombination von zwei oder mehreren solchen Netzwerken sein. Zum Beispiel kann das Netzwerk980 oder ein Teilbereich des Netzwerks980 ein drahtloses oder zellulares Netzwerk enthalten und die Kopplung982 kann eine Verbindung mit einem Codemultiplexverfahren (CDMA), eine Verbindung mit globalem System für mobile Kommunikationen (GSM) oder andere Typen einer zellularen oder drahtlosen Kopplung sein. Bei diesem Beispiel kann die Kopplung982 irgendeinen einer Vielfalt von Typen einer Datenübertragungstechnologie implementieren, wie beispielsweise eine Einzelträgerfunk-Übertragungstechnologie (1xRTT), eine Technologie mit optimierten Entwicklungsdaten (EVDO (Evolution Data Optimized)), eine Technologie eines allgemeinen Paketfunkdienstes (GPRS (General Packet Radio Service)), eine Technologie mit erhöhten Datenraten für GSM-Entwicklung (EDGE (Enhanced Data Rates for GSM Evolution)), Partnerschaftsprojekt der dritten Generation (3GPP) einschließlich 3G, drahtlose Netzwerke der vierten Generation (4G), universelle mobile Telekommunikationssysteme (UMTS), Hochgeschwindigkeits-Paketzugang (HSPA), weltweite Interoperabilität für Mikrowellenzugang (WiMAX), Langzeitentwicklungs-(LTE-)Standard, andere, die durch verschiedene Standardeinstellungsorganisationen definiert sind, andere Weitbereichs- bzw. Langstreckenprotokolle oder andere Datenübertragungstechnologie. - Die Anweisungen
916 können über das Netzwerk980 unter Verwendung eines Übertragungsmedium über eine Netzwerkschnittstellenvorrichtung (z.B. eine in den Kommunikationskomponenten964 enthaltene Netzwerkschnittstellenkomponente) übertragen bzw. gesendet oder empfangen werden und unter Nutzung von irgendeinem einer Anzahl von wohlbekannten Übertragungsprotokollen (z.B. Hypertext-Übertragungsprotokoll (HTTP)). Gleichermaßen können die Anweisungen916 unter Verwendung eines Übertragungsmediums über die Kopplung972 (z.B. Peer-zu-Peer-Kopplung) mit den Vorrichtung bzw. Geräten970 übertragen bzw. gesendet oder empfangen werden. Die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ sollen genommen werden, um irgendein immaterielles Medium zu enthalten, das die Anweisungen916 zur Ausführung durch die Maschine900 speichern, codieren oder tragen kann, und um digitale oder analoge Kommunikationssignale oder andere immaterielle Medien zu enthalten, um eine Kommunikation von solcher Software zu erleichtern bzw. zu ermöglichen. Somit sollen die Ausdrücke „Übertragungsmedium“ und „Signalmedium“ genommen werden, um irgendeine Form eines modulierten Datensignals, einer Trägerwelle und so weiter zu enthalten. Der Ausdruck „moduliertes Datensignal“ bedeutet ein Signal, das eine oder mehrere seiner Charakteristiken auf solche Weise eingestellt oder verändert hat, um Information im Signal zu codieren. - Die Ausdrücke „maschinenlesbares Medium“, „computerlesbares Medium“ und „vorrichtungslesbares Medium“ bedeuten dasselbe und können in dieser Offenbarung austauschbar verwendet sein. Die Ausdrücke sind definiert, um sowohl Maschinenspeichermedien als auch Übertragungsmedien zu enthalten. Somit enthalten die Ausdrücke sowohl Speichervorrichtungen/-medien als auch Trägerwellen/modulierte Datensignale.
- Die verschiedenen Operationen der hierin beschriebenen beispielhaften Verfahren können wenigstens teilweise durch einen oder mehrere Prozessoren durchgeführt werden, die temporär (z.B. durch Software) oder dauerhaft konfiguriert sind, um die relevanten Operationen durchzuführen. Gleichermaßen können die hierin beschriebenen Verfahren wenigstens teilweise prozessorimplementiert sein. Zum Beispiel können wenigstens einige Operationen der Verfahren
600 ,700 und800 durch einen oder mehrere Prozessoren durchgeführt werden. Die Leistungsfähigkeit von bestimmten der Operationen kann auf den einen oder die mehreren Prozessoren verteilt werden, die sich nicht nur innerhalb einer einzelnen Maschine befinden, sondern auch quer über eine Anzahl von Maschinen genutzt werden. Bei einigen beispielhaften Ausführungsformen kann der Prozessor oder können die Prozessoren an einer einzigen Stelle angeordnet sein (z.B. in einer häuslichen Umgebung, einer Büroumgebung oder einer Serverfarm), während die Prozessoren bei anderen Ausführungsformen quer über eine Anzahl von Stellen bzw. Standorten verteilt sein können. - Obwohl die Ausführungsformen der vorliegenden Offenbarung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen beschrieben worden sind, wird es offensichtlich werden, dass verschiedene Modifikationen und Änderungen an diesen Ausführungsformen vorgenommen werden können, ohne von dem breiteren Schutzumfang des erfinderischen Gegenstands abzuweichen. Demgemäß sind die Spezifikation und die Zeichnungen eher in einem illustrativen als in einem beschränkenden Sinn anzusehen. Die beigefügten Zeichnungen, die einen Teil hiervon bilden, zeigen, zur Veranschaulichung und nicht zur Beschränkung, spezifische Ausführungsformen, bei welchen der Gegenstand ausgeführt werden kann. Die dargestellten Ausführungsformen sind in ausreichendem Detail beschrieben, um Fachleuten auf dem Gebiet zu ermöglichen, die hierin offenbarten Lehren auszuführen. Andere Ausführungsformen können verwendet und daraus abgeleitet werden, so dass strukturelle und logische Substitutionen und Änderungen vorgenommen werden können, ohne vom Schutzbereich dieser Offenbarung abzuweichen. Diese detaillierte Beschreibung ist daher nicht in einem beschränkenden Sinn zu nehmen, und der Schutzumfang von verschiedenen Ausführungsformen wird nur durch die beigefügten Ansprüche definiert, zusammen mit dem gesamten Bereich von Äquivalenten, auf welche solche Ansprüche eine Anspruchsberechtigung haben.
- Auf solche Ausführungsformen des erfinderischen Gegenstands kann hierin einzeln und/oder kollektiv lediglich der Annehmlichkeit halber und ohne die Absicht, den Schutzumfang dieser Anmeldung auf eine einzelne Erfindung oder ein erfinderisches Konzept gewollt zu beschränken, durch den Ausdruck „Erfindung“ Bezug genommen werden, wenn tatsächlich mehr als eine offenbart ist. Somit sollte, obwohl hierin spezifische Ausführungsformen dargestellt und beschrieben worden sind, eingesehen werden, dass irgendeine Anordnung, für die kalkuliert ist, dass sie den gleichen Zweck erreicht, für die gezeigten spezifischen Ausführungsformen substituiert werden kann. Diese Offenbarung soll irgendwelche und alle Anpassungen oder Variationen von verschiedenen Ausführungsformen abdecken. Kombinationen der obigen Ausführungsformen und andere Ausführungsformen, die hierin nicht spezifisch beschrieben sind, werden Fachleuten auf dem Gebiet beim Durchsehen bzw. Überprüfen der obigen Beschreibung offensichtlich werden.
- In diesem Dokument werden die Ausdrücke „ein“ oder „eine“ verwendet, wie es in Patentdokumenten üblich ist, um einen (eine) oder mehr als einen (eine) zu enthalten, unabhängig von irgendwelchen anderen Fällen oder Verwendungen von „wenigstens einer“ oder „einer oder mehrere“. In diesem Dokument wird der Ausdruck „oder“ verwendet, um sich auf ein nicht ausschließliches oder zu beziehen, so dass „A oder B“ „A, aber nicht B“, „B, aber nicht A“ und „A und B“ enthält, solange nichts anderes angegeben ist. In den beigefügten Ansprüchen werden die Ausdrücke „einschließlich“ und „in welchen“ als Äquivalente in einfachem Englisch der jeweiligen Ausdrücke „umfassend“ und „wobei“ verwendet. Ebenso sind in den folgenden Ansprüchen die Ausdrücke „enthaltend“ und „umfassend“ mit offenem Ende; das bedeutet, dass ein System, eine Vorrichtung, ein Artikel oder ein Verfahren, das, die oder der Elemente zusätzlich zu denjenigen enthält, die nach einem solchen Ausdruck in einem Anspruch aufgelistet sind, derart angesehen wird, dass es, sie oder er in den Schutzbereich dieses Anspruchs fällt.
- Die folgenden nummerierten Beispiele sind Ausführungsformen:
- Beispiel 1. Verfahren, das folgendes umfasst: Empfangen, durch einen oder mehrere Prozessoren eines lokalen Hintergrunddienstes, von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren; Updaten des aktuellen lokalen Bedarfs an Computerressourcen; Kommunizieren des upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst; Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; und Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit zugeordneten Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen.
- Beispiel 2. Verfahren des Beispiels 1, das weiterhin folgendes umfasst: Konsolidieren der Abfrageanforderungen pro Quelle, um einen Pro-Quelle-Bedarf zu erzeugen; und Kommunizieren des Pro-Quelle-Bedarfs zum globalen Hintergrunddienst.
- Beispiel 3. Verfahren von einem der Beispiele 1-2, das weiterhin folgendes umfasst: Überwachen von Bedingungen bei den Abfragekoordinatoren; und, basierend auf den überwachten Bedingungen, neues Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zu der Vielzahl von Abfragekoordinatoren.
- Beispiel 4. Verfahren von einem der Beispiele 1-3, das weiterhin folgendes umfasst: Empfang von upgedateter Information in Bezug auf Abfrageanforderungen von der Vielzahl von Abfragekoordinatoren; Updaten des aktuellen lokalen Bedarfs an Computerressourcen; Kommunizieren des upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst; Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; und Zuordnen der upgedateten aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren.
- Beispiel 5. Verfahren von einem der Beispiele 1-4, das weiterhin folgendes umfasst: in Reaktion darauf, dass die upgedatete aktuelle zulässige Anzahl von Computerressourcen weniger als die aktuelle zulässige Anzahl von Computerressourcen ist, Übertragen bzw. Senden einer Anweisung, eine zugeordnete Computerressource freizugeben, zu einem der Vielzahl von Abfragekoordinatoren; Empfangen einer Benachrichtigung von dem einen der Vielzahl von Abfragekoordinatoren einschließlich Identifikationsinformation über eine freigegebene Computerressource; und Kommunizieren der Identifikationsinformation über die freigegebene Computerressource zum globalen Hintergrunddienst.
- Beispiel 6. Verfahren von einem der Beispiele 1-5, wobei eine Computerressource einen Verarbeitungskern einer Maschine umfasst.
- Beispiel 7. Verfahren, das folgendes umfasst: Empfangen, durch einen oder mehrere Prozessoren eines globalen Hintergrunddienstes, eines aktuellen Bedarfs an Computerressourcen von einer Vielzahl von lokalen Hintergrunddiensten; Berechnung eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System, Anfordern eine Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontrolliert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; und Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten, basierend wenigstens teilweise auf einem fairen Vertei lungsalgorithm us.
- Beispiel 8. Verfahren des Beispiels 7, das weiterhin folgendes umfasst: periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; und, basierend auf den upgedateten aktuellen Bedürfnissen, Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten.
- Beispiel 9. Verfahren von einem der Beispiele 7-8, das weiterhin folgendes umfasst: Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; Empfangen einer Benachrichtigung vom ersten lokalen Hintergrunddienst bezüglich einer Freigabe von einer seiner zugeteilten Computerressourcen; und Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten.
- Beispiel 10. Verfahren von einem der Beispiele 7-9, wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten basiert.
- Beispiel 11. Verfahren von einem der Beispiele 7-10, wobei M kleiner als N ist.
- Beispiel 12. Verfahren von einem der Beispiele 7-11, wobei der Fair-Distribution-Algorithmus bzw. faire Verteilungsalgorithmus einen Max-Min-Fairness-Algorithmus enthält.
- Beispiel 13. Verfahren von einem der Beispiele 7-12, das weiterhin folgendes umfasst: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert.
- Beispiel 14. System, das folgendes umfasst: einen oder mehrere Prozessoren einer Maschine; und einen Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die irgendeines der beispielhaften Verfahren 1 bis 13 implementieren.
- Beispiel 15. Maschinenlesbare Speichervorrichtung, die Anweisungen verkörpert, die dann, wenn sie durch eine Maschine ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die irgendeines der beispielhaften Verfahren 1 bis 13 implementieren.
- Bei einem weiteren Beispiel der vorliegenden Offenlegung sind dynamische und faire Zuordnungstechniken zum Zuteilen von Ressource auf einer Bedarfsbasis zur Verfügung gestellt. Eine Zuordnungssteuerung kann in wenigstens zwei Komponenten getrennt sein: eine lokale Komponente und eine globale Komponente. Jede Komponente kann einen aktiven Dialog miteinander führen; der Dialog kann zwei Aspekte enthalten: 1) einen Bedarf an Computerressourcen, und 2) eine zulässige Gesamtanzahl von Computerressourcen. Die globale Komponente kann Ressourcen aus einem Ressourcenpool zu verschiedenen lokalen Komponenten zuteilen und die lokalen Komponenten können wiederum ihre zugeteilten Ressourcen zu lokalen konkurrierenden Anforderungen zuordnen. Die Zuteilung kann auch auf verschiedenen Ebenen gedrosselt oder begrenzt werden.
Claims (27)
- Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen: Empfangen, durch einen oder mehrere Prozessoren eines lokalen Hintergrunddienstes, von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren; basierend auf der Information in Bezug auf Abfrageanforderungen, Erzeugen eines aktuellen lokalen Bedarfs an Computerressourcen; Kommunizieren des aktuellen lokalen Bedarfs an Computerressourcen zu einem globalen Hintergrunddienst über ein Netzwerk; Empfangen einer aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit zugeordneten Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen; Kommunizieren eines upgedateten aktuellen lokalen Bedarfs zum globalen Hintergrunddienst; Empfangen einer upgedateten aktuellen zulässigen Anzahl von Computerressourcen vom globalen Hintergrunddienst; Zuordnen der upgedateten aktuellen zulässigen Anzahl von Computerressourcen zur Vielzahl von Abfragekoordinatoren; und in Reaktion auf die upgedatete aktuelle zulässige Anzahl von Computerressourcen, die kleiner als die aktuelle zulässige Anzahl von Computerressourcen ist, Übertragen bzw. Senden einer Anweisung, eine zugeordnete Computerressource freizugeben, zu einer der Vielzahl von Abfragekoordinatoren.
- Computerprogramm nach
Anspruch 1 , wobei die Operationen weiterhin folgenden umfassen: Konsolidieren der Abfrageanforderungen pro Quelle, um einen Pro-Quelle-Bedarf zu erzeugen; und Kommunizieren des Pro-Quelle-Bedarfs zum globalen Hintergrunddienst. - Computerprogramm nach
Anspruch 1 , wobei die Operationen weiterhin folgenden umfassen: Überwachen von Bedingungen bei den Abfragekoordinatoren; und basierend auf den überwachten Bedingungen, neues Zuordnen der aktuellen zulässigen Anzahl von Computerressourcen zu der Vielzahl der Abfragekoordinatoren. - Computerprogramm nach
Anspruch 1 , wobei die Operationen weiterhin folgenden umfassen: Empfangen von upgedateter Information in Bezug auf Abfrageanforderungen von der Vielzahl von Abfragekoordinatoren; und Updaten des aktuellen lokalen Bedarfs an Computerressourcen. - Computerprogramm nach
Anspruch 4 , wobei die Operationen weiterhin folgenden umfassen: Empfangen einer Benachrichtigung von dem einen der Vielzahl von Abfragekoordinatoren einschließlich Identifikationsinformation über eine freigegebenen Computerressource; und Kommunizieren der Identifikationsinformation über die freigegebene Computerressource zum globalen Hintergrunddienst. - Computerprogramm nach
Anspruch 1 , wobei eine Computerressource einen Verarbeitungskern einer Maschine umfasst. - Computerprogramm, das Anweisungen umfasst, die dann, wenn das Programm durch einen Computer ausgeführt wird, veranlassen, dass der Computer Operationen ausführt, die folgendes umfassen: Empfangen, durch einen oder mehrere Prozessoren eines globalen Hintergrunddienstes, von einem aktuellen Bedarf an Computerressourcen von einer Vielzahl von lokalen Hintergrunddiensten; Berechnen eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System Anfordern einer Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontroll iert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten basierend wenigstens teilweise auf einem Fair-Distribution-Algorithmus bzw. fairen Verteilungsalgorithmus; periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; basierend auf den upgedateten aktuellen Bedürfnissen, Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten; Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; und Empfangen einer Benachrichtigung vom ersten lokalen Hintergrunddienst in Bezug auf eine Freigabe von einer seiner zugeteilten Computerressourcen.
- Computerprogramm nach
Anspruch 7 , wobei die Operationen weiterhin folgendes umfassen: Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten. - Computerprogramm nach
Anspruch 7 , wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten basiert. - Computerprogramm nach
Anspruch 7 , wobei M kleiner als N ist. - Computerprogramm nach
Anspruch 7 , wobei der Fair-Distribution-Algorithmus einen Max-Min-Fairness-Algorithmus enthält. - Computerprogramm nach
Anspruch 7 , wobei die Operationen weiterhin folgendes umfassen: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert. - Maschinenspeichermedium, das Anweisungen verkörpert, die dann, wenn sie von einer Maschine ausgeführt werden, veranlassen, dass die Maschine Operationen durchführt, die folgendes umfassen: Empfangen, durch einen oder mehrere Prozessoren eines globalen Hintergrunddienstes, von einem aktuellen Bedarf an Computerressourcen von einer Vielzahl von lokalen Hintergrunddiensten; Berechnen eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System Anfordern einer Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontrolliert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten basierend wenigstens teilweise auf einem Fair-Distribution-Algorithmus bzw. fairen Verteilungsalgorithmus; periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; basierend auf den upgedateten aktuellen Bedürfnissen, Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten; Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; und Empfangen einer Benachrichtigung vom ersten lokalen Hintergrunddienst in Bezug auf eine Freigabe von einer seiner zugeteilten Computerressourcen.
- Maschinenspeichermedium nach
Anspruch 13 , das weiterhin folgendes umfasst: Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten. - Maschinenspeichermedium nach
Anspruch 13 , wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten basiert. - Maschinenspeichermedium nach
Anspruch 13 , wobei M kleiner als N ist. - Maschinenspeichermedium nach
Anspruch 13 , wobei der Fair-Distribution-Algorithmus einen Max-Min-Fairness-Algorithmus enthält. - Maschinenspeichermedium nach
Anspruch 13 , das weiterhin folgendes umfasst: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert. - System, das folgendes umfasst: eine Vielzahl von lokalen Hintergrunddiensten, die jeweils folgendes umfassen: einen oder mehrere Prozessoren einer ersten Maschine; und einen ersten Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die erste Maschine Operationen durchführt, die folgendes umfassen: Empfangen von Information in Bezug auf Abfrageanforderungen von einer Vielzahl von Abfragekoordinatoren; basierend auf der Information in Bezug auf Abfrageanforderungen Erzeugen eines aktuellen lokalen Bedarfs an Computerressourcen; und einen globalen Hintergrunddienst, der folgendes umfasst: einen oder mehrere Prozessoren einer zweiten Maschine; und einen zweiten Speicher, der Anweisungen speichert, die dann, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, veranlassen, dass die zweite Maschine Operationen durchführt, die folgendes umfassen: Empfangen des aktuellen Bedarfs an Computerressourcen von jedem der Vielzahl von lokalen Hintergrunddiensten; Berechnen eines aktuellen Bedarfs an Computerressourcen für ein System basierend auf den empfangenen aktuellen Bedürfnissen an Computerressourcen; basierend auf dem berechneten aktuellen Bedarf für das System, Anfordern einer Anzahl N von Computerressourcen von einem Cloud-Anbieter, wobei der Cloud-Anbieter einen Pool von Computerressourcen steuert bzw. kontrolliert; Empfangen einer Verteilung einer Anzahl M von Computerressourcen vom Cloud-Anbieter; und Zuteilen von wenigstens einem Teilbereich der Anzahl M von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten basierend wenigstens teilweise auf einem Fair-Distribution-Algorithmus; periodisch Empfangen von upgedateten aktuellen Bedürfnissen an Computerressourcen von der Vielzahl von lokalen Hintergrunddiensten; basierend auf den upgedateten aktuellen Bedürfnissen Modifizieren der Zuteilung von Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten; Reduzieren der Zuteilung von Computerressourcen von einem ersten der Vielzahl von lokalen Hintergrunddiensten; und Empfangen einer Benachrichtigung von dem ersten lokalen Hintergrunddienst in Bezug auf eine Freigabe von einer seiner zugeteilten Computerressourcen.
- System nach
Anspruch 19 , das weiterhin folgendes umfasst: eine Metadaten-Datenbank, wobei Kommunikationen zwischen der Vielzahl von lokalen Hintergrunddiensten und dem globalen Hintergrunddienst wenigstens teilweise über die Metadaten-Datenbank durchgeführt werden. - System nach
Anspruch 19 , wobei die Operationen von jedem der Vielzahl von lokalen Hintergrunddiensten weiterhin folgendes umfassen: Zuordnen seiner zugeteilten Computerressourcen zu der Vielzahl von Abfragekoordinatoren, so dass die Abfragekoordinatoren direkt mit ihren jeweiligen Computerressourcen kommunizieren, um die Abfrageanforderungen auszuführen. - System von System nach
Anspruch 21 , wobei die Operationen von jedem der Vielzahl von lokalen Hintergrunddiensten weiterhin folgendes umfassen: Überwachen von Bedingungen bei den Abfragekoordinatoren; und basierend auf den überwachten Bedingungen, neu Zuordnen der zugeteilten Computerressourcen zu der Vielzahl von Abfragekoordinatoren. - System vom System nach
Anspruch 19 , wobei eine Computerressource ein Verarbeitungskern einer Maschine ist. - System nach
Anspruch 19 , wobei die Operationen des globalen Hintergrunddienstes weiterhin folgendes umfassen: Zuteilen der freigegebenen Computerressource zu einem zweiten der Vielzahl von lokalen Hintergrunddiensten. - System nach
Anspruch 19 , wobei ein Berechnen des aktuellen Bedarfs an Computerressourcen für das System weiterhin auf historischen Daten beruht. - System nach
Anspruch 19 , wobei der Fair-Distribution-Algorithmus einen Max-Min-Fairness-Algorithmus enthält. - System nach
Anspruch 19 , wobei die Operationen des globalen Hintergrunddienstes weiterhin folgendes umfassen: Empfangen von pro-Quelle-Bedarf-Information von den lokalen Hintergrunddiensten, wobei ein Zuteilen der Computerressourcen zu der Vielzahl von lokalen Hintergrunddiensten weiterhin auf der pro-Quelle-Bedarf-Information basiert.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE202021102315.5U DE202021102315U1 (de) | 2021-04-29 | 2021-04-29 | Flexibles Computing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE202021102315.5U DE202021102315U1 (de) | 2021-04-29 | 2021-04-29 | Flexibles Computing |
Publications (1)
Publication Number | Publication Date |
---|---|
DE202021102315U1 true DE202021102315U1 (de) | 2021-08-20 |
Family
ID=77659431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE202021102315.5U Active DE202021102315U1 (de) | 2021-04-29 | 2021-04-29 | Flexibles Computing |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE202021102315U1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687373B2 (en) | 2020-05-14 | 2023-06-27 | Snowflake Inc. | Flexible computing |
-
2021
- 2021-04-29 DE DE202021102315.5U patent/DE202021102315U1/de active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687373B2 (en) | 2020-05-14 | 2023-06-27 | Snowflake Inc. | Flexible computing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102019133923B4 (de) | Anwendungsverwendung in einem behältermanagementsystem | |
DE60221019T2 (de) | Verwaltung von serverbetriebsmitteln für hostanwendungen | |
DE202020005700U1 (de) | Aufrufen externer Funktionen aus einem Datenlager | |
DE202015009861U1 (de) | Systeme zur Bereitstellung von Ressourcen | |
DE202020005734U1 (de) | Beschneiden von Indizes zur Verbesserung einer Verarbeitung von Datenbankabfragen | |
DE202020005693U1 (de) | Externe berechtigungsnachweisfreie Stufen für Datenbankintegrationen | |
DE202020005715U1 (de) | Dynamische Maskierung geteilter Datenobjekte | |
DE202021004036U1 (de) | Data Clean Room | |
DE202012013432U1 (de) | Speichern von Daten auf Speicherknoten | |
DE112011100094T5 (de) | Verfahren und System zum Abstrahieren eines auf nichtfunktionalen Anforderungen beruhenden Einsatzes von virtuellen Maschinen | |
US11513859B2 (en) | Flexible computing | |
DE112011103498T5 (de) | Verhaltensgestützte Client-Auswahl für unterschiedliche Behandlung | |
DE102013204186A1 (de) | Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite | |
DE112013004805T5 (de) | Unterstützen eines koordinierten Zugriffs auf einen gemeinsam genutzten Speicher eines Dateisystems unter Verwendung einer automatischen Ausrichtung eines Protokolls für einen parallelen Dateizugriff und einer Metadatenverwaltung | |
DE202020005703U1 (de) | Auf verteilten Metadaten basierendes Cluster-Computing | |
DE112021004290T5 (de) | Gemeinsames nutzen von zwischengespeicherten klassendaten in einer containerisierten umgebung | |
DE112021005586T5 (de) | Automatisches skalieren einer abfrage-steuerungsroutine für arbeitslasten im bereich big data auf unternehmensebene | |
DE202021004295U1 (de) | Gleichzeitige Transaktionsverarbeitung in einem Datenbanksystem | |
DE202021004340U1 (de) | Beschränkte Sichten zum Steuern des Zugriffs auf Informationen in einem Datenbanksystem | |
DE202021004328U1 (de) | Mit Daten-Cloud verbundene Anwendungen | |
DE202021102315U1 (de) | Flexibles Computing | |
DE112019005043T5 (de) | Streamzuweisung unter verwendung von stream-guthaben | |
DE202023103214U1 (de) | Web-Anwendung als Datenbankobjekt erster Klasse | |
DE202023103216U1 (de) | Datenplattform mit vereinheitlichten Privilegien | |
DE202023102700U1 (de) | Datenaufnahmereplizierung und Notfallwiederherstellung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R207 | Utility model specification | ||
R081 | Change of applicant/patentee |
Owner name: SNOWFLAKE INC., BOZEMAN, US Free format text: FORMER OWNER: SNOWFLAKE INC., SAN MATEO, CA, US |
|
R150 | Utility model maintained after payment of first maintenance fee after three years |