DE102021129637A1 - Verteiltes stream-computing mit mehreren umgebungen - Google Patents

Verteiltes stream-computing mit mehreren umgebungen Download PDF

Info

Publication number
DE102021129637A1
DE102021129637A1 DE102021129637.4A DE102021129637A DE102021129637A1 DE 102021129637 A1 DE102021129637 A1 DE 102021129637A1 DE 102021129637 A DE102021129637 A DE 102021129637A DE 102021129637 A1 DE102021129637 A1 DE 102021129637A1
Authority
DE
Germany
Prior art keywords
stream
processing
stream processing
instances
cloud
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102021129637.4A
Other languages
English (en)
Inventor
Henry Chiu
Bradley William Fawcett
Jingdong Sun
Jason A. Nikolai
Paul Gerver
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102021129637A1 publication Critical patent/DE102021129637A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Probability & Statistics with Applications (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Fuzzy Systems (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Computersoftware, die einen Stream-Processing-Verwaltungsknoten veranlasst, die folgenden Operationen durchzuführen: (i) Herstellen einer Datenübertragung zwischen dem Stream-Processing-Verwaltungsknoten und einer Mehrzahl von Stream-Processing-Instanzen, die in jeweiligen Datenverarbeitungsumgebungen in einem Datenverarbeitungssystem mit mehreren Umgebungen ausgeführt werden; (ii) Verteilen von einer oder mehreren Verarbeitungseinheiten eines Stream-Processing-Jobs an einen ersten Satz von Stream-Processing-Instanzen der Mehrzahl von Stream-Processing-Instanzen; (iii) Empfangen von der einen oder den mehreren Stream-Processing-Instanzen des ersten Satzes von Stream-Processing-Instanzen, von Verarbeitungsergebnissen, die zu der einen oder den mehreren Verarbeitungseinheiten des Stream-Processing-Jobs gehören; und (iv) Durchführen einer auf Machine Learning beruhenden Stream-Verwaltungsoperation, wobei das Durchführen zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruht.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft allgemein das Gebiet des Stream-Computing und insbesondere ein Verteilen von Stream-Computing-Jobs über mehrere Datenverarbeitungsumgebungen hinweg.
  • Stream-Computing (das auch als „Stream Processing“, „Streaming Processing“, „Streams Processing“ und dergleichen bezeichnet wird) ist eine bekannte Technik zur Durchführung von Abfragen an fortlaufenden Datenströmen, wie beispielsweise Daten von Sensoren, Kameras, Newsfeeds und dergleichen. In Stream-Processing-Jobs führen Operatoren Operationen an Datenströmen durch, wobei einzelne Dateneinheiten innerhalb von Datenströmen im Allgemeinen als „Tupel“ bezeichnet werden. Operatoren sind im Allgemeinen innerhalb von einzelnen Ausführungseinheiten enthalten, die zuweilen als „Verarbeitungseinheiten“ oder „Verarbeitungselemente“ bezeichnet werden.
  • Stream-Computing-Systeme können in einer einzelnen Datenverarbeitungsumgebung, wie beispielsweise einer einzelnen Cloud-Computing-Umgebung oder einem Rechenzentrum, und auch in verteilten Umgebungen ausgeführt werden, in denen einzelne Teile von Stream-Processing-Jobs, wie beispielsweise Verarbeitungselemente, über mehrere Datenverarbeitungsumgebungen, wie beispielsweise mehrere, von verschiedenen Cloudanbietern betriebene Cloud-Computing-Umgebungen, hinweg verteilt werden.
  • KURZDARSTELLUNG
  • Gemäß einem Aspekt der vorliegenden Erfindung gibt es ein Verfahren, ein Computerprogrammprodukt und/oder ein System, das die folgenden Operationen durchführt (nicht unbedingt in der folgenden Reihenfolge): (i) Herstellen, durch einen Stream-Processing-Verwaltungsknoten, einer Datenübertragung zwischen dem Stream-Processing-Verwaltungsknoten und einer Mehrzahl von Stream-Processing-Instanzen, die in jeweiligen Datenverarbeitungsumgebungen in einem Datenverarbeitungssystem mit mehreren Umgebungen ausgeführt werden; (ii) Verteilen, durch den Stream-Processing-Verwaltungsknoten, von einer oder mehreren Verarbeitungseinheiten eines Stream-Processing-Jobs an einen ersten Satz von Stream-Processing-Instanzen der Mehrzahl der Stream-Processing-Instanzen; (iii) Empfangen, durch den Stream-Processing-Verwaltungsknoten, von der einen oder den mehreren Stream-Processing-Instanzen des ersten Satzes von Stream-Processing-Instanzen von Verarbeitungsergebnissen, die zu der einen oder den mehreren Verarbeitungseinheiten des Stream-Processing-Jobs gehören; und (iv) Durchführen, durch den Stream-Processing-Verwaltungsknoten, einer auf maschinellem Lernen (Machine Learning) beruhenden Stream-Verwaltungsoperation, wobei das Durchführen zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruht.
  • Figurenliste
    • 1 stellt einen Cloud-Computing-Knoten dar, der in einer ersten Ausführungsform eines Systems gemäß der vorliegenden Erfindung verwendet wird;
    • 2 stellt eine Ausführungsform einer Cloud-Computing-Umgebung (die auch als das „System der ersten Ausführungsform“ bezeichnet wird) gemäß der vorliegenden Erfindung dar;
    • 3 stellt Abstraktionsmodellschichten dar, die in dem System der ersten Ausführungsform verwendet werden;
    • 4 ist ein Ablaufplan, der ein Verfahren einer ersten Ausführungsform zeigt, das zumindest teilweise durch das System der ersten Ausführungsform durchgeführt wird;
    • 5 ist ein Blockschaubild, das einen Teil von Maschinenlogik (zum Beispiel Software) des Systems der ersten Ausführungsform zeigt;
    • 6 ist ein Schaubild, das ein Beispiel eines herkömmlichen Stream-Computing-Systems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt; und
    • 7 ist ein Schaubild, das ein Beispiel einer Multi-Cloud-Stream-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Stream-Computing ist ein wachsendes Feld für die echtzeitnahe Datenanalyse. Viele vorhandene Stream-Computing-Services und -Produktangebote sind so konzipiert, dass sie in einer einzelnen Umgebung funktionieren, wie beispielsweise in einer bestimmten Cloud-Computing-Umgebung oder in einem bestimmten Rechenzentrum. Unternehmen oder andere Entitäten entscheiden sich aus einer Vielfalt an Gründen gegebenenfalls jedoch dafür, Arbeitslasten in Multi-Cloud-Umgebungen auszuführen. Ein Verteilen von Stream-Computing-Arbeitslasten über Umgebungen hinweg ermöglicht Unternehmen, Möglichkeiten von verschiedenen Anbietern zu nutzen, um Kosten und Performance zu optimieren, und erhöht auch die Zuverlässigkeit durch Redundanz. Des Weiteren trägt ein Verteilen von Stream-Computing-Arbeitslasten über Cloud-Rechenzentren in verschiedenen geografischen Regionen hinweg dazu bei, Anforderungen an die Datenhoheit zu erfüllen, und es verringert die Latenzzeit für Benutzer beim Zugriff auf Daten. Verschiedene Ausführungsformen der vorliegenden Erfindung stellen ein für den Einsatz über mehrere Cloudumgebungen hinweg konfiguriertes Stream-Computing-System bereit, das so modifiziert ist, dass es eine Problembestimmung für Stream-Computing-Arbeitslasten verwaltet, optimiert, verbessert und die Ausfallsicherheit für Stream-Computing-Arbeitslasten erhöht, wobei es verschiedene Techniken, darunter Machine Learning, verwendet.
  • Dieser Abschnitt ‚Ausführliche Beschreibung‘ ist in die folgenden Unterabschnitte gegliedert: (i) Die Hardware- und Software-Umgebung; (ii) Beispielhafte Ausführungsform; (iii) Weitere Anmerkungen und/oder Ausführungsformen; und (iv) Definitionen.
  • I. DIE HARDWARE- UND SOFTWARE-UMGEBUNG
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen Integrationsstufe technischer Details handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine greifbare Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übermittelte elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmwareanweisungen, zustandssetzende Daten, Konfigurationsdaten für eine integrierte Schaltung oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field-programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in den Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweist. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit als ein Schritt durchgeführt, gleichzeitig ausgeführt, im Wesentlichen gleichzeitig ausgeführt, in einer sich teilweise oder ganz zeitlich überlappenden Weise ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Es sei von vornherein klargestellt, dass das Umsetzen der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist, obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud-Computing umfasst. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jeder beliebigen weiteren Art von jetzt bekannter oder später erfundener Datenverarbeitungsumgebung umgesetzt werden.
  • Cloud-Computing ist ein Servicebereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerken, Netzwerkbandbreite, Servern, Verarbeitung, Hauptspeichern, Speichern, Anwendungen, virtuellen Maschinen und Services), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Service schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften umfassen, mindestens drei Dienstmodelle und mindestens vier Implementierungsmodelle.
  • Bei den Eigenschaften handelt es sich um die folgenden:
    • On-Demand Self-Service: Ein Cloud-Nutzer kann einseitig automatisch nach Bedarf für Datenverarbeitungsfunktionen wie Serverzeit und Netzwerkspeicher sorgen, ohne dass eine menschliche Interaktion mit dem Anbieter der Dienste erforderlich ist.
    • Broad Network Access: Es sind Funktionen über ein Netzwerk verfügbar, auf die durch Standardmechanismen zugegriffen wird, welche die Verwendung durch heterogene Thin- oder Thick-Client-Plattformen (z.B. Mobiltelefone, Laptops und PDAs) unterstützen.
    • Resource-Pooling: Die Datenverarbeitungsressourcen des Anbieters werden zusammengeschlossen, um mehreren Nutzern unter Verwendung eines Multi-Tenant-Modells zu dienen, wobei verschiedene physische und virtuelle Ressourcen dynamisch nach Bedarf zugewiesen und neu zugewiesen werden. Es gibt eine gefühlte Standortunabhängigkeit, da der Nutzer allgemein keine Kontrolle bzw. Kenntnis über den genauen Standort der bereitgestellten Ressourcen hat, aber in der Lage sein kann, einen Standort auf einer höheren Abstraktionsebene festzulegen (z.B. Land, Staat oder Rechenzentrum).
    • Rapid Elasticity: Funktionen können für eine schnelle horizontale Skalierung (scale out) schnell und elastisch bereitgestellt werden, in einigen Fällen auch automatisch, und für ein schnelles Scale-in schnell freigegeben werden. Für den Nutzer erscheinen die für das Bereitstellen verfügbaren Funktionen häufig unbegrenzt und sie können jederzeit in jeder beliebigen Menge gekauft werden.
    • Measured Service: Cloud-Systeme steuern und optimieren die Verwendung von Ressourcen automatisch, indem sie eine Messfunktion auf einer gewissen Abstraktionsebene nutzen, die für die Art von Dienst geeignet ist (z.B. Speicher, Verarbeitung, Bandbreite sowie aktive Benutzerkonten). Die Nutzung von Ressourcen kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
  • Bei den Dienstmodellen handelt es sich um die folgenden:
    • Software as a Service (SaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur laufenden Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. auf dem Web beruhende E-Mail) von verschiedenen Client-Einheiten her zugänglich. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter das Netzwerk, Server, Betriebssysteme, Speicher bzw. sogar einzelne Anwendungsfunktionen, mit der möglichen Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen.
    • Platform as a Service (PaaS): Die dem Nutzer bereitgestellte Funktion besteht darin, durch einen Nutzer erstellte bzw. erhaltene Anwendungen, die unter Verwendung von durch den Anbieter unterstützten Programmiersprachen und Tools erstellt wurden, in der Cloud-Infrastruktur einzusetzen. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme bzw. Speicher, hat aber die Kontrolle über die eingesetzten Anwendungen und möglicherweise über Konfigurationen des Application Hosting Environment.
    • Infrastructure as a Service (laaS): Die dem Nutzer bereitgestellte Funktion besteht darin, das Verarbeiten, Speicher, Netzwerke und andere grundlegende Datenverarbeitungsressourcen bereitzustellen, wobei der Nutzer in der Lage ist, beliebige Software einzusetzen und auszuführen, zu der Betriebssysteme und Anwendungen gehören können. Der Nutzer verwaltet bzw. steuert die zugrunde liegende Cloud-Infrastruktur nicht, hat aber die Kontrolle über Betriebssysteme, Speicher, eingesetzte Anwendungen und möglicherweise eine eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
  • Bei den Einsatzmodellen handelt es sich um die folgenden:
    • Private Cloud: Die Cloud-Infrastruktur wird einzig und allein für eine Organisation betrieben. Sie kann durch die Organisation oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
    • Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine spezielle Benutzergemeinschaft, die gemeinsame Angelegenheiten hat (z.B. Mission, Sicherheitsanforderungen, Richtlinien sowie Überlegungen bezüglich der Einhaltung von Vorschriften). Sie kann durch die Organisationen oder einen Dritten verwaltet werden und kann sich in den eigenen Räumen oder in fremden Räumen befinden.
    • Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und sie gehört einer Cloud-Dienste verkaufenden Organisation.
    • Hybrid Cloud: Die Cloud-Infrastruktur ist eine Zusammensetzung aus zwei oder mehreren Clouds (privat, Benutzergemeinschaft oder öffentlich), die zwar einzelne Einheiten bleiben, aber durch eine standardisierte oder proprietäre Technologie miteinander verbunden sind, die Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastenausgleich zwischen Clouds).
    • Eine Cloud-Computing-Umgebung ist dienstorientiert mit Fokus auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität. Im Herzen von Cloud-Computing liegt eine Infrastruktur, die ein Netzwerk aus zusammengeschalteten Knoten umfasst.
  • Unter Bezugnahme auf 1 ist eine schematische Darstellung eines Beispiels eines Cloud-Computing-Knotens gezeigt. Der Cloud-Computing-Knoten 10 stellt lediglich ein Beispiel eines geeigneten Cloud-Computing-Knotens dar und soll keine Einschränkung hinsichtlich des Nutzungsumfangs oder der Funktionalität von hierin beschriebenen Ausführungsformen der Erfindung bedeuten. Ungeachtet dessen kann der Cloud-Computing-Knoten 10 ausgeführt werden und/oder jedwede der vorstehend dargelegten Funktionalität durchführen.
  • Im Cloud-Computing-Knoten 10 gibt es ein Computersystem/einen Server 12, das bzw. der mit zahlreichen anderen Umgebungen oder Konfigurationen eines Universal- oder Spezial-Datenverarbeitungssystems betrieben werden kann. Zu Beispielen für hinlänglich bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die gegebenenfalls zur Verwendung mit dem Computersystem/Server 12 geeignet sind, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, tragbare oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten umfassen, und dergleichen.
  • Das Computersystem/der Server 12 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie zum Beispiel Programmmodulen, die durch ein Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter umfassen, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen ausführen. Das Computersystem/der Server 12 kann in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt werden, in denen Aufgaben durch ferne Verarbeitungseinheiten durchgeführt werden, die durch ein Übertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, zu denen auch Hauptspeichereinheiten gehören, befinden.
  • Wie in 1 gezeigt ist, ist das Computersystem/der Server 12 in dem Cloud-Computing-Knoten 10 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 12 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 16, ein Systemspeicher 28 und ein Bus 18 gehören, der verschiedene Systemkomponenten, darunter den Systemspeicher 28, mit dem Prozessor 16 verbindet.
  • Der Bus 18 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielfalt an Busarchitekturen verwendet. Beispielhaft, und nicht als Einschränkung, gehören zu solchen Architekturen der Bus „Industry Standard Architecture (ISA)“, der Bus „Micro Channel Architecture (MCA)“, der Bus „Enhanced ISA (EISA)“, der lokale Bus „Video Electronics Standards Association (VESA)“ und der Bus „Peripheral Component Interconnect (PCI)“.
  • Das Computersystem/der Server 12 umfasst üblicherweise eine Vielfalt an durch ein Computersystem lesbaren Datenträgern. Bei diesen Datenträgern kann es sich um jedwede verfügbaren Datenträger handeln, auf die von dem Computersystem/Server 12 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch austauschbare und nicht austauschbare Datenträger.
  • Zum Systemspeicher 28 können durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher, wie beispielsweise ein Direktzugriffsspeicher (RAM) 30 und/oder ein Cache 32, gehören. Das Computersystem/der Server 12 kann des Weiteren weitere auswechselbare/nicht auswechselbare und flüchtige/nicht flüchtige Speichermedien eines Computersystems umfassen. Lediglich als Beispiel kann das Speichersystem 34 für das Lesen von und das Schreiben auf einen nicht austauschbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für das Lesen von und das Schreiben auf eine austauschbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für das Lesen von oder das Schreiben auf eine austauschbare, nicht flüchtige optische Platte, wie beispielsweise ein CD-ROM, DVD-ROM oder andere optische Datenträger, bereitgestellt werden. In diesen Fällen kann jedes Plattenlaufwerk durch eine oder mehrere Datenträgerschnittstellen mit dem Bus 18 verbunden werden. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Speicher 28 mindestens ein Programmprodukt umfassen, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 40, das über einen Satz (zumindest einen) von Programmmodulen 42 verfügt, kann beispielhaft, und nicht als Einschränkung, im Speicher 28 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Programmmodule 42 führen im Allgemeinen die Funktionen und/oder die Vorgehensweisen von Ausführungsformen der Erfindung aus, die hierin beschrieben sind.
  • Das Computersystem/der Server 12 kann auch mit einer oder mehreren externen Einheiten 14 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 24 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglichen, mit dem Computersystem/Server 12 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 12 einen Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen (22) erfolgen. Dennoch kann das Computersystem/der Server 12 mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über den Netzwerkadapter 20 Daten austauschen. Wie dargestellt ist, tauscht der Netzwerkadapter 20 mit den anderen Komponenten des Computersystems/Servers 12 über den Bus 18 Daten aus. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 12 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
  • Unter Bezugnahme auf 2 ist eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt ist, weist die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10 auf, mit denen von Cloud-Nutzern verwendete lokale Datenverarbeitungseinheiten wie beispielsweise ein elektronischer Assistent (PDA, personal digital assistant) oder ein Mobiltelefon 54A, ein Desktop-Computer 54B, ein Laptop-Computer 54C und/oder ein Automobil-Computer-System 54N Daten austauschen können. Die Knoten 10 können miteinander Daten austauschen. Sie können physisch oder virtuell in ein oder mehrere Netzwerke wie private, Benutzergemeinschafts-, öffentliche oder hybride Clouds gruppiert werden (nicht gezeigt), wie vorstehend beschrieben wurde, oder in eine Kombination daraus. Dies ermöglicht es der Cloud-Computing-Umgebung 50, Infrastruktur, Plattformen und/oder Software als Dienst anzubieten, für die ein Cloud-Nutzer keine Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sei darauf hingewiesen, dass die Arten von in 2 gezeigten Datenverarbeitungseinheiten 54A bis N lediglich veranschaulichend sein sollen und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 über eine beliebige Art Netzwerk und/oder über eine beliebige Art von über ein Netzwerk aufrufbarer Verbindung (z.B. unter Verwendung eines Web-Browsers) mit einer beliebigen Art von computergestützter Einheit Daten austauschen können.
  • Unter Bezugnahme auf 3 ist ein Satz von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (2) bereitgestellt werden. Es sollte von vornherein klar sein, dass die in 3 gezeigten Komponenten, Schichten und Funktionen lediglich veranschaulichend sein sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt ist, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
    • Eine Hardware- und Softwareschicht 60 umfasst Hardware- und Softwarekomponenten. Zu Beispielen für Hardwarekomponenten gehören: Mainframe-Computer 61; auf der RISC- (Reduced Instruction Set Computer) Architektur beruhende Server 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke sowie Netzwerkkomponenten 66. In einigen Ausführungsformen umfassen Softwarekomponenten eine Netzwerk-Anwendungsserver-Software 67 und eine Datenbanksoftware 68.
  • Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, aus der die folgenden Beispiele für virtuelle Einheiten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, darunter virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
  • In einem Beispiel kann eine Verwaltungsschicht 80 die nachstehend beschriebenen Funktionen bereitstellen. Eine Ressourcen-Bereitstellung 81 stellt die dynamische Beschaffung von Datenverarbeitungsressourcen sowie anderen Ressourcen bereit, die zum Durchführen von Aufgaben innerhalb der Cloud-Computing-Umgebung verwendet werden. Ein Messen und eine Preisfindung 82 stellen die Kostenverfolgung beim Verwenden von Ressourcen innerhalb der Cloud-Computing-Umgebung sowie die Abrechnung oder Rechnungsstellung für den Verbrauch dieser Ressourcen bereit. In einem Beispiel können diese Ressourcen Anwendungssoftwarelizenzen umfassen. Die Sicherheit stellt die Identitätsüberprüfung für Cloud-Nutzer und Aufgaben sowie Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt Nutzern und Systemadministratoren den Zugang zu der Cloud-Computing-Umgebung bereit. Eine Verwaltung des Dienstumfangs 84 stellt die Zuordnung und Verwaltung von Cloud-Computing-Ressourcen bereit, so dass die benötigten Dienstziele erreicht werden. Ein Planen und Erfüllen von Vereinbarungen zum Dienstumfang (SLA, Service Level Agreement) 85 stellt die Anordnung vorab und die Beschaffung von Cloud-Computing-Ressourcen, für die eine zukünftige Anforderung vorausgesehen wird, gemäß einem SLA bereit.
  • Eine Arbeitslastschicht 90 stellt Beispiele für die Funktionalität bereit, für welche die Cloud-Computing-Umgebung verwendet werden kann. Zu Beispielen für Arbeitslasten und Funktionen, die von dieser Schicht bereitgestellt werden können, gehören: Abbildung und Navigation 91; Software-Entwicklung und Lebenszyklusverwaltung 92; Bereitstellung von Ausbildung in virtuellen Klassenzimmern 93; Datenanalytikverarbeitung 94; Transaktionsverarbeitung 95; und Stream-Processing-Verwaltung 96, wie nachstehend in den folgenden Unterabschnitten dieses Abschnitts ‚Ausführliche Beschreibung‘ ausführlich erläutert wird.
  • Die hierin beschriebenen Programme werden auf der Grundlage der Anwendung angegeben, für die sie in einer speziellen Ausführungsform der Erfindung ausgeführt werden. Es ist jedoch darauf hinzuweisen, dass jedwede bestimmte Programm-Nomenklatur hierin lediglich aus Gründen der Zweckmäßigkeit verwendet wird, und somit sollte die Erfindung nicht auf eine ausschließliche Verwendung in einer speziellen Anwendung, die von dieser Nomenklatur angegeben und/oder durch diese Nomenklatur stillschweigend vorausgesetzt wird, beschränkt werden.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Änderungen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang und Wesen der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlichen Technologien am besten zu erklären bzw. um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.
  • II. BEISPIELHAFTE AUSFÜHRUNGSFORM
  • 4 zeigt einen Ablaufplan 250, der ein Verfahren gemäß der vorliegenden Erfindung darstellt. 5 zeigt ein Programm 300 der Stream-Processing-Verwaltung 96 (siehe 3), um mindestens einige der Verfahrensoperationen des Ablaufplans 250 durchzuführen. Dieses Verfahren und zugehörige Software werden nun im Verlauf der folgenden Abschnitte unter ausführlicher Bezugnahme auf 4 (hinsichtlich der Blöcke mit den Verfahrensoperationen) und 5 (hinsichtlich der Softwareblöcke) erläutert.
  • Allgemein gesagt, in dieser beispielhaften Ausführungsform (die in diesem Unterabschnitt auch als die „vorliegende Ausführungsform“, das „vorliegende Beispiel“, die „vorliegende beispielhafte Ausführungsform“ und dergleichen bezeichnet wird) führt das Programm 300 - und, weiter gefasst, die Stream-Processing-Verwaltung 96 - Verwaltungsoperationen in Bezug auf die Ausführung von einem oder mehreren Stream-Processing-Jobs durch. Die Stream-Processing-Jobs umfassen im Allgemeinen Verarbeitungseinheiten (oder „Verarbeitungselemente“), die an verschiedene Stream-Processing-Instanzen verteilt werden können, welche in verschiedenen Datenverarbeitungsumgebungen eines Datenverarbeitungssystems mit mehreren Umgebungen ausgeführt werden, wie beispielsweise eines Multi-Cloud-Systems, bei dem Cloud-Computing-Umgebungen durch mindestens zwei verschiedene Cloud-Computing-Anbieter bereitgestellt werden. Es sei erwähnt, dass diese beispielhafte Ausführungsform hierin exemplarisch verwendet wird, um den Umfang der vorliegenden Erfindung besser darzustellen. Somit können weitere Ausführungsformen (wie beispielsweise in dem nachstehenden Unterabschnitt „Weitere Anmerkungen und/oder Ausführungsformen“ erläuterte Ausführungsformen) anders konfiguriert sein oder sich auf andere Merkmale, Vorteile und/oder Eigenschaften beziehen, die in diesem Unterabschnitt nicht vollständig erläutert werden.
  • Während bei der Erläuterung der vorliegenden beispielhaften Ausführungsform der Schwerpunkt im Allgemeinen auf den Verarbeitungseinheiten/-elementen als den Ausführungseinheiten des Stream-Processing-Jobs liegt, ist anzumerken, dass die Verarbeitungselemente der vorliegenden Ausführungsform durch beliebige andere leistungsfähige Stream-Processing-Ausführungseinheiten ersetzt werden können, die in der Technik bereits bekannt sind oder noch bekannt werden müssen. Während Stream-Processing-Operatoren, die Eingabedatenströme von Tupeldaten bearbeiten und entsprechende Ausgabedatenströme erzeugen, üblicherweise innerhalb von Verarbeitungselementen enthalten sind, kann der Begriff „Operator“ in vielen Fällen im Allgemeinen zum Beispiel durch den breiter gefassten Begriff „Verarbeitungselement“ ersetzt werden, da durch ein Verarbeitungselement durchgeführte Stream-Processing-Operationen üblicherweise durch den/die jeweiligen Operator(en) durchgeführt werden, die innerhalb dieses Verarbeitungselements enthalten sind.
  • Die Verarbeitungselemente des Stream-Processing-Jobs können sich einzeln oder gemeinsam auf jeweiligen Knoten (wie beispielsweise „Stream-Processing-Instanzen“) der Cloud-Computing-Umgebung 50, ob physisch oder virtuell, befinden. Darüber hinaus können sich die Verarbeitungselemente des Stream-Processing-Jobs zum Beispiel auch auf Knoten/Stream-Processing-Instanzen von verschiedenen Umgebungen anderer Anbieter als dem Anbieter der Cloud-Computing-Umgebung 50 befinden. Ein Beispiel einer solchen Konfiguration, die über mehrere Cloud-Computing-Umgebungen verfügt, ist in 7 dargestellt und nachstehend beschrieben.
  • Zum Zweck dieser Offenbarung kann es sich bei einer Stream-Processing-Instanz um ein beliebiges Datenverarbeitungskonstrukt handeln, das Verarbeitungselemente von Stream-Processing-Jobs enthalten und über Datenverarbeitungsressourcen (wie beispielsweise CPU-Kerne und Speicher) verfügen kann, die ihm zur Verarbeitung dieser Stream-Processing-Jobs zugeordnet sind. In einigen Ausführungsformen handelt es sich bei den Stream-Processing-Instanzen um virtuelle Maschinen. In weiteren Ausführungsformen handelt es sich bei den Stream-Processing-Einheiten um Cloud-Container wie beispielsweise Docker-Container. In noch weiteren Ausführungsformen handelt es sich bei den Stream-Processing-Einheiten um Kubernetes-Pods (die selbst einen oder mehrere Cloud-Container enthalten können). In noch weiteren Ausführungsformen umfassen die Stream-Processing-Instanzen Kombinationen des Vorstehenden oder andere bekannte oder noch bekannt zu werdende Datenverarbeitungskonstrukte, die die vorstehenden Anforderungen erfüllen. (Hinweis: Der/die Begriff(e) „DOCKER“ und/oder „KUBERNETES“ können in verschiedenen Jurisdiktionen weltweit Markenrechten unterliegen und werden hier lediglich unter Bezugnahme auf die durch die Marken ordnungsgemäß bezeichneten Produkte oder Services insoweit verwendet, als solche Markenrechte gegebenenfalls vorhanden sind.)
  • In der vorliegenden beispielhaften Ausführungsform tauscht das Programm 300 der Stream-Processing-Verwaltung 96 (auch als „Stream-Processing-Verwaltungsknoten“ bezeichnet) mit einer Mehrzahl von Stream-Processing-Instanzen Daten aus, die in jeweiligen Cloud-Computing-Umgebungen in einem Multi-Cloud-Datenverarbeitungssystem ausgeführt werden, um die Verteilung von Verarbeitungselementen eines Stream-Computing-Jobs über die verschiedenen Cloud-Computing-Umgebungen hinweg zu verwalten und verschiedene weitere verwaltungsbezogene Aufgaben durchzuführen. Die Interaktionen zwischen dem Stream-Processing-Verwaltungsknoten und den Stream-Processing-Instanzen in den verschiedenen Cloud-Computing-Umgebungen werden im Verlauf der folgenden Abschnitte erläutert.
  • Die Verarbeitung beginnt bei der Operation S255, wo ein Konfigurationsmodul 355 (siehe 5) Datenübertragungen zwischen dem Stream-Processing-Verwaltungsknoten und einer Mehrzahl von Stream-Processing-Instanzen herstellt. In dieser Ausführungsform ist die Mehrzahl der Stream-Processing-Instanzen in jeweiligen Cloud-Computing-Umgebungen eines Multi-Cloud-Datenverarbeitungssystems gespeichert. In einem Fall zum Beispiel: (i) ist eine erste Stream-Processing-Instanz in einer durch einen ersten Cloudanbieter bereitgestellten Public-Cloud-Umgebung gespeichert; (ii) eine zweite Stream-Processing-Instanz ist in einer durch einen zweiten Cloudanbieter bereitgestellten Private-Cloud-Umgebung gespeichert; und (iii) eine dritte Stream-Processing-Instanz ist in einer durch einen dritten Cloudanbieter bereitgestellten Hybrid-Cloud-Umgebung gespeichert. Indem Datenübertragungen zwischen dem Stream-Processing-Verwaltungsknoten und den Stream-Processing-Instanzen der jeweiligen Cloudumgebungen hergestellt werden, kann das Modul 355 des Programms 300 die jeweiligen Stream-Processing-Instanzen so konfigurieren, dass sie so betrieben werden, als würden sie alle in derselben einzelnen Cloud-Computing-Umgebung betrieben werden. Auf welche Arten die verschiedenen Umgebungen erstellt und so konfiguriert werden können, dass sie miteinander interagieren - zum Beispiel in Bezug auf einen bestimmten Stream-Processing-Job -, wird im nachstehenden Unterabschnitt „Weitere Anmerkungen und/oder Ausführungsformen“ dieser ‚Ausführlichen Beschreibung‘ erläutert.
  • Die Verarbeitung schaltet zur Operation S260, wo das E/A-Modul 360 eine oder mehrere Verarbeitungseinheiten eines Stream-Processing-Jobs an einen ersten Satz von Stream-Processing-Instanzen der Mehrzahl von Stream-Processing-Instanzen verteilt. Das heißt, in dieser Operation gibt das Programm 300 (z.B. über das Konfigurationsmodul 355) einen durchzuführenden Stream-Processing-Job an, gibt die entsprechenden Verarbeitungselemente für den Job an, legt fest, welche der Stream-Processing-Instanzen welchen Verarbeitungselementen zugewiesen werden sollen, und verwendet das E/A-Modul 360, um diese Zuweisungen und ihre zugehörigen Daten an die jeweiligen Stream-Processing-Instanzen zu übermitteln. Die anfängliche Verteilung von Verarbeitungseinheiten an Stream-Processing-Instanzen kann auf einer beliebigen Anzahl einer großen Vielfalt an Faktoren beruhen, die von speziellen, auf Verarbeitungs- und/oder Speicheranforderungen beruhenden Regeln bis hin zu einer Berechnung der mit der Verwendung einer jeden der verfügbaren Stream-Processing-Instanzen verbundenen Kosten reicht. Während die Verarbeitungseinheiten im Allgemeinen an mindestens eine Stream-Processing-Instanz zur Ausführung verteilt werden müssen, kann darüber hinaus eine beliebige Anzahl von möglichen Kombinationen von Stream-Processing-Instanzen verwendet werden, und in einigen Fällen kann eine einzelne Verarbeitungseinheit mehreren Stream-Processing-Instanzen zugewiesen werden, und zwar aus Redundanzgründen und/oder um eine bestimmte Arbeitslast über mehrere Instanzen/Umgebungen hinweg zu verteilen. Hinsichtlich einer weiteren Erläuterung, wie Ausführungsformen der vorliegenden Erfindung Verarbeitungseinheiten an Stream-Processing-Instanzen verteilen, sei wieder auf den nachstehenden Unterabschnitt „Weitere Anmerkungen und/oder Ausführungsformen“ dieser ‚Ausführlichen Beschreibung‘ verwiesen.
  • Die Verarbeitung schaltet zur Operation S265, wo das E/A-Modul 360 von der einen oder den mehreren Stream-Processing-Instanzen des ersten Satzes von Stream-Processing-Instanzen Verarbeitungsergebnisse empfängt, die zu der einen oder den mehreren Verarbeitungseinheiten des Stream-Processing-Jobs gehören. Die Verarbeitungsergebnisse können beliebige Daten in Bezug auf die Verarbeitung des Stream-Computing-Jobs durch die jeweiligen Stream-Processing-Instanzen umfassen, darunter verschiedene Datenverarbeitungsergebnisse (z.B. Operatorergebnisse), Systeminformationen für die Stream-Processing-Instanzen (z.B. Verarbeitungsleistung, freier Speicher) und/oder verschiedene Analysen, wie nachstehend ausführlicher erläutert wird, sowohl in diesem Unterabschnitt als auch im Unterabschnitt „Weitere Anmerkungen und/oder Ausführungsformen“ dieser ‚Ausführlichen Beschreibung‘.
  • Die Verarbeitung schaltet zur Operation S270, wo das Konfigurationsmodul 355 unter Verwendung des Machine-Learning-(ML-)Moduls 365 und zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruhend eine Stream-Verwaltungsoperation durchführt. Eine beliebige Anzahl einer großen Vielfalt an Stream-Verwaltungsoperationen kann in dieser Operation durchgeführt werden, darunter zum Beispiel die Verteilung von Verarbeitungseinheiten für einen neuen Stream-Processing-Job, die Weiterverteilung von Verarbeitungseinheiten für den aktuellen Stream-Processing-Job und die Verwendung/Änderung von parallelen Regionen für einen Stream-Processing-Job, wie nachstehend erläutert wird.
  • In verschiedenen Ausführungsformen beruht die Stream-Verwaltungsoperation auf Machine Learning - das heißt, die Stream-Verwaltungsoperation wird mit Hilfe einer auf Machine Learning beruhenden Auswahlstrategie ausgewählt. In verschiedenen Ausführungsformen wird ein Machine-Learning-Modell trainiert, um diese Auswahl zu treffen, indem die empfangenen Verarbeitungsergebnisse als zumindest ein Teil der Trainingsdaten für einen Trainingsprozess verwendet werden. Bei dem Trainingsprozess kann es sich um einen beliebigen Trainingsprozess einer großen Vielfalt an Trainingsprozessen handeln, zum Beispiel: (i) einen überwachten Trainingsprozess, wie beispielsweise einen Prozess, der Beschriftungen für die Trainingsdaten verwendet, wobei die Beschriftungen von einem menschlichen Benutzer, einem digitalen Annotator oder einer Kombination daraus empfangen werden; (ii) einem unüberwachten Prozess, wie beispielsweise einem Prozess, der eine Clusteranalyse oder eine Hauptkomponentenanalyse verwendet, um Muster in den Trainingsdaten anzugeben; (iii) einen Verstärkungslernprozess, wie beispielsweise einen Prozess, der einen Markov-Entscheidungsprozess und/oder dynamische Programmiertechniken verwendet; und/oder (iv) Kombinationen daraus.
  • Allgemein gesagt, ein Zweck des Trainingsprozesses, ungeachtet der speziellen Art von Prozess, der genutzt wird, besteht darin, Ergebnisse zu erzeugen, die ein bestimmtes Ziel oder einen bestimmten Satz von Zielen erfüllen. Im Falle der vorliegenden Ausführungsform, in der das Machine-Learning-Modell verwendet wird, um verschiedene Stream-Verwaltungsoperationen auszuwählen, wird das Machine-Learning-Modell so trainiert, dass es Stream-Verwaltungsoperationen darauf beruhend auswählt, wie gut sie diese Ziele erfüllen. Bei den Zielen kann es sich um ein oder mehrere beliebige einer großen Vielfalt an möglichen Zielen handeln - ob technischer oder geschäftlicher Natur. Zum Beispiel können zu einigen allgemeinen technischen Zielen gehören: (i) die CPU-Belastung auf einem Minimum oder unter einem bestimmten Wert zu halten, (ii) die RAM-Auslastung auf einem Minimum oder unter einem bestimmten Wert zu halten, (iii) eine „Wartezeit“ auf Verarbeitungseinheiten minimieren und/oder (iv) den Durchsatz (zum Beispiel Tupelabnahmerate (tuple outflow rate) zu maximieren. Zu einigen allgemeinen Unternehmenszielen gehören: (i) Kosten im Allgemeinen, (ii) auf bestimmte Zeitrahmen angewandte Kosten (z.B. außerhalb der Geschäftszeiten, am Ende eines Monats/Quartals), (iii) Minimierung der Verwendung während einer bestimmten „Spitze“ oder anderweitiger unerwünschter Zeitrahmen, (iv) Anforderungen an die Datenhoheit von verschiedenen Rechtsräumen; und/oder (v) Minimierung von Verarbeitungskosten bei gleichzeitiger Aufrechterhaltung einer definierten Quality-of-Service-(QoS-)Performance-Bewertung.
  • Verschiedene weitere Faktoren in Bezug auf die Optimierung eines Stream-Verwaltungsjobs können beim Training des Machine-Learning-Modells ebenfalls berücksichtigt werden. Zum Beispiel kann das Machine-Learning-Modell in verschiedenen Ausführungsformen so trainiert werden, dass es optimiert, wie auf externe Services - wie beispielsweise Datenbanken - zugegriffen wird. In diesen Ausführungsformen kann das Machine-Learning-Modell, wenn ein Stream-Processing-Job zum Beispiel Zugriff auf eine Datenbank benötigt, so trainiert werden, dass es angibt, welche Datenverarbeitungsumgebung mit optimalen Kosten- und Performance-Werten auf die Datenbank zugreifen kann. Ein weiterer Faktor, der berücksichtigt werden kann, ist die Nähe zu Quellendaten. Wenn Eingabedaten für einen Stream-Processing-Job zum Beispiel aus einem Netzwerk von Sensoren in einer Region stammen, kann die dieser Region am nächsten liegende Datenverarbeitungsumgebung zur Verarbeitung ausgewählt werden, da diese Datenverarbeitungsumgebung möglicherweise die günstigsten Kosten- und Performance-Metriken für diesen Job hat. Noch ein weiterer Faktor, der berücksichtigt werden kann, ist die Stabilität der Datenverarbeitungsumgebung. Zum Beispiel kann das Machine-Learning-Modell so trainiert werden, dass es angibt, welche Datenverarbeitungsumgebung die geringste Zahl von Ausfällen über die Zeit hat, und diese Umgebung wählt, um wichtige Verarbeitungseinheiten für einen Job auszuführen.
  • Wie vorstehend erwähnt wurde, fallen die Stream-Verwaltungsoperationen in verschiedenen Ausführungsformen unter drei allgemeine Kategorien: anfängliche Verteilung/Zuweisung von Verarbeitungseinheiten für einen neuen Stream-Processing-Job, Weiterverteilung von Verarbeitungseinheiten für einen aktuellen Stream-Processing-Job und die Verwendung/Änderung von parallelen Regionen für den Stream-Processing-Job. Zum Beispiel umfasst die Stream-Verwaltungsoperation in verschiedenen Ausführungsformen ein Verteilen von einer oder mehreren Verarbeitungseinheiten eines neuen Stream-Processing-Jobs an einen anderen Satz von Stream-Processing-Instanzen als die in dem anfänglichen Stream-Processing-Job verwendeten Stream-Processing-Instanzen. In diesen Ausführungsformen kann der andere Satz von Stream-Processing-Instanzen eine gewisse Überschneidung mit dem anfänglichen Satz von Stream-Processing-Instanzen aufweisen, die für den anfänglichen Stream-Processing-Job verwendet wurden, doch ist dies nicht immer der Fall, da der Satz von Zielen in vielen Situationen am besten erfüllt werden kann, indem insgesamt andere Stream-Processing-Instanzen verwendet werden. Darüber hinaus kann der Stream-Processing-Verwaltungsknoten in einigen Fällen angeben, dass keine der verfügbaren Stream-Processing-Instanzen geeignet sind, um die Ziele für den Stream-Processing-Job zu erfüllen, und Anforderungen an die verschiedenen Cloud-Computing-Umgebungen des Multi-Cloud-Datenverarbeitungssystems ausgeben, um neue Stream-Processing-Instanzen mit Spezifikationen zu erstellen, die die Ziele erfüllen oder wahrscheinlicher erfüllen.
  • Wie oben ausgeführt wurde, umfasst die Stream-Verwaltungsoperation in verschiedenen Ausführungsformen ein Anweisen der Verschiebung einer ersten Verarbeitungseinheit der verteilten einen oder mehreren Verarbeitungseinheiten von einer ersten Stream-Processing-Instanz an ein zweites Stream-Processing während der Ausführung des Stream-Processing-Jobs. In verschiedenen Ausführungsformen können Entscheidungen getroffen werden, die ähnlich den in dem vorhergehenden Absatz erläuterten sind, wie beispielsweise ein Neuzuweisen von einigen, aber nicht allen, der Verarbeitungseinheiten oder ein Anfordern der Erstellung von einer oder mehreren neuen Stream-Processing-Instanzen, welche die gewünschten Ziele besser erfüllen. Ferner kann die Entscheidung, ob eine Verarbeitungseinheit zwischen Stream-Processing-Instanzen verschoben werden soll, auch von Echtzeit-Metriken der Art und Weise, in der der Stream-Processing-Job ausgeführt wird, abhängen. Wenn das ML-Modul 365 zum Beispiel beruhend auf von dem E/A-Modul 360 empfangenen Echtzeit-Verarbeitungsergebnissen feststellt, dass die erste Stream-Processing-Instanz ein Kostenziel um einen bestimmten Betrag verfehlen wird, kann das Konfigurationsmodul 355 die Weiterverteilung von einem oder mehreren der Verarbeitungselemente der ersten Stream-Processing-Instanz an eine zweite Stream-Processing-Instanz anweisen, welche die Verarbeitungselemente zu Kosten verarbeiten wird, die mindestens um den bestimmten Betrag geringer als die Kosten der ersten Stream-Processing-Instanz sind, so dass die gesamten kombinierten Kosten der Verarbeitung unter Verwendung der ersten Stream-Processing-Instanz und der zweiten Stream-Processing-Instanz das Kostenziel erfüllen. In einem weiteren Beispiel kann das ML-Modul 365, wenn die Echtzeit-Verarbeitungsergebnisse anzeigen, dass die erste Stream-Processing-Instanz beendet wurde oder wahrscheinlich beendet werden wird, die Verarbeitungselemente der ersten Stream-Processing-Instanz an eine oder mehrere andere verfügbare Stream-Processing-Instanzen weiterverteilen, die nicht beendet wurden oder wahrscheinlich nicht beendet werden.
  • Schließlich, wie oben ausgeführt wurde, umfasst die Stream-Verwaltungsoperation in verschiedenen Ausführungsformen die Verwendung/Änderung von parallelen Regionen für den Stream-Processing-Job. Allgemein gesagt, parallele Regionen erlauben einem Stream-Processing-Job, spezielle Operatoren innerhalb von Verarbeitungseinheiten/-elementen zu replizieren, die in diese Operatoren eingehenden Datenströme aufzuteilen und verschiedene Tupel in den replizierten Operatoren parallel zu verarbeiten, wobei die replizierten Operatoren und ihre jeweiligen Datenströme als „parallele Regionen“ oder „Kanäle“ betrachtet werden. Ein Beispiel für eine parallele Regionen einschließende Stream-Verwaltungsoperation wäre beispielsweise, die Breite einer parallelen Region zu vergrößern und damit die Operatoren noch weiter zu replizieren, so dass mehr parallele Regionen erstellt werden. In verschiedenen Ausführungsformen können die parallelen Regionen alle innerhalb derselben Verarbeitungseinheit verbleiben und in weiteren (oder den gleichen) Ausführungsformen können die parallelen Regionen an verschiedene Verarbeitungseinheiten und/oder Stream-Processing-Instanzen verteilt werden, wie es gewünscht/erforderlich ist, um die angegebenen Ziele zu erfüllen. Somit umfasst die Stream-Verwaltungsoperation in einigen Fällen ein Feststellen des ML-Moduls 365, dass mehr Kanäle benötigt werden, und ein Anweisen der Erstellung von einem oder mehreren, zu einem bestimmten Operator gehörenden neuen Kanälen, die auf einem neuen (z.B. dritten) Satz von Stream-Processing-Instanzen ausgeführt werden sollen.
  • III. WEITERE ANMERKUNGEN UND/ODER AUSFÜHRUNGSFORMEN
  • Verschiedene Ausführungsformen der vorliegenden Erfindung stellen ein System bereit, um Stream-Computing-Arbeitslasten über mehrere Cloud-Computing-Regionen und - Anbieter hinweg zu verteilen. Zum Beispiel integriert ein Stream-Manager in einigen Ausführungsformen die folgenden Techniken, um in mehreren Clouds ausgeführte Streaming-Arbeitslasten besser zu verwalten: (i) Konsolidierung - zentralisierte, ferne Administration von Instanzen und Jobobjekten in mehreren Clouds; (ii) Problembestimmung - tiefere Integration in Cloud- und Systemüberwachungstools; (iii) hohe Verfügbarkeit - cloudübergreifende Instanz- und Job-Funktionsübernahme; und/oder (iv) Optimieren von Kosten und Job-Performance durch Machine Learning einschließlich Jobübergabe an eine Cloud, cloudübergreifende Jobverschiebung, und erweiterte parallele Regionen und andere Programmierkonzepte, um Kanäle in optimalen Cloud-Konfigurationen auszuführen.
  • In verschiedenen Ausführungsformen bringt ein Multi-Cloud-Stream-Manager die beste oder optimale Cloudumgebung in Erfahrung, um spezielle Jobs auszuführen. In verschiedenen Ausführungsformen erfasst der Stream-Manager laufend Kostensätze und Performance-Metriken, um die beste Cloudumgebung zur Ausführung von Streaming-Arbeitslasten festzustellen. Diese Metriken werden verwendet, um festzustellen, an welche optimale Cloudumgebung ein Stream-Computing-Job übergeben wird, wann ein Job in eine andere Cloudumgebung verlagert werden soll und wann Programmiertechnologien, darunter parallele Regionen, verwendet werden sollen, um einen Job in mehreren Clouds auszuführen.
  • In verschiedenen Ausführungsformen wird der Ort, an dem ein Stream-Computing-Job ausgeführt wird, vor einem Endbenutzer verborgen. In verschiedenen Ausführungsformen verwendet oder schreibt der Endbenutzer oder Entwickler einfach eine verteilte Stream-Computing-Anwendung. In verschiedenen Ausführungsformen setzt der Entwickler die Anwendung in einem Multi-Cloud-Stream-Manager ein, der die Jobs der Anwendung so platziert, dass Ziele (oder Vereinbarungen zum Dienstumfang (SLAs, Service Level Agreements) optimal erfüllt werden. In verschiedenen Ausführungsformen werden Fehlerbehebung sowie eine Technologie für eine konsolidierte Ansicht für Administratoren und Entwickler integriert, die Fehler in Anwendungen von einem einzelnen Fenster oder Portal aus beheben. Aus der Sicht des Endbenutzers wird die Anwendung so ausgeführt, wie die Anwendung an einem einzelnen Ort ausgeführt wurde, und die Verteilung auf mehrere Clouds ist nicht sichtbar.
  • 6 zeigt ein Schaubild 600, das ein Beispiel eines herkömmlichen Stream-Computing-Systems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. In dieser Ausführungsform wird das Stream-Computing-System 602 in einer einzelnen verwalteten Umgebung (z.B. einer einzelnen Cloud, einer Vor-Ort-/privaten Cloudbereitstellung und/oder einem Satz von verwalteten Hosts) ausgeführt, wobei Verarbeitungseinheiten 606A bis N innerhalb von verschiedenen Hosts 604A bis N (wie beispielsweise „Stream-Processing-Instanzen“, vorstehend erläutert) platziert werden und eine Platzierung und Ressourcenverwaltung durch Verwaltungsservices 608 durchgeführt werden. In dieser Ausführungsform ist die verteilte Technologie so optimiert, dass sie in der einzelnen verwalteten Umgebung gut funktioniert, wobei sie zum Beispiel eine hohe Verfügbarkeit und Redundanz bereitstellt.
  • Während ein Betreiben eines Stream-Computing-Systems in einer einzelnen verwalteten Umgebung verschiedene Vorteile haben kann, bewegt sich das Gebiet des Stream-Computing jedoch auf eine Welt zu, in der Anwendungen über mehrere Umgebungen hinweg ausgeführt werden, in der mehrere Cloudumgebungen und Implementierungsmodelle verwendet werden, um Stream-Computing-Anwendungen optimal einzusetzen und auszuführen. Vorhandene Entwürfe von Stream-Computing-Systemen sind nicht ausreichend, um dieser technologischen Entwicklung zu begegnen. Während es zum Beispiel möglich sein könnte, komplexe Streaming-Anwendungen zu schreiben, die über mehrere Cloudumgebungen hinweg interagieren, wäre eine solche Arbeit mühsam und würde nicht triviale Entwicklungsaktivitäten und eine nicht triviale Verwaltung erforderlich machen. Benötigt wird eine Lösung, die die Probleme angeht, mit denen Entwickler und Administratoren konfrontiert sind, wenn sie Jobs entwickeln und in einer Stream-Computing-Umgebung einsetzen, die über mehrere Cloudumgebungen hinweg ausgeführt wird.
  • Verschiedene Ausführungsformen der vorliegenden Erfindung stellen eine neuartige Herangehensweise bei der Änderung des verteilten Paradigmas von Stream-Computing-Systemen von einer einzelnen Umgebung in eine Multi-Cloud-Umgebung bereit. In verschiedenen Ausführungsformen umfasst diese Herangehensweise mehrere Komponenten: (i) Konsolidierung - zentrale Verwaltung von Stream-Computing-Jobs; (ii) Problembestimmung - zentrale Problembestimmungstools, um Fehler in Streams-Jobs über mehrere Umgebungen hinweg zu beheben; (iii) hohe Verfügbarkeit - Erweitern der Echtzeit-Funktionsübernahme auf mehrere Umgebungen; und (iv) Optimierung - eine auf Machine Learning beruhende Lösung, die auf Zeitreihen-Performance-Daten pro Umgebung und auf SLAs beruht, um verschiedene zentrale Stream-Computing-Funktionalitäten durchzuführen, darunter Jobübergabe (wo soll die Streams-Anwendung anfangs eingesetzt werden?), Jobverlagerung (stehen optimalere Umgebungen zur Ausführung des aktuellen Jobs zur Verfügung? Wenn ja, wo?) und Job-Parallelisierung (z.B. Erweitern von parallelen Regionen auf mehrere Umgebungen, um Spitzen in Arbeitslasten zu bewältigen).
  • 7 zeigt ein Schaubild 700, das ein Beispiel einer Multi-Cloud-Stream-Computing-Umgebung (d.h. ein Stream-Computing-System 702) gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Wie in 7 gezeigt ist, werden Stream-Processing-Instanzen 710A bis C in einer Cloudumgebung A 704, einer Cloudumgebung B 706 bzw. einer Cloudumgebung C 708 gehostet und durch einen Stream-Manager 712 verwaltet. In dieser Ausführungsform stellt der Stream-Manager 712 eine Zentralisierung von Stream-Processing-Services bereit und sammelt Metadaten von jeder Stream-Processing-Instanz 710A bis C. Während der Stream-Manager 712 als außerhalb der Cloudumgebung A 704, der Cloudumgebung B 706 und der Cloudumgebung C 708 gehostet dargestellt ist, sollte des Weiteren klar sein, dass der Stream-Manager 712 in verschiedenen Ausführungsformen in einer beliebigen oder in allen Cloudumgebungen, der Cloudumgebung A 704, der Cloudumgebung B 706 und der Cloudumgebung C 708, mit Funktionsübernahme und/oder auch weiteren zur Verfügung stehenden Hochverfügbarkeits-Optionen gehostet werden kann.
  • In verschiedenen Ausführungsformen können Stream-Computing-Anwendungen in einer Multi-Cloud-Umgebung (wie beispielsweise dem Stream-Computing-System 702) in einer (oder beiden) von zwei verschiedenen Arten eingesetzt werden. In einigen Ausführungsformen, in denen ein Stream-Manager (wie beispielsweise der Stream-Manager 712) so konfiguriert wurde, dass er für Services in der Multi-Cloud-Umgebung sorgt, kann der Stream-Manager einen Cloud-Typ auswählen und eine neue Stream-Processing-Instanz des ausgewählten Typs in einer jeweiligen Cloudumgebung einsetzen. In weiteren (oder den gleichen) Ausführungsformen, in denen Stream-Processing-Instanzen auf Umgebungsebene erstellt werden können, kann ein Administrator einer Cloudumgebung innerhalb der Multi-Cloud-Umgebung eine Stream-Processing-Instanz für die Cloudumgebung erstellen und die erstellte Stream-Processing-Instanz kann mit dem Stream-Manager Daten austauschen, um Metadaten über die jeweilige Umgebung der Stream-Processing-Instanz bereitzustellen.
  • In verschiedenen Ausführungsformen sind Stream-Processing-Instanzen gruppenweise zu Multi-Cloud-Instanzen einer höheren Ebene zusammengefasst. Zum Beispiel können in diesen Ausführungsformen Metadaten für die verschiedenen, in Ausführung befindlichen Stream-Processing-Instanzen in einer grafischen Benutzeroberfläche (GUI) eines Stream-Managers zusammengefasst werden, wobei Daten über die mehreren Stream-Processing-Instanzen und Umgebungen hinweg gesammelt und in einer einzelnen Cloud-Ansicht dargestellt werden.
  • In verschiedenen Ausführungsformen werden Stream-Computing-Jobs einem Multi-Cloud-Stream-Manager (wie beispielsweise dem Stream-Manager 712) übergeben. In diesen Ausführungsformen wertet der Multi-Cloud-Stream-Manager Platzierungsoptionen so aus, wie es in Single-Cloud-Umgebungen geschieht, mit der Ausnahme, dass er nicht die zu einer einzelnen Cloudumgebung gehörenden Metriken prüft, sondern alle eingetragenen Cloudumgebungen auswertet. Des Weiteren können Jobs in diesen Ausführungsformen in Verarbeitungselemente, die Operatoren enthalten, aufgeteilt und ausgeführt werden, während sie einem Endbenutzer oder Entwickler so erscheinen, als befänden sie sich in einer einzelnen Umgebung.
  • In verschiedenen Ausführungsformen können Entwickler und Administratoren Anwendungen, die in einer Multi-Cloud-Umgebung (wie beispielsweise dem Stream-Computing-System 702) betrieben werden, von einer einzelnen GUI aus sehen. Obgleich Stream-Processing-Elemente in mehreren verschiedenen Cloudumgebungen in Ausführung befindlich sein können, stellt die einzelne Sicht in diesen Ausführungsformen eine virtualisierte Abstraktionsschicht bereit, um Fehlerbehebung und Entwicklung zu optimieren.
  • In verschiedenen Ausführungsformen erkennt ein Stream-Manager, der eine zentralisierte, ferne Administration von Stream-Computing-Instanzen und eines Jobobjekts über mehrere Clouds hinweg bereitstellt, die folgenden Merkmale, Eigenschaften und/oder Vorteile: (i) sie stellt eine einzelne Sicht aller Instanzen, Jobs und Verarbeitungselemente bereit, die nach Benutzer, Region, Anbieter, Typ der Cloudumgebung (privat, öffentlich usw.) und dergleichen gruppiert werden können; (ii) sie tauscht mit jeder Stream-Processing-Instanz Daten aus und ruft Instanzeigenschaften und Informationen über in Ausführung befindliche Jobs und Verarbeitungselemente ab, die dann zusammengefasst und mit Filtern, Gruppen und Sortierungen angezeigt werden können; (iii) sie ermöglicht jeder Stream-Processing-Instanz, sich für Ereignisbenachrichtigungen wie beispielsweise Diagnosealerts einzutragen, wenn Instanzen oder Jobs gemäß verschiedenen Metriken nicht mehr ordnungsgemäß funktionieren; (iv) sie ermöglicht kundenspezifische Erzeugungs-, Lese-, Aktualisierungs- und Lösch-(CRUD-)Operationen über Clouds hinweg, wie beispielsweise ein Erzeugen der gleichen Instanz in den Clouds A und B oder ein Abrufen von nicht mehr ordnungsgemäß funktionierenden Jobs für alle Instanzen in den Clouds A und B; und/oder (v) sie gestattet Abfragen mit an Instanzen über Clouds hinweg zu sendenden Prädikaten, was den Abruf von speziellen Informationen und/oder das Senden von zielgerichteten Befehlen ermöglicht.
  • Problembestimmung in Multi-Cloud-Umgebungen kann deutlich herausfordernder sein als in einer einzelnen Umgebung, da eine Multi-Cloud-Umgebung ein breites Spektrum an verschiedenen Technologien in der zugrunde liegenden Infrastruktur verwenden kann (verschiedene Containertechnologien, virtuelle Maschinen, physische Hosts und kundenspezifische Implementierungen). Informationen über die spezielle Infrastruktur einer Cloudumgebung können über Aufrufe einer Anwendungsprogrammierschnittstelle (application programming interface, API) erhältlich sein.
  • Trotz der Vielfalt an unterschiedlichen Technologien, die in einer Multi-Cloud-Umgebung genutzt werden können, bleibt die zugrunde liegende Fehlererkennung innerhalb einer Stream-Computing-Anwendung im Allgemeinen gleich. Zum Beispiel können Stream-Computing-Anwendungen ungeachtet der Infrastruktur-Plattform Jobfehler, Speicherprobleme, Netzwerkprobleme, Bandbreitenprobleme und dergleichen erfahren. Nichtsdestotrotz kann eine Fehlerbehebung in jeder Umgebung mühsam sein, da ein Administrator wissen muss, welche APIs zu verwenden sind, welche Tools geladen werden müssen, und dergleichen.
  • Somit fassen verschiedene Ausführungsformen der vorliegenden Erfindung die Problembestimmungs-API-Technologie mehrerer Cloud-Plattformen zusammen, um eine einzelne Problembestimmungsperspektive bereitzustellen. In verschiedenen Ausführungsformen werden Probleme mit zugrunde liegenden Umgebungsproblemen (verfügbaren APIs entnommen) in Zusammenhang gebracht und dem Administrator oder Entwickler in einer einzelnen Ansicht, wie es in einzelnen Umgebungen geschieht, vorgelegt, wobei eine Problembestimmung im Grunde über mehrere Clouds virtualisiert wird.
  • In verschiedenen Ausführungsformen kann ein Stream-Manager (wie beispielsweise der Stream-Manager 712) in vorhandene Cloud- und Systemüberwachungstools integriert werden, um bei der Ermittlung möglicher Ursachen mitzuwirken, wenn eine Instanz oder ein Job nicht mehr ordnungsgemäß funktioniert. Wenn zum Beispiel ein Stream-Diagnosealert ausgegeben wird, kann der Stream Manager andere gleichzeitig auftretende Alerts suchen und ihn mit diesen in Zusammenhang bringen. In einigen Fällen können Instanzen, die weiterhin nicht ordnungsgemäß funktionieren, mit zugrunde liegenden Problemen in Verbindung gebracht werden, wie beispielsweise einem inaktiven Host, Netzwerkpartitionsproblemen, hoher Speicher-/CPU-Belegung, ungenügendem Plattenspeicherplatz, Datenträgerausfall und dergleichen. Für jede Instanz oder jeden Job erfasst der Stream-Manager Systeminformationen wie beispielsweise die Hosts, die verwendet werden. Wenn eine Instanz oder ein Job nicht mehr ordnungsgemäß funktioniert, kann der Streams-Manager das Überwachungssystem abfragen und nach offenen Alerts schauen, die damit in Verbindung stehen könnten.
  • Zwar können vorhandene Stream-Processing-Systeme für hohe Verfügbarkeit ausgelegt sein, doch ist dies im Gegensatz zu Multi-Cloud-Umgebungen üblicherweise auf einzelne Umgebungen beschränkt. Ferner sind Systeme für eine einzelne Umgebung dem Risiko von Rechenzentrumsproblemen ausgesetzt, die dazu führen könnten, dass ein Stream-Processing-Job beendet oder in anderer Weise heruntergefahren wird. Verschiedene Ausführungsformen der vorliegenden Erfindung, die mehrere Stream-Processing-Instanzen über mehrere Clouds hinweg ermöglichen, bei denen ein Stream-Manager globale Konfigurationen, Jobkonfigurationen und Anwendungsbundles speichert, ermöglichen Verarbeitungseinheiten/-elementen, die heruntergefahren werden, in einer anderen Cloudumgebung automatisch neu zu starten, sei es in einer anderen Cloudregion mit demselben Provider oder aber mit einem komplett anderen Cloud-Provider. Indem Daten aus einer konsolidierten Problembestimmung verwendet werden, kann ein Scheduler die optimalste Cloudumgebung und Instanz für den Einsatz der Verarbeitungseinheiten/- elemente feststellen.
  • In verschiedenen Ausführungsformen kann der Stream-Manager, wenn ein Cloud-Rechenzentrum inaktiv wird, Instanzen und Jobs automatisch in eine vorgesehene Sicherungscloudumgebung verschieben. In diesen Ausführungsformen können Instanzen mit der gleichen Konfiguration erstellt werden und Jobs können mit Anwendungsbundles aus einer globalen Repository neu gestartet werden. Wenn eine Instanz erstellt oder aktualisiert wird, werden ihre Konfigurationseinstellungen mit dem Stream-Manager aufgezeichnet, so dass die Instanz in einer anderen Umgebung neu erstellt werden kann. Genauso werden während einer Jobübergabe Jobkonfigurationsdetails und das Anwendungsbundle gespeichert, so dass die Anwendung bei Bedarf in einer anderen Instanz erneut übergeben werden kann.
  • In verschiedenen Ausführungsformen sammelt ein Stream-Manager (wie beispielsweise der Stream-Manager 712) über alle Cloudinstanzen hinweg Metriken aus verschiedenen Cloudumgebungen und Instanzen. In diesen Ausführungsformen werden Metriken über eine cloudspezifische Performance, Betriebszeit und Fehlerraten für Jobs gesammelt, die in den verschiedenen Cloudumgebungen ausgeführt werden. Bei Verwendung einer Zeitreihenanalyse von Jobtypen, Attributen und Daten können optimale Platzierungsentscheidungen getroffen werden, wie beispielsweise Entscheidungen, die derzeit durch den Scheduler in einer einzelnen Umgebung getroffen werden.
  • Wie vorstehend beschrieben wurde, kann ein Stream-Manager so konfiguriert werden, dass er: (i) Jobübergabeentscheidungen, (ii) Jobverschiebungsentscheidungen und (iii) Entscheidungen über parallele Regionen für eine Multi-Cloud-Stream-Computing-Umgebung optimiert. In verschiedenen Ausführungsformen trainiert der Stream-Manager zum Beispiel ein Machine-Learning-Modell, um optimale Entscheidungen zu treffen, die zumindest teilweise auf Daten, die von verschiedenen Cloudinstanzen in der Multi-Cloud-Umgebung empfangen werden, und auf einer Auswertung dieser Daten beruhen.
  • In verschiedenen Ausführungsformen stellt der Stream-Manager zur Optimierung von Jobübergabeentscheidungen ((i) oben) Kosten und Durchsatzraten unter Verwendung von Daten fest, die aus den verschiedenen Cloudinstanzen unter Verwendung von cloudspezifischen APIs und Stream-Processing-APIs zusammengefasst wurden. In diesen Ausführungsformen können Richtlinien und SLAs auf Anwendungsebene festgelegt und in Verbindung mit den konsolidierten Daten verwendet werden, um Hinweise an den Scheduler für eine optimale anfängliche Platzierung von Jobs zu geben.
  • Wenn der gleiche Job zum Beispiel in mehreren Clouds ausgeführt wird, kann der Stream-Manager Metriken zu Preisfindung und Durchsatz zum Vergleich sammeln. Im Laufe der Zeit kann der Stream-Manager lernen, einen Job an die beste Umgebung zu übergeben, um Kosten und Performance zu optimieren. Der den Job Übergebende kann auch dem Stream-Manager Hinweise geben, indem er Gewichtungen für Faktoren wie beispielsweise Kosten und Tupeldurchsatz angibt. Der Stream-Manager kann einen auf jüngsten Metriken beruhenden zusammengesetzten Score berechnen und die Entscheidung treffen, wohin der Job übergeben wird.
  • In verschiedenen Ausführungsformen stellt der Stream-Manager zur Optimierung von Jobverschiebungsentscheidungen ((ii) oben) die Möglichkeit bereit, Jobs zum optimalsten Zeitpunkt in die optimalste Cloudumgebung zu verlagern, wobei aus den verschiedenen Cloudumgebungen zusammengefasste Performance-Metriken und Kostendaten verwendet werden. Zum Beispiel kann in einer Cloudumgebung zu bestimmten Stunden eine Überlastung auftreten. Im Laufe der Zeit erkennt der Stream-Manager Überlastungsmuster und gibt dem Scheduler Hinweise, die Jobs in eine optimalere Cloudumgebung zu verlagern.
  • In einem Beispiel kann der Stream-Manager aufgrund der Nähe zu Quellendaten automatisch entscheiden, Jobs für eine optimale Performance in eine andere Cloud zu verschieben. Zum Beispiel kann ein Stream-Job, der Echtzeit-Börsendaten verarbeitet, in Abhängigkeit davon, wann die Märkte öffnen, aus einer Cloud in New York in eine Cloud in London verschoben werden. Eine Jobverschiebung kann erreicht werden, indem ein Job in einer Umgebung abgebrochen und in einer anderen übergeben wird. Dies kann nach einem festen Zeitplan erfolgen oder im Laufe der Zeit erlernt werden, indem die Tupelrate der Eingangsdaten geprüft wird.
  • In verschiedenen Ausführungsformen werden parallele Regionen ((iii), oben) in einem Stream-Processing-System verwendet, um einen Stream-Job nach Bedarf zu erweitern und zu verkürzen, um Spitzen im Datenfluss zu bewältigen. In verschiedenen Ausführungsformen verwendet der Stream-Manager aus den verschiedenen Cloudinstanzen zusammengefasste Daten, um parallele Regionen anzugeben, die sich über mehrere Cloudinstanzen hinweg erweitern können.
  • Zum Beispiel besteht einer der Vorteile einer Hybrid-Cloud in der Fähigkeit, Arbeitslasten in einer privaten Cloud auszuführen und Teile einer Arbeitslast in eine öffentliche Cloud auszulagern, um Spitzen zu bewältigen. Um einen Zeitraum mit höheren Arbeitslasten zu bewältigen, kann sich ein Stream-Manager dafür entscheiden, die Breite einer parallelen Region in einem Job zu vergrößern und neue Kanäle in einer öffentlichen Cloud mit einem größeren Pool an Ressourcen ausführen zu lassen. Nachdem die Spitze vorüber ist, kann die parallele Region wieder reduziert werden.
  • In verschiedenen Ausführungsformen wählt der Stream-Manager, wenn er sich entscheidet, die Breite einer parallelen Region zu vergrößern, eine öffentliche Cloud zur Ausführung der neuen Kanäle. Neue parallele Kanäle werden erstellt, indem zum Beispiel eine Anwendung übergeben wird, die nur Operatoren in der Region enthält. Die Eingabe- und Ausgabeports der neuen Kanäle werden extern zugänglich gemacht. Die Aufteilungs- und Zusammenführungsoperatoren der parallelen Region werden für einen Anschluss an die neuen Kanäle angepasst.
  • Wie vorstehend erwähnt wurde, ist die Stream-Computing-Technologie üblicherweise an einzelne eingesetzte Cloud-Umgebungen gebunden, aber das Konzept, die Technologie über mehrere Clouds hinweg zu erweitern, um von der Performance, Zuverlässigkeit, hohen Verfügbarkeit und von Kosteneinsparungen zu profitieren, ist die Zukunft dieser verteilten Technologie. Verschiedene Ausführungsformen der vorliegenden Erfindung verwenden einen Cloud-Manager, der in gemeinsame Cloudumgebungen integriert ist und (mit Hilfe von APIs) für eine Integration in ein beliebiges Rechenzentrum oder eine Private-Cloud-Umgebung nach Bedarf erweitert werden kann. Verschiedene Ausführungsformen stellen eine virtualisierte Architektur bereit, die es erlaubt, Stream-Computing-Anwendungen so zu entwickeln, wie sie heute entwickelt werden, so einzusetzen, wie sie heute eingesetzt werden, sie aber in einer Multi-Cloud-Umgebung auszuführen.
  • Verschiedene Ausführungsformen der vorliegenden Erfindung verwenden Analysen und Machine Learning, um die besten Cloudumgebungen für eine Ausführung von verschiedenen Streaming-Analytics-Jobs in einem Multi-Cloud-Stream-Processing-System festzustellen. In verschiedenen Ausführungsformen können Teile eines Stream-Jobs dynamisch geändert werden, um auf einer anderen Cloud ausgeführt zu werden - zum Beispiel, wenn mehr Ressourcen benötigt werden, um Arbeitslastspitzen zu bewältigen.
  • In verschiedenen Ausführungsformen stellt der Stream-Manager des Stream-Processing-Systems eine dynamische und elastische Skalierung bereit, indem er feststellt, welche Teile eines Stream-Jobs überlastet sind, und nur diese Regionen parallelisiert. In weiteren Ausführungsformen - zum Beispiel mit Services zum Verteilen von Inhalten - kann der ganze Service einfach auf einer anderen Ressource maßstabsgetreu dupliziert werden. Darüber hinaus stellt der Stream-Manager im Gegensatz zu einer generischen Ressourcen-Lastausgleichsfunktion, die lediglich auf der Ressourcennutzung beruhend einen Lastausgleich vornimmt, oder einem System, das Ressourcen beruhend auf der Priorität terminiert, in verschiedenen Ausführungsformen fest, wo Verarbeitungseinheiten/-elemente ausgeführt werden sollen, um Kosten und Durchsatz für den Job zu optimieren.
  • In verschiedenen Ausführungsformen kann ein Administrator konfigurieren, welche Cloudumgebungen für eine Ausführung von zusätzlichen Verarbeitungseinheiten/- elementen in Frage kommen.
  • Einige Ausführungsformen der vorliegenden Erfindung stellen ein System zum Ausführen von Stream-Computing-Arbeitslasten über mehrere Cloudumgebungen hinweg in einem Multi-Cloud-System bereit. Das System umfasst eine Mehrzahl von Cloudumgebungen, die über jeweilige Stream-Computing-Instanzen verfügen, und einen Stream-Computing-Verwaltungsknoten, der mit einer jeden der Stream-Computing-Instanzen der Cloudumgebungen per Datenaustausch verbunden ist. Der Verwaltungsknoten ist so konfiguriert, dass er: (i) einen Stream-Computing-Job zur Verarbeitung empfängt, (ii) den Stream-Computing-Job in eine Mehrzahl von Verarbeitungselementen aufteilt, (iii) die Verarbeitungselemente an jeweilige Stream-Computing-Instanzen zur Ausführung verteilt und (iv) Ergebnisse aus den verteilten Verarbeitungselementen zusammenfasst und die konsolidierten Ergebnisse einem Benutzer bereitstellt. In einigen Ausführungsformen ist der Verwaltungsknoten des Weiteren so konfiguriert, dass er als Reaktion auf die Angabe, dass eine erste Stream-Computing-Instanz einer ersten Cloudumgebung ausgefallen ist, die Verarbeitungselemente der ersten Stream-Computing-Instanz einer zweiten Stream-Computing-Instanz einer zweiten Cloudumgebung neu zuweist. In einigen Ausführungsformen ist der Verwaltungsknoten des Weiteren so konfiguriert, dass er Metriken in Bezug auf eine jede der Stream-Computing-Instanzen auswertet und Verarbeitungselemente zwischen Stream-Computing-Instanzen beruhend auf der Auswertung dynamisch verteilt und/oder verschiebt.
  • IV. DEFINITIONEN
  • Vorliegende Erfindung: sollte nicht als ein absoluter Hinweis darauf verstanden werden, dass der durch den Begriff „vorliegende Erfindung“ beschriebene Gegenstand entweder durch die Ansprüche, wie eingereicht, oder durch die Ansprüche, die nach einer Patentverfolgung schließlich anhängig sind, abgedeckt ist; während der Begriff „vorliegende Erfindung“ verwendet wird, um dem Leser dabei zu helfen, ein allgemeines Gespür dafür zu bekommen, welche Offenbarungen hierin möglicherweise als neu angesehen werden, ist dieses Verständnis, wie durch die Verwendung des Begriffs „vorliegende Erfindung“ angegeben, vorläufig und provisorisch und unterliegt im Verlauf der Patentverfolgung Änderungen, wenn relevante Informationen entwickelt und die Ansprüche möglicherweise geändert werden.
  • Ausführungsform: siehe Definition von „vorliegende Erfindung“ oben - ähnliche Vorsichtshinweise gelten für den Begriff „Ausführungsform“.
  • und/oder: einschließendes oder; zum Beispiel A, B „und/oder“ C bedeutet, dass mindestens eines von A oder B oder C zutreffend und gültig ist.
  • Einschließlich bzw. darunter / umfassen / umfasst: Sofern nicht ausdrücklich anders angegeben, bedeutet dies „einschließlich, aber nicht unbedingt darauf beschränkt“.
  • Benutzer: umfasst, ohne unbedingt darauf beschränkt zu sein, das Folgende: (i) einen einzelnen Menschen; (ii) eine Kl-Entität mit ausreichend Intelligenz, um als ein Benutzer zu agieren; und/oder (iii) eine Gruppe von zusammengehörenden Benutzern.
  • Datenübertragung: Jede Art von jetzt bekanntem oder zukünftig zu entwickelndem Datenübertragungsschema, darunter drahtlose Übertragung, drahtgebundene Übertragung sowie Übertragungswege, die über drahtlose und drahtgebundene Teile verfügen; Datenübertragung ist nicht unbedingt beschränkt auf: (i) eine direkte Datenübertragung; (ii) eine indirekte Datenübertragung; und/oder (iii) eine Datenübertragung, bei der das Format, der Paketierungsstatus, der Datenträger, der Verschlüsselungsstatus und/oder das Protokoll über den gesamten Verlauf der Datenübertragung konstant bleiben.
  • Empfangen / bereitstellen / senden / eingeben / ausgeben / melden: Sofern nicht ausdrücklich anders angegeben, sollten diese Wörter nicht aufgefasst werden in der Bedeutung von: (i) einem bestimmten Grad der Direktheit in Bezug auf die Beziehung zwischen ihren Objekten und Subjekten; und/oder (ii) Nichtvorhandensein von unmittelbaren Komponenten, Aktionen und/oder Dingen, die zwischen ihren Objekten und Subjekten liegen.
  • Automatisch: ohne Intervention eines Menschen.
  • Modul / Submodul: Ein beliebiger Satz von Hardware, Firmware und/oder Software, der operativ funktioniert, um eine Art von Funktion auszuführen, ungeachtet dessen, ob das Modul: (i) sich in einer einzelnen lokalen Umgebung befindet; (ii) über einen weiten Bereich verteilt ist; (iii) sich in einer einzelnen Umgebung innerhalb eines größeren Teils von Softwarecode befindet; (iv) sich innerhalb eines einzelnen Teils von Softwarecode befindet; (v) sich in einer einzelnen Speichereinheit, einem einzelnen Hauptspeicher oder Datenträger befindet; (vi) mechanisch verbunden ist; (vii) elektrisch verbunden ist; und/oder (viii) bei der Datenübertragung verbunden ist.
  • Computer: Eine beliebige Einheit mit wichtigen Datenverarbeitungs- und/oder Funktionen zum Lesen von maschinenlesbaren Anweisungen, darunter, ohne darauf beschränkt zu sein: Desktop-Computer, Mainframe-Computer, Laptop-Computer, auf vor Ort programmierbaren Gatter-Anordnungen (FPGA, field-programmable gate arrays) beruhende Einheiten, Smartphones, elektronische Assistenten (PDAs, personal digital assistants), körpernah getragene oder eingefügte Computer, Computer in der Art einer integrierten Einheit, auf einer anwendungsspezifischen integrierten Schaltung (ASIC) beruhende Einheiten.

Claims (12)

  1. Durch einen Computer ausgeführtes Verfahren, das umfasst: Herstellen, durch einen Stream-Processing-Verwaltungsknoten, einer Datenübertragung zwischen dem Stream-Processing-Verwaltungsknoten und einer Mehrzahl von Stream-Processing-Instanzen, die in jeweiligen Datenverarbeitungsumgebungen in einem Datenverarbeitungssystem mit mehreren Umgebungen ausgeführt werden; Verteilen, durch den Stream-Processing-Verwaltungsknoten, von einer oder mehreren Verarbeitungseinheiten eines Stream-Processing-Jobs an einen ersten Satz von Stream-Processing-Instanzen der Mehrzahl von Stream-Processing-Instanzen; Empfangen, durch den Stream-Processing-Verwaltungsknoten, von der einen oder den mehreren Stream-Processing-Instanzen des ersten Satzes von Stream-Processing-Instanzen, von Verarbeitungsergebnissen, die zu der einen oder den mehreren Verarbeitungseinheiten des Stream-Processing-Jobs gehören; und Durchführen, durch den Stream-Processing-Verwaltungsknoten, einer auf Machine Learning beruhenden Stream-Verwaltungsoperation, wobei das Durchführen zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruht.
  2. Durch einen Computer ausgeführtes Verfahren nach Anspruch 1, wobei die auf Machine Learning beruhende Stream-Verwaltungsoperation ein Verteilen von einer oder mehreren Verarbeitungseinheiten eines neuen Stream-Processing-Jobs an einen zweiten Satz von Stream-Processing-Instanzen der Mehrzahl von Stream-Processing-Instanzen umfasst, wobei das Durchführen zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruht.
  3. Durch einen Computer ausgeführtes Verfahren nach Anspruch 1, wobei die auf Machine Learning beruhende Stream-Verwaltungsoperation ein Anweisen einer Verschiebung einer ersten Verarbeitungseinheit der verteilten einen oder mehreren Verarbeitungseinheiten von einer ersten Stream-Processing-Instanz an eine zweite Stream-Processing-Instanz umfasst, wobei das Durchführen zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruht.
  4. Durch einen Computer ausgeführtes Verfahren nach Anspruch 3, wobei die auf Machine Learning beruhende Stream-Verwaltungsoperation des Weiteren zumindest teilweise auf einem Angeben beruht, dass die erste Verarbeitungseinheit durch die erste Stream-Processing-Instanz beendet wurde.
  5. Durch einen Computer ausgeführtes Verfahren nach Anspruch 1, wobei die auf Machine Learning beruhende Stream-Verwaltungsoperation ein Vergrößern einer Breite einer parallelen Region umfasst, die zu dem Stream-Processing-Job gehört.
  6. Durch einen Computer ausgeführtes Verfahren nach Anspruch 5, wobei ein Vergrößern der Breite der parallelen Region, die zu dem Stream-Processing-Job gehört, ein Anweisen einer Erstellung von einem oder mehreren, zu einer Verarbeitungseinheit gehörenden neuen Kanälen umfasst, die auf einem dritten Satz von Stream-Processing-Instanzen der Mehrzahl von Stream-Processing-Instanzen ausgeführt werden sollen.
  7. Durch einen Computer ausgeführtes Verfahren nach Anspruch 1, wobei die auf Machine Learning beruhende Stream-Verwaltungsoperation des Weiteren zumindest teilweise auf Verarbeitungs- und/oder Speicheranforderungen der einen oder mehreren Verarbeitungseinheiten des Stream-Processing-Jobs beruht.
  8. Durch einen Computer ausgeführtes Verfahren nach Anspruch 1, wobei es sich bei dem Datenverarbeitungssystem mit mehreren Umgebungen um ein Multi-Cloud-System handelt, das über Cloud-Computing-Umgebungen von mindestens zwei verschiedenen Cloud-Computing-Anbietern verfügt.
  9. Durch einen Computer ausgeführtes Verfahren nach Anspruch 1, das des Weiteren umfasst: Trainieren, durch den Stream-Processing-Verwaltungsknoten, eines Machine-Learning-Modells zur Durchführung der auf Machine Learning beruhenden Stream-Verwaltungsoperation unter Verwendung der empfangenen Verarbeitungsergebnisse als Trainingsdaten.
  10. Computerprogrammprodukt, das ein oder mehrere durch einen Computer lesbare Speichermedien und Programmanweisungen aufweist, die gemeinsam auf dem einen oder den mehreren durch einen Computer lesbaren Speichermedien gespeichert sind, wobei die gespeicherten Programmanweisungen durch einen Stream-Processing-Verwaltungsknoten ausführbar sind, wobei die gespeicherten Programmanweisungen aufweisen: Programmanweisungen, um eine Datenübertragung zwischen dem Stream-Processing-Verwaltungsknoten und einer Mehrzahl von Stream-Processing-Instanzen herzustellen, die in jeweiligen Datenverarbeitungsumgebungen in einem Datenverarbeitungssystem mit mehreren Umgebungen ausgeführt werden; Programmanweisungen, um eine oder mehrere Verarbeitungseinheiten eines Stream-Processing-Jobs an einen ersten Satz von Stream-Processing-Instanzen der Mehrzahl von Stream-Processing-Instanzen zu verteilen; Programmanweisungen, um von der einen oder den mehreren Stream-Processing-Instanzen des ersten Satzes von Stream-Processing-Instanzen Verarbeitungsergebnisse zu empfangen, die zu der einen oder den mehreren Verarbeitungseinheiten des Stream-Processing-Jobs gehören; und Programmanweisungen, um eine auf Machine Learning beruhende Stream-Verwaltungsoperation zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruhend durchzuführen.
  11. Computerprogrammprodukt nach Anspruch 10, wobei die gespeicherten Programmanweisungen des Weiteren aufweisen: Programmanweisungen, um ein Machine-Learning-Modell so zu trainieren, dass es die auf Machine Learning beruhende Stream-Verwaltungsoperation unter Verwendung der empfangenen Verarbeitungsergebnisse als Trainingsdaten durchführt.
  12. Computersystem, das einen Stream-Processing-Verwaltungsknoten aufweist, der über einen Prozessorsatz und ein durch einen Computer lesbares Speichermedium verfügt, wobei: der Prozessorsatz so strukturiert, lokal angeordnet, angeschlossen und/oder programmiert ist, dass er auf dem durch einen Computer lesbaren Speichermedium gespeicherte Programmanweisungen ausführt; und die gespeicherten Programmanweisungen umfassen: Programmanweisungen, um eine Datenübertragung zwischen dem Stream-Processing-Verwaltungsknoten und einer Mehrzahl von Stream-Processing-Instanzen herzustellen, die in jeweiligen Datenverarbeitungsumgebungen in einem Datenverarbeitungssystem mit mehreren Umgebungen ausgeführt werden; Programmanweisungen, um eine oder mehrere Verarbeitungseinheiten eines Stream-Processing-Jobs an einen ersten Satz von Stream-Processing-Instanzen der Mehrzahl von Stream-Processing-Instanzen zu verteilen; Programmanweisungen, um von der einen oder den mehreren Stream-Processing-Instanzen des ersten Satzes von Stream-Processing-Instanzen Verarbeitungsergebnisse zu empfangen, die zu der einen oder den mehreren Verarbeitungseinheiten des Stream-Processing-Jobs gehören; und Programmanweisungen, um eine auf Machine Learning beruhende Stream-Verwaltungsoperation zumindest teilweise auf den empfangenen Verarbeitungsergebnissen beruhend durchzuführen.
DE102021129637.4A 2020-12-15 2021-11-15 Verteiltes stream-computing mit mehreren umgebungen Pending DE102021129637A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/122,197 2020-12-15
US17/122,197 US12079659B2 (en) 2020-12-15 2020-12-15 Selection of stream management operations based on machine learning in a distributed computing environment

Publications (1)

Publication Number Publication Date
DE102021129637A1 true DE102021129637A1 (de) 2022-06-15

Family

ID=79270024

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021129637.4A Pending DE102021129637A1 (de) 2020-12-15 2021-11-15 Verteiltes stream-computing mit mehreren umgebungen

Country Status (5)

Country Link
US (1) US12079659B2 (de)
JP (1) JP2022094947A (de)
CN (1) CN114637771A (de)
DE (1) DE102021129637A1 (de)
GB (1) GB2604703B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12079659B2 (en) 2020-12-15 2024-09-03 International Business Machines Corporation Selection of stream management operations based on machine learning in a distributed computing environment

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12112215B2 (en) * 2021-08-12 2024-10-08 Nec Corporation Data exchange and transformation in stream computing systems

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7889651B2 (en) * 2007-06-06 2011-02-15 International Business Machines Corporation Distributed joint admission control and dynamic resource allocation in stream processing networks
US8849971B2 (en) 2008-05-28 2014-09-30 Red Hat, Inc. Load balancing in cloud-based networks
US8060614B2 (en) * 2008-06-19 2011-11-15 Microsoft Corporation Streaming operator placement for distributed stream processing
US9037692B2 (en) 2008-11-26 2015-05-19 Red Hat, Inc. Multiple cloud marketplace aggregation
US10025627B2 (en) 2008-11-26 2018-07-17 Red Hat, Inc. On-demand cloud computing environments
US20110214124A1 (en) 2010-02-26 2011-09-01 James Michael Ferris Systems and methods for generating cross-cloud computing appliances
US9239864B2 (en) * 2012-04-17 2016-01-19 Cisco Technology, Inc. Distributing and processing streams over one or more networks
US9015339B2 (en) * 2012-04-25 2015-04-21 International Business Machines Corporation Monitoring streams buffering to optimize operator procressing
CN104052811B (zh) * 2014-06-17 2018-01-02 华为技术有限公司 一种业务调度的方法、装置及系统
CN104065663A (zh) 2014-07-01 2014-09-24 复旦大学 一种基于混合云调度模型的自动伸缩、费用优化的内容分发服务方法
US20160071027A1 (en) * 2014-09-08 2016-03-10 Pivotal Software, Inc. Compute intensive stream processing with concept drift detection
US10671916B1 (en) * 2015-09-29 2020-06-02 DataRobot, Inc. Systems and methods to execute efficiently a plurality of machine learning processes
US10122788B2 (en) * 2016-03-29 2018-11-06 Amazon Technologies, Inc. Managed function execution for processing data streams in real time
CN106961616B (zh) 2017-03-06 2020-03-27 中山大学 一种多cdn辅助的多层云的直播分发系统
US10269088B2 (en) 2017-04-21 2019-04-23 Intel Corporation Dynamic thread execution arbitration
CN107241384B (zh) 2017-05-03 2020-11-03 复旦大学 一种基于多云架构的内容分发服务资源优化调度方法
KR102263361B1 (ko) 2017-06-15 2021-06-11 한국전자통신연구원 다중 클라우드 기반의 클라우드 브로커리지 서비스 제공 장치 및 그 방법
US10262271B1 (en) * 2018-02-14 2019-04-16 DataTron Technologies Inc. Systems and methods for modeling machine learning and data analytics
US20190354809A1 (en) * 2018-05-21 2019-11-21 State Street Corporation Computational model management
US11443228B2 (en) 2018-06-21 2022-09-13 International Business Machines Corporation Job merging for machine and deep learning hyperparameter tuning
US10776164B2 (en) * 2018-11-30 2020-09-15 EMC IP Holding Company LLC Dynamic composition of data pipeline in accelerator-as-a-service computing environment
US10873533B1 (en) * 2019-09-04 2020-12-22 Cisco Technology, Inc. Traffic class-specific congestion signatures for improving traffic shaping and other network operations
US11797340B2 (en) * 2020-05-14 2023-10-24 Hewlett Packard Enterprise Development Lp Systems and methods of resource configuration optimization for machine learning workloads
US11487588B2 (en) * 2020-06-30 2022-11-01 Microsoft Technology Licensing, Llc Auto-sizing for stream processing applications
US12050998B2 (en) * 2020-09-02 2024-07-30 Hewlett Packard Enterprise Development Lp Systems and methods for intelligent data shuffling for high-performance distributed machine learning training
US12079659B2 (en) 2020-12-15 2024-09-03 International Business Machines Corporation Selection of stream management operations based on machine learning in a distributed computing environment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12079659B2 (en) 2020-12-15 2024-09-03 International Business Machines Corporation Selection of stream management operations based on machine learning in a distributed computing environment

Also Published As

Publication number Publication date
GB2604703A (en) 2022-09-14
GB2604703B (en) 2023-05-31
JP2022094947A (ja) 2022-06-27
GB202117265D0 (en) 2022-01-12
CN114637771A (zh) 2022-06-17
US20220188149A1 (en) 2022-06-16
US12079659B2 (en) 2024-09-03

Similar Documents

Publication Publication Date Title
DE112012000444B4 (de) Verfahren, System und Computerprogrammprodukt zum Ermitteln einer optimalen Datenverarbeitungsumgebung zum Ausführen eines Abbildes sowie Verfahren zum Implementieren eines entsprechenden Systems
DE112018004349T5 (de) Dynamische auswahl von bereitstellungskonfigurationen von softwareanwendungen
DE112021006130T5 (de) Automatisierte orchestrierung von containern durch bewerten von mikrodiensten
DE112020005323B4 (de) Elastische ausführung von machine-learning-arbeitslasten unter verwendung einer anwendungsbasierten profilierung
DE112011103522T5 (de) Erstellung eines Multidimensionalen Modells von Software-Angeboten
DE102013205572A1 (de) Verwenden von softwarekomponenten-metadaten zum bereitstellen von virtuellen maschinen in einer vernetzten datenverarbeitungsumgebung
DE112021005636T5 (de) Migrieren von komplexen legacy-anwendungen
DE112018005898T5 (de) Dynamische bereitstellung von software-funktionen
DE112021003401T5 (de) Schattenexperimente für serverlose multi-tenant-cloud-dienste
DE112021002572T5 (de) Multikriterielles optimieren von anwendungen
DE112021000390T5 (de) Anpassen der leistung eines datenverarbeitungssystems
DE102021127254A1 (de) Inhaltssensitives Auswählen von Knoten zum Erstellen von Containern
DE102021129637A1 (de) Verteiltes stream-computing mit mehreren umgebungen
DE112021004577T5 (de) Verwalten eines aufgabenablaufs in einer edge-datenverarbeitungsumgebung
DE112020003744T5 (de) Durch dienstqualitätskriterien vorgegebenes automatisiertes betriebsdatenmanagement
DE102021130359A1 (de) Ressourcenzuordnung auf der grundlage eines kontextbezogenen szenarios
DE112020005306T5 (de) Implementierung von arbeitslasten in einer multi-cloud-umgebung
DE102021125182A1 (de) Gemeinsam genutzte unternehmenscloud
DE102021122508A1 (de) Ausgleichen von grossrechner- und verteilten arbeitslasten auf der grundlage von leistung und kosten
DE112020003312T5 (de) Speicherzuweisungserweiterung von mikrodiensten
DE112022002615T5 (de) Kontinuierliche funktionsfähigkeit und integrität von anwendungen während eines migrationsvorgangs
DE112021003402T5 (de) Blockchain-verwaltung von bereitstellungsfehlern
DE112022000406T5 (de) Überwachen eines allgemeinzustands eines grossen cloud-computing-systems
DE112021005848T5 (de) Koordinieren von in einer skalierbaren anwendung umgesetzten anfragen
DE112018004415B4 (de) Optimierung von cloud-ressourcen bei operationen in mehrstufigem speicher auf richtliniengrundlage

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence