-
HINTERGRUND
-
Die vorliegende Erfindung betrifft allgemein ein Verfahren, ein System und ein Computerprogramm zum Verwalten einer Zuweisung von Datenverarbeitungsressourcen in einem Server-Cluster. Insbesondere betrifft die vorliegende Erfindung ein Verfahren, ein System und ein Computerprogrammprodukt für eine Tag-gesteuerte Planung von Datenverarbeitungsressourcen zur Funktionsausführung.
-
Eine serverlose Datenverarbeitung bezieht sich auf ein Datenverarbeitungsmodell, in dem Entwickler Code auf entfernt angeordneten Servern auf bedarfsgerechter Grundlage ausführen können. Dieser Typ von Datenverarbeitungsmodell wird in der Regal als Cloud Computing bezeichnet. Cloud Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion bei einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können.
-
Viele Anbieter von Cloud-Computing-Diensten bieten jetzt eine Funktion als Function-as-a-Service (FaaS) an. FaaS ermöglicht Software-Entwicklern, Anwendungen in viele sehr viel kleinere Komponenten oder „Funktionen“ zu unterteilen, die nach Bedarf aufgerufen werden können, ohne den dezidierten Dienst-Prozess der gesamten Anwendung auszuführen. Das FaaS-Framework abstrahiert Server auch vollkommen abseits von Entwicklern, wodurch Entwickler die Möglichkeit haben, Funktionen frei von dem Verwaltungsaufwand für Infrastruktur und Ressourcen bereitzustellen, der ansonsten für ein Hosten einer über ein Netzwerk zugänglichen Anwendung notwendig wäre.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Die veranschaulichenden Ausführungsformen stellen eine Tag-gesteuerte Planung von Datenverarbeitungsressourcen zur Funktionsausführung bereit. Eine Ausführungsform umfasst ein Extrahieren, durch einen Scheduler, von Funktions-Tag-Daten, die einer Funktion zugehörig sind, die durch eine Bereitstellungsanforderung identifiziert wurde. Die Ausführungsform umfasst auch ein Auswählen, durch den Scheduler, einer Datenverarbeitungseinheit in einem Server-Cluster, um die Funktionen zumindest teilweise auf Grundlage eines Vergleiches der Funktions-Tag-Daten und der Host-Tag-Daten zu hosten, die der Datenverarbeitungseinheit zugehörig sind. Die Ausführungsform umfasst auch ein Ausgeben, durch den Scheduler, einer Anweisung an die Datenverarbeitungseinheit, wobei das Ausgeben der Anweisung eine Zuweisung von Ressourcen für ein Hosten einer Ausführung der Funktion veranlasst. Andere Ausführungsformen dieses Aspekts umfassen entsprechende Computersysteme, Vorrichtungen und Computerprogramme, die auf einer oder mehreren Computer-Speichereinheiten aufgezeichnet sind, die jeweils konfiguriert sind, die Aktionen der Ausführungsform durchzuführen.
-
Eine Ausführungsform umfasst ein durch einen Computer verwendbares Programmprodukt. Das durch einen Computer verwendbare Programmprodukt umfasst ein durch einen Computer lesbares Speichermedium und Programmanweisungen, die auf dem Speichermedium gespeichert sind.
-
Eine Ausführungsform umfasst ein Computersystem. Das Computersystem umfasst einen Prozessor, einen durch einen Computer lesbaren Arbeitsspeicher und ein durch einen Computer lesbares Speichermedium und Programmanweisungen, die auf dem Speichermedium zur Ausführung durch den Prozessor über den Arbeitsspeicher gespeichert sind.
-
Figurenliste
-
Die neuartigen Merkmale, die für die Erfindung als kennzeichnend erachtet werden, werden in den Ansprüchen im Anhang dargelegt. Die Erfindung selbst sowie ein bevorzugter Verwendungsmodus, weitere ihrer Ziele und Vorteile sind jedoch am besten unter Bezugnahme auf die folgende ausführliche Beschreibung der veranschaulichenden Ausführungsformen zu verstehen, wenn sie in Verbindung mit den begleitenden Zeichnungen gelesen wird, wobei:
- 1 eine Cloud-Computing-Umgebung gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 2 Abstraktionsmodellschichten gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
- 3 ein Blockschaubild eines beispielhaften Systems darstellt, das eine Planungsanwendung gemäß einer veranschaulichenden Ausführungsform aufweist;
- 4 ein Blockschaubild eines beispielhaften Systems darstellt, das eine Planungsanwendung aufweist, die eine Funktion gemäß einer veranschaulichenden Ausführungsform bereitstellt;
- 5 ein Blockschaubild eines beispielhaften Systems darstellt, das eine Planungsanwendung in Reaktion auf einen Funktionsaufruf gemäß einer veranschaulichenden Ausführungsform aufweist;
- 6 einen Ablaufplan eines beispielhaften Prozesses für eine Tag-gesteuerte Planung von Datenverarbeitungsressourcen zur Funktionsausführung gemäß einer veranschaulichenden Ausführungsform darstellt;
- 7 ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen darstellt, in denen veranschaulichende Ausführungsformen umgesetzt werden können; und
- 8 ein Blockschaubild eines Datenverarbeitungssystems darstellt, in dem veranschaulichende Ausführungsformen umgesetzt werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Function as a Service wird aus vielen Gründen immer beliebter. Zum Beispiel bietet ein Verwenden des FaaS-Modells eine flexible Möglichkeit, der Architektur einer Anwendung Skalierbarkeit und Stabilität hinzuzufügen. Eine Umstellung von vorhandenen Anwendungen auf eine FaaS-Architektur kann außerdem Kosten senken, da Datenverarbeitungsressourcen in der Regel gemäß den Anforderungen einer Anwendung zugewiesen werden. Die FaaS-Architektur ist automatisch skalierbar, wodurch eine Anwendung die Möglichkeit zu einer Erweiterung erhält, um sich an Spitzenlasten im Datenverkehr oder der Arbeitslast anzupassen und die Skalierung anschließend wieder zurückzufahren, wenn der Datenverkehr oder die Arbeitslast schwächer wird, wodurch ein Verhindern einer Ausfallzeit der Anwendung unterstützt und ein Kostenaufwand für unnötige Ausgaben gesenkt wird, um die Reduzierung von Kosten zu unterstützen. FaaS entlastet Entwickler auch von dem Wartungsaufwand für Server und vernetzte Ausrüstung, sodass sie sich auf die Anwendungsentwicklung konzentrieren können.
-
Zwar machen diese Vorteile eine FaaS-Architektur zu einer interessanten Bereitstellungsoption, doch erkennen die vorliegenden Ausführungsformen, dass in einigen Fällen die Leistung einer Funktion von einer Menge oder einem Typ von verfügbaren Host-Ressourcen abhängt. Der Begriff „Host-Ressourcen“, wie hierin verwendet, bezieht sich auf Ressourcen auf einer Cloud-Hosting-Einheit, die zur Verwendung durch eine Funktion verfügbar sind, die auf dem Host ausgeführt wird, und die Computer-Ressourcen (z.B. Typ oder Anzahl von CPUs und/oder GPUs), vernetzte Ressourcen (z.B. Bandbreite, SmartNICfähig), Speicherressourcen (z.B. RAM-Menge, Verfügbarkeit von VRAM, SSD oder optischen Laufwerk) und Ressourcen anderer E/A-Einheiten umfassen.
-
Einer der Hauptvorteile von FaaS besteht darin, dass ein Entwickler eine Funktion definieren und für sie festlegen kann, dass sie ohne Berücksichtigung der Plattform bereitgestellt wird und die Cloud-Infrastruktur die Funktion bereitstellt und nach Bedarf skaliert. Leider bedeutet diese Vereinfachung, dass der Eigentümer der Funktion der Cloud-Infrastruktur nicht die Informationen gibt, die sie für ein adäquates Optimieren der Funktion braucht. Zum Beispiel wird eine Funktion, die eine Schulungsroutine für künstliche Intelligenz (KI) durchführt, mit einem FaaS-Anbieter bereitgestellt, ohne dass dem FaaS-Anbieter bekannt ist, um welchen Typ von Funktion es sich handelt, sodass der FaaS-Anbieter die Funktion für ein Ausführen auf einer Datenverarbeitungsplattform planen kann, der Beschleuniger oder andere Vorteile zum Ausführen der KI-Arbeitslast fehlen. Das bedeutet, dass die sich daraus ergebenden Ausführungszeiten der Funktion potenziell Größenordnungen aufweisen könnten, die kleiner wären, wenn die Funktion für einen besser geeigneten Datenverarbeitungsknoten geplant worden wäre (z.B. mit einer GPU).
-
Die veranschaulichten Ausführungsformen sprechen diese Probleme an, indem sie eine Tag-gesteuerte Planung von Datenverarbeitungsressourcen zur Funktionsausführung bereitstellen. In der veranschaulichten Ausführungsform umfasst die Tag-gesteuerte Planung die Verwendung von Funktionsplatzierungs-Tags in dem FaaS-Lebenszyklus. Zum Beispiel wird in einigen Ausführungsformen ein klar definierter Satz von Funktionsplatzierungs-„Tags“ erstellt und von Funktions-Entwicklern und FaaS-Anbietern verwendet, der sowohl den Datenverarbeitungsknoten der Infrastruktur (durch IT-Administratoren) als auch Funktions-Containern (durch Funktions-Entwickler) zugewiesen werden kann. In einigen derartigen Ausführungsformen werden die Tags anschließend als ein Mechanismus zum Abgleichen (oder Nicht-Abgleichen) von Funktionen mit den am besten geeigneten Infrastruktur-Knoten verwendet. In einigen Ausführungsformen können die Tags für eine höhere Flexibilität zusätzliche Metadaten in Bezug auf Voreinstellungen oder Anforderungen für Affinität/Anti-Affinität umfassen, und/oder können zusätzliche Metadaten in Bezug auf Aspekte des Tag-Abgleichens umfassen, das obligatorisch ist oder nur bevorzugt wird.
-
Veranschaulichende Ausführungsformen, die eine Tag-gesteuerte Planung von Datenverarbeitungsressourcen bereitstellen, ermöglichen eine verbesserte Server-Auswahl durch Bereitstellen von Funktionen mit dem am besten geeigneten oder am besten verfügbaren zugrunde liegenden Datenverarbeitungsknoten (z.B. in Bezug auf Ausführungsgeschwindigkeit und/oder Bereitstellungskosten). Durch Verwenden der Informationen der Platzierungs-Tags speichert die Cloud-Infrastruktur Informationen zu zugehörigen Platzierungsrichtlinien für die Funktion derart, wie die Funktion platziert ist, die Cloud-Infrastruktur verwendet die bereitgestellten Informationen des Platzierungs-Tags zusammen mit anderen Informationen, die sie sammelt, wie zum Beispiel eine erwartete Laufzeit für alternative Plattformen, Kosten pro Zeiteinheit für alternative Plattformen, Ressourcenverfügbarkeit, Zeitersparnis durch Ausführen auf derselben Maschine wie bei der vorherigen Ausführung (Affinität) usw., um die bestmögliche verfügbare Server-Platzierung für die Funktion zu bestimmen. Im Interesse der Klarheit werden die folgenden, nicht einschränkenden Beispiele von Tags für eine Funktion oder für einen Host bereitgestellt.
Ressource | Funktions-Tag | Host-Tag |
GPU vorhanden | exploit-gpu | has-gpu=true |
64-Bit-Architektur | commodity | arch=x86-64 |
Flash-Arbeitsspeicher | flash_storage | storage=flash-attached |
SSD-Laufwerk | ssd_storage | storage=ssd-attached |
FPGA vorhanden | exploit-fpga | has-fpga=true |
SmartNIC-Netzwerkadapter | smart_nic | network=sma rt-nic-attached |
-
Zahlreiche andere Tags können zusätzlich und/oder als Alternativen zu den oben genannten Beispielen verwendet werden. In einigen Ausführungsformen stellt ein Anbieter von FaaS-Diensten oder eine andere Entität eine Liste von Funktions-Tags bereit, die Entwickler verwenden können, die durch den FaaS-Dienst erkannt werden. In einigen Ausführungsformen können die Tags modifiziert werden, um anzugeben, ob das Funktions-Tag obligatorisch, bevorzugt oder optional ist. Zum Beispiel kann in einigen Ausführungsformen ein Ausrufezeichen am Ende des Tags hinzugefügt werden, um anzugeben, dass das Funktions-Tag obligatorisch ist. In einigen Ausführungsformen können die Tags modifiziert werden, um eine Prioritätsreihenfolge für mehrere Tags anzugeben.
-
In einer veranschaulichenden Ausführungsform umfasst ein System, das FaaS-Dienste anbietet, einen Datenverarbeitungsressourcen-Manager oder Cloud-Manager und verwaltet mehrere Datenverwaltungsressourcen. In einigen Ausführungsformen umfasst der Datenverarbeitungsressourcen-Manager eine Benutzerschnittstelle und ein Planungsmodul. In einigen Ausführungsformen ermöglicht der Datenverarbeitungsressourcen-Manager einem entfernt angeordneten Benutzer, wie zum Beispiel einem Anwendungs-Entwickler, eine Bereitstellungsanforderung über die Benutzerschnittstelle an den Datenverarbeitungsressourcen-Manager zu übermitteln. Der Datenverarbeitungsressourcen-Manager antwortet auf die Bereitstellungsanforderung mithilfe eines Tag-Interpreters durch Bereitstellen der Funktion auf einer Datenverarbeitungsressource.
-
In einigen Ausführungsformen prüft derTag-Interpreter die Bereitstellungsanforderung auf Funktions-Tag-Daten, die für Platzierungs-Tags für die zur Bereitstellung gesuchte Funktion repräsentativ sind. Wenn irgendwelche Tags gefunden werden, sucht der Tag-Interpreter nach Datenverarbeitungsressourcen mit übereinstimmenden oder entsprechenden Host-Tag-Daten. Zum Beispiel werden in einigen Ausführungsformen Host-Tags für alle Datenverarbeitungsressourcen in einer Datenbank gespeichert, wobei der Tag-Interpreter in diesem Fall die Datenbank nach übereinstimmenden Tag-Daten abfragt. In anderen Ausführungsformen fragt der Tag-Interpreter Datenverarbeitungsressourcen nach Tags ab. In einigen derartigen Ausführungsformen prüft der Tag-Interpreter nur Datenverarbeitungsressourcen, von denen bekannt ist, dass sie Kapazität haben, und die andere Kriterien erfüllen, die relevant sein können, wie zum Beispiel Affinitäts-/Anti-Affinitäts- oder Geolokalisierungsregeln. Zum Beispiel kann der Tag-Interpreter in einigen Ausführungsformen ein derartige Liste von dem Datenverarbeitungsressourcen-Manager oder von einem Planungsmodul empfangen.
-
In einigen Ausführungsformen stellt der Datenverarbeitungsressourcen-Manager eine Platzierung von Funktionen auf physischen Computer-Ressourcen auf Grundlage von Kollokationsregeln, situationsbedingten Durchsetzungsrichtlinien und Tag-Abgleichsregeln bereit, die durch einen Systemadministrator eingerichtet wurden. Tag-Abgleichsregeln sind Regeln, die angeben, wie Funktions-Tag-Daten und Host-Tag-Daten verglichen und berücksichtigt werden sollten, wenn ein Server zum Hosten einer Funktion ausgewählt wird, einschließlich dessen, wann und ob eine harte oder sanfte Durchsetzung der Tag-Abgleichsregel aufgerufen werden soll. Eine harte Durchsetzung einer Tag-Abgleichsregel kann bedeuten, dass ein Host-Server einen bestimmten Aspekt der Funktions-Tag-Daten, die trotz der Umstände oder der Situation streng durchgesetzt werden, erfüllen muss, um die zugehörige Funktion zu hosten. Im Gegensatz dazu bedeutet eine sanfte Durchsetzung, dass ein Host-Server nicht notwendigerweise einen Aspekt der Funktions-Tag-Daten erfüllen muss, um die zugehörige Funktion zu hosten, und somit kann die Platzierung der Funktion nach Ermessen des Scheduler-Mechanismus erfolgen, ungeachtet der Funktions-Tag-Daten, die der platzierten Funktion entsprechen.
-
In einigen Ausführungsformen stellt der Manger der Computer-Ressourcen die Funktion für eine Datenverarbeitungsressource durch Verwenden eines Planungsmoduls auf Grundlage einer Erfüllung von verschiedenen Regeln und Richtlinien bereit, einschließlich der Tag-Abgleichsregeln. Das Planungsmodul gibt in einigen Ausführungsformen eine Anweisung an die Datenverarbeitungsressource aus, die Ressourcen zum Hosten einer Ausführung der Funktion zuzuweisen. In einigen Ausführungsformen verwaltet das Planungsmodul eine Ressourcendatenbank oder dergleichen, die angibt, wo verschiedene Funktionen bereitgestellt worden sind. In einigen Ausführungsformen umfasst die Ressourcendatenbank Funktionskennungen für jede Funktion und Ressourcenkennungen für jede Datenverarbeitungsressource, und ordnet jeder Funktion die spezifische Datenverarbeitungsressource zu, auf der die Funktion gehostet wird.
-
In einigen Ausführungsformen ermöglicht der Datenverarbeitungsressourcen-Manager einer entfernt angeordnete Benutzereinheit, einen Funktionsaufruf an den Datenverarbeitungsressourcen-Manager zu übermitteln. Zum Beispiel kann die entfernt angeordnete Benutzereinheit ein Datenverarbeitungssystem, ein Server oder eine Client-Einheit, wie in Verbindung mit 7 und 8 beschrieben, ein Computer, ein Smartphone oder eine loT-Einheit sein. In einigen Ausführungsformen umfasst der Funktionsaufruf einen Verweis auf eine Funktion, die Funktions-Tag-Daten umfasst.
-
Wenn in einigen Ausführungsformen eine Funktion aufgerufen wird, kann sich die Funktion entweder in einem ruhenden Zustand befinden und in einem Arbeitsspeicher gespeichert sein oder kann bereitgestellt sein und auf einer Datenverarbeitungsressource ausgeführt werden. Wenn die Funktion bereits bereitgestellt worden ist, verweist das Planungsmodul den Funktionsaufruf an die Host-Datenverarbeitungsressource zur Ausführung der Funktion in Reaktion auf den Funktionsaufruf. Wenn andererseits die aufgerufene Funktion nicht bereitgestellt worden ist, antwortet das Planungsmodul auf den Funktionsaufruf durch ein Durchführen einer Platzierung der Funktion auf einer verfügbaren Datenverarbeitungsressource aus einer Mehrzahl von Datenverarbeitungsressourcen.
-
Wenn in einigen Ausführungsformen der Datenverarbeitungsressourcen-Manager einen Funktionsaufruf empfängt, und das Planungsmodul vorher eine Datenverarbeitungsressource für ein Hosten der aufgerufenen Funktion ausgewählt hat, prüft der Datenverarbeitungsressourcen-Manager gespeicherte Informationen in einer Ressourcendatenbank, um zu bestimmen, wo die aufgerufene Funktion zugewiesen worden ist (z.B. zu welcher Datenverarbeitungsressource). In einigen derartigen Ausführungsformen empfängt das Planungsmodul Informationen von der Ressourcendatenbank, die angeben, dass die Funktion einer bestimmten Datenverarbeitungsressource zugewiesen ist. In einigen derartigen Ausführungsformen benachrichtigt das Planungsmodul die bestimmte Datenverarbeitungsressource über den Funktionsaufrufs und leitet den Funktionsaufruf an die bestimmte Datenverarbeitungsressource weiter. In einigen derartigen Ausführungsformen antwortet die Datenverarbeitungsressource auf die Benachrichtigung von dem Planungsmodul durch Zuweisen von Speicherplatz im Arbeitsspeicher zum Hosten der Funktion und leitet den Funktionsaufruf an einen Funktions-Host weiter, der den Funktionsaufruf empfängt und die Ausführung der Funktion in Reaktion auf den Funktionsaufruf bearbeitet.
-
Wenn der Datenverarbeitungsressourcen-Manager in einigen Ausführungsformen einen Funktionsaufruf empfängt, wenn die Funktion keiner Datenverarbeitungsressource zugewiesen worden ist, wählt das Planungsmodul eine Datenverarbeitungsressource auf Grundlage von verschiedenen situationsbedingten Durchsetzungsrichtlinien, wie beispielweise Server-Verfügbarkeit, geografische Nähe zu einer Client-Einheit, die die Funktion aufruft, und Lastausgleichrichtlinien sowie Tag-Abgleichsregeln aus. In einigen Ausführungsformen umfasst die Datenverarbeitungsressource einen Arbeitsspeicher, der eine bereitgestellte Funktion und Tag-Daten von Datenverarbeitungsressourcen speichert, die ein Beispiel für Host-Tag-Daten sind. In einigen Ausführungsformen umfasst die Datenverarbeitungsressource auch eine Systemschnittstelle, die mit einer Systemschnittstelle des Datenverarbeitungsressourcen-Managers Daten austauscht. Zum Beispiel kann die Datenverarbeitungsressource in einigen Ausführungsformen die Tag-Daten von der Datenverarbeitungsressource anfordern und die Tag-Daten zusammen mit Host-Tag-Daten von anderen Datenverarbeitungsressourcen als Tag-Daten von Datenverarbeitungsressourcen in einer Datenbank speichern.
-
Wenn ein Datenverarbeitungsressourcen-Manager in einigen Ausführungsformen einen Funktionsaufruf empfängt, antwortet ein Planungsmodul auf den Funktionsaufruf durch ein Verwenden eines Tag-Interpreters, um die Funktions-Tag-Daten, die der aufgerufenen Funktion zugehörig sind, mit den Tag-Daten für verschiedene Datenverarbeitungsressourcen, einschließlich der Datenverarbeitungsressource, zu vergleichen Nach einem Auswählen einer Datenverarbeitungsressource zur Bereitstellung einer Funktion benachrichtigt das Planungsmodul die Datenverarbeitungsressource über die Funktionsbereitstellung und den Funktionsaufruf und leitet den Funktionsaufruf an die Datenverarbeitungsressource weiter. In einigen derartigen Ausführungsformen antwortet die Datenverarbeitungsressource auf die Benachrichtigung von dem Planungsmodul durch Zuweisen von Speicherplatz im Arbeitsspeicher zum Hosten der Funktion und leitet den Funktionsaufruf an einen Funktions-Host weiter, der den Funktionsaufruf empfängt und die Ausführung der Funktion in Reaktion auf den Funktionsaufruf bearbeitet.
-
Im Interesse der Klarheit der Beschreibung, und ohne irgendeine Einschränkung zu implizieren, werden die veranschaulichenden Ausführungsformen durch Verwenden einiger Beispielkonfigurationen beschrieben. Aus dieser Offenbarung sind für den Fachmann viele Änderungen, Anpassungen und Modifizierungen einer beschriebenen Konfiguration vorstellbar, um einen beschriebenen Zweck zu erreichen, und diese werden als innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen berücksichtigt.
-
Ferner werden vereinfachte Darstellungen der Datenverarbeitungsumgebungen in den Figuren und den veranschaulichten Ausführungsformen verwendet. In einer tatsächlichen Datenverarbeitungsumgebung können zusätzliche Strukturen oder Komponenten, die hierin nicht gezeigt oder beschrieben wurden, oder Strukturen oder Komponenten, die sich von den gezeigten unterscheiden, aber für eine ähnliche Funktion wie hierin beschrieben vorhanden sein, ohne vom Schutzumfang der veranschaulichenden Ausführungsformen abzuweichen.
-
Ferner werden die veranschaulichenden Ausführungsformen in Bezug auf spezifische tatsächliche oder hypothetische Komponenten nur zu Beispielzwecken beschrieben. Die durch die verschiedenen veranschaulichenden Ausführungsformen beschriebenen Schritte können angepasst werden, um Erklärungen für Entscheidungen bereitzustellen, die zum Beispiel von einem Maschinenlern-Klassifizierermodell getroffen werden.
-
Alle spezifischen Erscheinungsformen von diesen und anderen ähnlichen Artefakten sind nicht als Einschränkung der Erfindung aufzufassen. Jede geeignete Erscheinungsform von diesen und anderen ähnlichen Artefakten kann innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen ausgewählt werden.
-
Die Beispiele in dieser Offenbarung werden nur zur Verdeutlichung der Beschreibung verwendet und schränken die veranschaulichenden Ausführungsformen nicht ein. Alle hierin aufgelisteten Vorteile sind nur Beispiele und sind nicht als Einschränkung auf die veranschaulichenden Ausführungsformen aufzufassen. Weitere oder verschiedene Vorteile können durch spezifische veranschaulichende Ausführungsformen verwirklicht werden. Ferner kann eine bestimmte veranschaulichende Ausführungsform einige, alle oder gar keine der oben aufgeführten Vorteile aufweisen.
-
Ferner können die veranschaulichenden Ausführungsformen in Bezug auf jeden Typ von Daten, Datenquelle oder Zugang zu einer Datenquelle über ein Datennetzwerk umgesetzt werden. Jeder Typ einer Datenspeichereinheit kann die Daten für eine Ausführungsform der Erfindung innerhalb des Schutzumfangs der Erfindung bereitstellen, entweder lokal auf einem Datenverarbeitungssystem oder über ein Datennetzwerk. In Fällen, in denen eine Ausführungsform durch Verwenden einer mobilen Einheit beschrieben wird, kann jeder Typ einer Datenspeichereinheit, der für ein Verwenden mit der mobilen Einheit geeignet ist, die Daten für eine derartige Ausführungsform innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen entweder lokal auf der mobilen Einheit oder über ein Datennetzwerk bereitstellen.
-
Die veranschaulichenden Ausführungsformen werden durch Verwenden von spezifischem Code, kontrastreichen Erklärungen, einem durch einen Computer lesbaren Speichermedium, Merkmalen auf höchster Ebene, historischen Daten, Auslegungen, Architekturen, Protokollen, Layouts, Schemaplänen und Werkzeugen nur zu Beispielzwecken beschrieben und sind nicht auf die veranschaulichenden Ausführungsformen beschränkt. Ferner werden die veranschaulichenden Ausführungsformen in einigen Fällen durch ein Verwenden von bestimmter Software, von Werkzeugen und Datenverarbeitungsumgebungen nur zu Beispielzwecken zur Verdeutlichung der Beschreibung beschrieben. Die veranschaulichenden Ausführungsformen können in Verbindung mit anderen vergleichbaren oder ähnlich ausgelegten Strukturen, Systemen, Anwendungen oder Architekturen verwendet werden. Zum Beispiel können andere vergleichbare mobile Einheiten, Strukturen, Systeme, Anwendungen oder Architekturen dafür in Verbindung mit einer derartigen Ausführungsform der Erfindung innerhalb des Schutzumfangs der Erfindung verwendet werden. Eine veranschaulichende Ausführungsform kann in Hardware, Software, Firmware oder einer Kombination davon umgesetzt werden.
-
Die Beispiele in dieser Offenbarung werden nur zur Verdeutlichung der Beschreibung verwendet und schränken die veranschaulichenden Ausführungsformen nicht ein. Zusätzliche Daten, Operationen, Aktionen, Aufgaben, Aktivitäten und Manipulationen sind von dieser Offenbarung ausgehend denkbar, und dieselben werden innerhalb des Schutzumfang der veranschaulichenden Ausführungsformen in Betracht gezogen.
-
Alle hierin aufgelisteten Vorteile sind nur Beispiele und sind nicht als Einschränkung auf die veranschaulichenden Ausführungsformen aufzufassen. Weitere oder verschiedene Vorteile können durch spezifische veranschaulichende Ausführungsformen verwirklicht werden. Ferner kann eine bestimmte veranschaulichende Ausführungsform einige, alle oder gar keine der oben aufgeführten Vorteile aufweisen.
-
Obwohl diese Offenbarung eine ausführliche Beschreibung von Cloud Computing enthält, sollte klar sein, dass die Umsetzung der hierin angeführten Lehren nicht auf eine Cloud-Computing-Umgebung beschränkt ist. Stattdessen können Ausführungsformen der vorliegenden Erfindung gemeinsam mit jedem beliebigen Typ von jetzt bekannter oder später entwickelter Datenverarbeitungsumgebung umgesetzt werden.
-
Cloud Computing ist ein Dienstbereitstellungsmodell zum Ermöglichen eines problemlosen bedarfsgesteuerten Netzwerkzugriffs auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können. Dieses Cloud-Modell kann mindestens fünf Eigenschaften, mindestens drei Dienstmodelle und mindestens vier Nutzungsmodelle umfassen.
-
Die Eigenschaften sind wie folgt:
-
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 des Dienstes 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). Der Ressourcen-Verbrauch kann überwacht, gesteuert und gemeldet werden, wodurch sowohl für den Anbieter als auch für den Nutzer des verwendeten Dienstes Transparenz geschaffen wird.
-
Die Dienstmodelle sind wie folgt:
-
Software as a Service (SaaS): Die für den Nutzer bereitgestellte Funktion besteht darin, die in einer Cloud-Infrastruktur ausgeführten Anwendungen des Anbieters zu verwenden. Die Anwendungen sind über eine Thin-Client-Schnittstelle wie einen Web-Browser (z.B. eine auf dem Web beruhende eMail) 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, Verarbeitung, 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 eingeschränkte Kontrolle über ausgewählte Netzwerkkomponenten (z.B. Host-Firewalls).
-
Die Nutzungsmodelle sind wie folgt:
-
Private Cloud: Die Cloud-Infrastruktur wird ausschließlich für eine Organisation betrieben. Sie kann von der Organisation oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb von Geschäftsräumen vorhanden sein.
-
Community Cloud: Die Cloud-Infrastruktur wird von mehreren Organisationen gemeinsam genutzt und unterstützt eine bestimmte Community, die gemeinsame Problemstellungen hat (z.B. Berücksichtigung von Zielsetzung, Sicherheitsanforderungen, Richtlinien und Konformität). Sie kann von den Organisationen oder einer Drittpartei verwaltet werden und kann innerhalb oder außerhalb der Geschäftsräume vorhanden sein.
-
Public Cloud: Die Cloud-Infrastruktur wird der allgemeinen Öffentlichkeit oder einer großen Industriegruppe zur Verfügung gestellt und gehört einer Organisation, die Cloud-Dienste verkauft.
-
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 eine Daten- und Anwendungsportierbarkeit ermöglicht (z.B. Cloud-Zielgruppenverteilung für den Lastausgleich zwischen Clouds).
-
Eine Cloud-Computing-Umgebung ist dienstorientiert, wobei der Schwerpunkt auf Statusunabhängigkeit, geringer Kopplung, Modularität und semantischer Interoperabilität liegt. Im Mittelpunkt von Cloud Computing steht eine Infrastruktur, die ein Netzwerk von miteinander verbundenen Knoten enthält.
-
Unter folgender Bezugnahme auf 1 wird eine veranschaulichende Cloud-Computing-Umgebung 50 dargestellt. Wie gezeigt, enthält die Cloud-Computing-Umgebung 50 einen oder mehrere Cloud-Computing-Knoten 10, mit denen lokale Datenverarbeitungseinheiten, die von Nutzern der Cloud verwendet werden, wie beispielsweise Personal Digital Assistant (PDA) oder Mobiltelefon 54A, Desktop-Computer 54B, Laptop-Computer 54C und/oder Fahrzeug-Computersystem 54N, Daten austauschen können. Die Knoten 10 können untereinander Daten austauschen. Sie können physisch oder virtuell in einem oder mehreren Netzwerken gruppiert sein (nicht gezeigt), wie beispielsweise Private, Community, Public oder Hybrid Cloud, wie hierin oben beschrieben, oder in einer Kombination davon. Damit hat die Cloud-Computing-Umgebung 50 die Möglichkeit, eine Infrastruktur, Plattformen und/oder Software als Dienste anzubieten, für die ein Cloud-Nutzer keinerlei Ressourcen auf einer lokalen Datenverarbeitungseinheit vorhalten muss. Es sollte klar sein, dass die in 1 gezeigten Typen von Datenverarbeitungseinheiten 54A bis 54N nur zur Veranschaulichung dienen sollen, und dass die Datenverarbeitungsknoten 10 und die Cloud-Computing-Umgebung 50 mit jedem Typ einer computerisierten Einheit über jeden Typ von Netzwerk und/oder eine über ein Netzwerk adressierbare Verbindung (z.B. unter Verwendung eines Web-Browsers) Daten austauschen können.
-
Unter folgender Bezugnahme auf 2 wird eine Gruppe von funktionalen Abstraktionsschichten gezeigt, die durch die Cloud-Computing-Umgebung 50 (1) bereitgestellt werden. Dabei sollte von Anfang an klar sein, dass die in 2 gezeigten Komponenten, Schichten und Funktionen lediglich zur Veranschaulichung dienen sollen und Ausführungsformen der Erfindung nicht darauf beschränkt sind. Wie dargestellt, werden die folgenden Schichten und entsprechenden Funktionen bereitgestellt:
-
Eine Hardware- und Software-Schicht 60 enthält Hardware- und Software-Komponenten. Zu Beispielen für Hardware-Komponenten zählen: Mainframes 61; Server auf Grundlage einer RISC- (Reduced Instruction Set Computer) Architektur 62; Server 63; Blade-Server 64; Speichereinheiten 65; und Netzwerke und vernetzte Komponenten 66. In einigen Ausführungsformen enthalten Software-Komponenten Software für Netzwerkanwendungsserver 67 und Datenbank-Software 68.
-
Eine Virtualisierungsschicht 70 stellt eine Abstraktionsschicht bereit, von der aus die folgenden beispielhaften virtuellen Entitäten bereitgestellt werden können: virtuelle Server 71; virtueller Speicher 72; virtuelle Netzwerke 73, einschließlich virtuelle private Netzwerke; virtuelle Anwendungen und Betriebssysteme 74; und virtuelle Clients 75.
-
In einem Beispiel kann eine Verwaltungsschicht 80 die im Folgenden beschriebenen Funktionen bereitstellen. Eine Ressourcenbereitstellung 81 sorgt für eine dynamische Beschaffung von Datenverarbeitungsressourcen und weiteren Ressourcen, die zum Ausführen von Aufgaben innerhalb der Cloud-Computing-Umgebung eingesetzt werden. Messung und Preisbestimmung 82 ermöglichen beim Einsatz von Ressourcen innerhalb der Cloud-Computing-Umgebung eine Kostenverfolgung und eine Abrechnung oder Rechnungsstellung für die Inanspruchnahme dieser Ressourcen. In einem Beispiel können diese Ressourcen Lizenzen für Anwendungssoftware umfassen. Eine Sicherheitsfunktion stellt eine Identitätsprüfung für Cloud-Nutzer und -Aufgaben sowie einen Schutz für Daten und andere Ressourcen bereit. Ein Benutzerportal 83 stellt den Zugang zur Cloud-Computing-Umgebung für Nutzer und Systemadministratoren bereit. Eine Service-Level- (Dienstgüte) Verwaltung 84 sorgt für Zuweisung und Verwaltung von Cloud-Computing-Ressourcen, sodass erforderliche Service-Levels eingehalten werden. Planung und Vertragserfüllung des Service Level Agreement (SLA) (Dienstgütevereinbarung) 85 stellen eine Vorab-Vereinbarung für und Beschaffung von Cloud-Computing-Ressourcen bereit, für die gemäß eines SLA eine zukünftige Anforderung erwartet wird.
-
Eine Arbeitslastenschicht 90 stellt Beispiele für eine Funktionalität bereit, für welche die Cloud-Computing-Umgebung genutzt werden kann. Zu Beispielen von Arbeitslasten und Funktionen, die von dieser Schicht aus bereitgestellt werden können, zählen: Zuordnung und Navigation 91; Software-Entwicklung und Lifecycle-Management 92; Bereitstellung von virtuellen Schulungen 93; Datenanalyseverarbeitung 94; Transaktionsverarbeitung 95; und Arbeitslastenverwaltung 96.
-
Unter Bezugnahme auf 3 stellt diese Figur ein Blockschaubild eines beispielhaften Systems 300 dar, das eine Planungsanwendung als ein Planungsmodul 308 gemäß einer veranschaulichenden Ausführungsform aufweist. In einigen Ausführungsformen wird das Planungsmodul 308 in der Cloud-Computing-Umgebung von 1 bereitgestellt, zum Beispiel in der Arbeitslastenschicht 90 von 2. In einigen Ausführungsformen wird das Planungsmodul 308 zum Beispiel als Arbeitslastenverwaltung 96 in 2 umgesetzt.
-
In der veranschaulichten Ausführungsform umfasst das System 300 einen Datenverarbeitungsressourcen-Manager 302 und Datenverarbeitungsressourcen 304. Zum Beispiel ist das System 300 eine Cloud-Computing-Umgebung, die eine FaaS-Architektur unterstützt, wobei der Datenverarbeitungsressourcen-Manager 302 als Cloud-Manager dient und die Datenverarbeitungsressourcen 304 Cluster von Cloud-Computing-Servern umfassen.
-
In der veranschaulichten Ausführungsform umfasst der Datenverarbeitungsressourcen-Manager 302 eine Benutzerschnittstelle 306 und das Planungsmodul 308. In der veranschaulichten Ausführungsform erlaubt der Datenverarbeitungsressourcen-Manager 302 einem Systemadministrator 322 oder einer entfernt angeordneten Benutzereinheit 324, die Datenverarbeitungsressourcen 304 über die Benutzerschnittstelle 306 einzurichten und zu verwalten. In der veranschaulichten Ausführungsform führt das Planungsmodul 308 eine Platzierung von Funktionen auf physischen Ressourcen auf Grundlage von verschiedenen situationsbedingten Durchsetzungsrichtlinien durch, wie zum Beispiel Server-Verfügbarkeit, geografische Nähe zu einer Client-Einheit, die die Funktion aufruft, und Lastausgleichrichtlinien. Zum Beispiel umfasst das Planungsmodul 308 in dem veranschaulichten Beispiel einen Optimierer 312, der die Leistung der Datenverarbeitungsressourcen 304 überwacht, um zu bestimmen, wann eine Migration erfolgen muss, und unterstützt das Planungsmodul 308 bei Lastausgleichsmigrationen gemäß Richtlinien, die durch einen Systemadministrator 322 eingerichtet wurden.
-
In der veranschaulichten Ausführungsform erlaubt der Datenverarbeitungsressourcen-Manager 302 dem Systemadministrator 322, Hardware-Datenverarbeitungsressourcen 304 einzurichten und zu verwalten. Die Datenverarbeitungsressourcen 304 stellen Computer-Ressourcen dar, wie zum Beispiel physische Host-Server in einer Cloud-Computing-Umgebung. In der veranschaulichten Ausführungsform umfassen die Datenverarbeitungsressourcen 304 zwei Gruppen von Servern, wobei Server 314a und 314b in einer Servergruppe 314 gruppiert sind, und Server 316a und 316b in einer Servergruppe 316 gruppiert sind. In einigen Ausführungsformen ist eine Servergruppe eine logische Gruppierung von einem oder mehreren Servern, die durch den Datenverarbeitungsressourcen-Manager 302 verwaltet werden. In einigen Ausführungsformen können die Datenverarbeitungsressourcen 304 eine große Anzahl von physischen Servern (nicht dargestellt) umfassen, die in einer oder mehreren Servergruppen angeordnet sind. Die Servergruppen können auf einem oder mehreren physischen Hosts in den Host-Gruppen gehostet werden. In der veranschaulichten Ausführungsform umfassen die Datenverarbeitungsressourcen 304 auch Server 318 und 320, die sich nicht in Servergruppen befinden.
-
In einigen Ausführungsformen stellt der Datenverarbeitungsressourcen-Manager 302 eine Platzierung von Funktionen auf physischen Computer-Ressourcen auf Grundlage von Kollokationsregeln und situationsbedingten Durchsetzungsrichtlinien bereit, die durch einen Systemadministrator eingerichtet wurden. Beispiele für Kollokationsregeln sind Affinität und Anti-Affinität. Eine Affinitätsregel gibt eine Beziehung an, in der eine Funktion mit zugehörigen Funktionen in eine Gruppe auf einem oder mehreren physischen Hosts platziert wird. Desgleichen gibt eine Anti-Affinitätsregel an, dass eine Funktion nicht zusammen mit anderen Funktionen, die zu derselben Gruppe gehören, auf demselben physischen Host platziert werden darf. Eine situationsbedingte Durchsetzungsrichtlinie, wie hierin verwendet, bedeutet eine Situation oder einen Satz von Umständen, in denen eine Richtlinie vorgibt, ob eine harte oder sanfte Durchsetzung der Kollokationsregel aufgerufen werden soll. Eine harte Durchsetzung einer Regel bedeutet, dass die Kollokationsregel (Affinität oder Anti-Affinität) trotz der Umstände oder der Situation streng durchgesetzt wird. Im Gegensatz dazu bedeutet eine sanfte Durchsetzung einer Regel, dass die Kollokationsregel nicht notwendigerweise durchgesetzt werden muss, und somit kann die Platzierung der Funktion nach Ermessen des Scheduler-Mechanismus erfolgen, ungeachtet dessen, ob die Affinitäts- oder Anti-Affinitätsregel der platzierten Funktion entspricht.
-
In der veranschaulichten Ausführungsform umfasst das Planungsmodul 308 auch einen Tag-Interpreter 310. In einigen Ausführungsformen stellt der Datenverarbeitungsressourcen-Manager 302 eine Platzierung von Funktionen auf physischen Computer-Ressourcen auf Grundlage von Tag-Abgleichsregeln bereit, die durch einen Systemadministrator eingerichtet wurden. Tag-Abgleichsregeln sind Regeln, die angeben, wie Funktions-Tag-Daten und Host-Tag-Daten verglichen und berücksichtigt werden sollten, wenn ein Server zum Hosten einer Funktion ausgewählt wird, einschließlich dessen, wann und ob eine harte oder sanfte Durchsetzung der Tag-Abgleichsregel aufgerufen werden soll. Eine harte Durchsetzung einer Tag-Abgleichsregel kann bedeuten, dass ein Host-Server einen bestimmten Aspekt der Funktions-Tag-Daten, die trotz der Umstände oder der Situation streng durchgesetzt werden, erfüllen muss, um die zugehörige Funktion zu hosten. Im Gegensatz dazu bedeutet eine sanfte Durchsetzung, dass ein Host-Server nicht notwendigerweise einen Aspekt der Funktions-Tag-Daten erfüllen muss, um die zugehörige Funktion zu hosten, und somit kann die Platzierung der Funktion nach Ermessen des Scheduler-Mechanismus erfolgen, ungeachtet der Funktions-Tag-Daten, die der platzierten Funktion entsprechen.
-
Unter Bezugnahme auf 4 stellt diese Figur ein Blockschaubild eines beispielhaften Systems 400 dar, das eine Planungsanwendung wie ein Planungsmodul 410 zum Bereitstellen einer Funktion gemäß einer veranschaulichenden Ausführungsform aufweist. In einigen Ausführungsformen wird das Planungsmodul 410 in der Cloud-Computing-Umgebung von 1 bereitgestellt, zum Beispiel in der Arbeitslastenschicht 90 von 2. In einigen Ausführungsformen wird das Planungsmodul 410 zum Beispiel als Arbeitslastenverwaltung 96 in 2 umgesetzt.
-
In der veranschaulichten Ausführungsform umfasst das System 400 einen Datenverarbeitungsressourcen-Manager 402 und eine Datenverarbeitungsressource 404. Zum Beispiel ist das System 400 eine Cloud-Computing-Umgebung, die eine FaaS-Architektur unterstützt, wobei der Datenverarbeitungsressourcen-Manager 402 als Cloud-Manager dient und die Datenverarbeitungsressource 404 Funktionen von Cloud-Computing-Servern umfasst.
-
In der veranschaulichten Ausführungsform umfasst der Datenverarbeitungsressourcen-Manager 402 eine Benutzerschnittstelle 408 und das Planungsmodul 410. In der veranschaulichten Ausführungsform ermöglicht der Datenverarbeitungsressourcen-Manager 402 einem entfernt angeordneten Benutzer, wie zum Beispiel einem Anwendungsentwickler, eine Bereitstellungsanforderung 418 über die Benutzerschnittstelle 408 an den Datenverarbeitungsressourcen-Manager 402 zu übermitteln. In der veranschaulichten Ausführungsform umfasst die Bereitstellungsanforderung 418 eine Funktion 420, die Funktions-Tag-Daten 422 umfasst. In der veranschaulichten Ausführungsform antwortet das Planungsmodul 410 auf die Bereitstellungsanforderung 418 durch ein Durchführen einer Platzierung der Funktion 420 auf einer verfügbaren Datenverarbeitungsressource aus einer Mehrzahl von Datenverarbeitungsressourcen 304, wie in 3 gezeigt.
-
In 4 wählt das Planungsmodul 410 eine Datenverarbeitungsressource 404 auf Grundlage von verschiedenen situationsbedingten Durchsetzungsrichtlinien, wie beispielweise Server-Verfügbarkeit, geografische Nähe zu einer Client-Einheit, die die Funktion aufruft, und Lastausgleichrichtlinien sowie Tag-Abgleichsregeln aus. In der veranschaulichten Ausführungsform umfasst die Datenverarbeitungsressource 404 einen Arbeitsspeicher 426, der eine bereitgestellte Funktion 420 und Tag-Daten von Datenverarbeitungsressourcen 428 speichert, die ein Beispiel für Host-Tag-Daten sind. In der veranschaulichten Ausführungsform umfasst die Datenverarbeitungsressource 404 auch eine Systemschnittstelle 424, die mit einer Systemschnittstelle 406 des Datenverarbeitungsressourcen-Managers 402 Daten austauscht. Zum Beispiel kann die Datenverarbeitungsressource 404 in dem veranschaulichten Beispiel die Tag-Daten 428 der Datenverarbeitungsressource 404 anfordern und die Tag-Daten 428 zusammen mit Host-Tag-Daten von anderen Datenverarbeitungsressourcen als Tag-Daten von Datenverarbeitungsressourcen 416 in einem Arbeitsspeicher 412 speichern. Wenn in einigen Ausführungsformen der Datenverarbeitungsressourcen-Manager 402 eine Bereitstellungsanforderung 418 empfängt, antwortet das Planungsmodul 410 auf die Bereitstellungsanforderung 418 durch ein temporäres Speichern der Funktion 420 zusammen mit ihren zugehörigen Tag-Daten 422 in dem Arbeitsspeicher 412. Das Planungsmodul 410 verwendet auch einen Tag-Interpreter 414, um die Funktions-Tag-Daten 422 mit den Tag-Daten 416 für verschiedene Datenverarbeitungsressourcen zu vergleichen, einschließlich der Datenverarbeitungsressource 404.
-
In einigen Ausführungsformen stellt der Datenverarbeitungsressourcen-Manager 402 eine Platzierung von Funktionen auf physischen Computer-Ressourcen auf Grundlage von Kollokationsregeln, situationsbedingten Durchsetzungsrichtlinien und Tag-Abgleichsregeln bereit, die durch einen Systemadministrator eingerichtet wurden. Tag-Abgleichsregeln sind Regeln, die angeben, wie Funktions-Tag-Daten und Host-Tag-Daten verglichen und berücksichtigt werden sollten, wenn ein Server zum Hosten einer Funktion ausgewählt wird, einschließlich dessen, wann und ob eine harte oder sanfte Durchsetzung der Tag-Abgleichsregel aufgerufen werden soll. Eine harte Durchsetzung einer Tag-Abgleichsregel kann bedeuten, dass ein Host-Server einen bestimmten Aspekt der Funktions-Tag-Daten, die trotz der Umstände oder der Situation streng durchgesetzt werden, erfüllen muss, um die zugehörige Funktion zu hosten. Im Gegensatz dazu bedeutet eine sanfte Durchsetzung, dass ein Host-Server nicht notwendigerweise einen Aspekt der Funktions-Tag-Daten erfüllen muss, um die zugehörige Funktion zu hosten, und somit kann die Platzierung der Funktion nach Ermessen des Scheduler-Mechanismus erfolgen, ungeachtet der Funktions-Tag-Daten, die der platzierten Funktion entsprechen. In der veranschaulichten Ausführungsform wird die Funktion 420 der Datenverarbeitungsressource 404 schließlich durch das Planungsmodul 410 auf Grundlage einer Erfüllung von verschiedenen Regeln und Richtlinien, einschließlich der Tag-Abgleichsregeln, bereitgestellt, Zum Beispiel gibt das Planungsmodul 410 in einigen Ausführungsformen eine Anweisung über die Systemschnittstelle 406 und die Systemschnittstelle 424 an die Datenverarbeitungsressource 404 aus, um Ressourcen zum Hosten einer Ausführung der Funktion 420 zuzuweisen. In einigen Ausführungsformen verwaltet das Planungsmodul 410 eine Ressourcendatenbank (z.B. Ressourcendatenbank 534 von 5) oder dergleichen, die angibt, wo verschiedene Funktionen bereitgestellt worden sind, und das Planungsmodul 410 aktualisiert die Ressourcendatenbank dahin, dass die Funktion 420 von der Datenverarbeitungsressource 404 bereitgestellt und ausgeführt wird.
-
Unter Bezugnahme auf 5 stellt diese Figur ein Blockschaubild eines beispielhaften Systems 500 dar, das eine Planungsanwendung wie ein Planungsmodul 510 in Reaktion auf einen Funktionsaufruf gemäß einer veranschaulichenden Ausführungsform aufweist. In einigen Ausführungsformen wird das Planungsmodul 510 in der Cloud-Computing-Umgebung von 1 bereitgestellt, zum Beispiel in der Arbeitslastenschicht 90 von 2. In einigen Ausführungsformen wird das Planungsmodul 510 zum Beispiel als Arbeitslastenverwaltung 96 in 2 umgesetzt.
-
In der veranschaulichten Ausführungsform umfasst das System 500 einen Datenverarbeitungsressourcen-Manager 502 und eine Datenverarbeitungsressource 504. Zum Beispiel ist das System 500 eine Cloud-Computing-Umgebung, die eine FaaS-Architektur unterstützt, wobei der Datenverarbeitungsressourcen-Manager 502 als Cloud-Manager dient und die Datenverarbeitungsressource 504 Funktionen von Cloud-Computing-Servern umfasst.
-
In der veranschaulichten Ausführungsform umfasst der Datenverarbeitungsressourcen-Manager 502 eine Benutzerschnittstelle 508 und das Planungsmodul 510. In der veranschaulichten Ausführungsform ermöglicht der Datenverarbeitungsressourcen-Manager 502 einer entfernt angeordneten Benutzereinheit 512, einen Funktionsaufruf 518 über die Benutzerschnittstelle 508 an den Datenverarbeitungsressourcen-Manager 502 zu übermitteln. In der veranschaulichten Ausführungsform umfasst der Funktionsaufruf 518 einen Verweis auf eine Funktion 520, die Funktions-Tag-Daten 522 umfasst. In der veranschaulichten Ausführungsform kann die Funktion 520 sich entweder in einem ruhenden Zustand befinden oder in einer Datenbank 532 gespeichert sein oder kann bereits auf einer Datenverarbeitungsressource 504 bereitgestellt sein. Wenn die Funktion bereits bereitgestellt worden ist, verweist das Planungsmodul 510 den Funktionsaufruf 518 an die Datenverarbeitungsressource 504 zur Ausführung der Funktion 520 in Reaktion auf den Funktionsaufruf 518. Wenn andererseits die Funktion 520 nicht bereitgestellt worden ist, antwortet das Planungsmodul 510 auf den Funktionsaufruf 518 durch ein Durchführen einer Platzierung der Funktion 520 auf einer verfügbaren Datenverarbeitungsressource aus einer Mehrzahl von Datenverarbeitungsressourcen 304, wie in 3 gezeigt.
-
In einigen Ausführungsformen hat das Planungsmodul 510 vorher die Datenverarbeitungsressource 504 ausgewählt und Informationen in einer Ressourcendatenbank 534 gespeichert, die angeben, dass die Funktion 520 der Datenverarbeitungsressource 504 zugewiesen ist. In einigen derartigen Ausführungsformen prüft das Planungsmodul 510 die Ressourcendatenbank 534 auf Bereitstellungsinformationen für die Funktion 520, empfängt Informationen von der Ressourcendatenbank 534, die angeben, dass die Funktion 520 der Datenverarbeitungsressource 504 zugewiesen ist. In einigen derartigen Ausführungsformen benachrichtigt das Planungsmodul 510 die Datenverarbeitungsressource 504 über eine Systemschnittstelle 506 und eine Systemschnittstelle 524 der Datenverarbeitungsressource 504 des Funktionsaufrufs 518 und leitet den Funktionsaufruf 518 an die Datenverarbeitungsressource 504 weiter. In einigen derartigen Ausführungsformen antwortet die Datenverarbeitungsressource 504 auf die Benachrichtigung von dem Planungsmodul 510 durch Zuweisen von Speicherplatz in einem Arbeitsspeicher 526 zum Hosten der Funktion 520 und leitet den Funktionsaufruf 518 an einen Funktions-Host 530 weiter, der den Funktionsaufruf 518 empfängt und die Ausführung der Funktion 520 in Reaktion auf den Funktionsaufruf 518 bearbeitet.
-
Wenn die Funktion 520 in einigen Ausführungsformen keiner Datenverarbeitungsressource zugewiesen worden ist, wählt das Planungsmodul 510 die Datenverarbeitungsressource 504 auf Grundlage von verschiedenen situationsbedingten Durchsetzungsrichtlinien, wie beispielweise Server-Verfügbarkeit, geografische Nähe zu einer Client-Einheit, die die Funktion aufruft, und Lastausgleichrichtlinien sowie Tag-Abgleichsregeln aus. In der veranschaulichten Ausführungsform umfasst die Datenverarbeitungsressource 504 den Arbeitsspeicher 526, der die bereitgestellte Funktion 520 und Tag-Daten von Datenverarbeitungsressourcen 528 speichert, die ein Beispiel für Host-Tag-Daten sind. In der veranschaulichten Ausführungsform umfasst die Datenverarbeitungsressource 504 auch eine Systemschnittstelle 524, die mit einer Systemschnittstelle 506 des Datenverarbeitungsressourcen-Managers 502 Daten austauscht. Zum Beispiel kann die Datenverarbeitungsressource 504 in dem veranschaulichten Beispiel die Tag-Daten 528 von der Datenverarbeitungsressource 504 anfordern und die Tag-Daten 528 zusammen mit Host-Tag-Daten von anderen Datenverarbeitungsressourcen als Tag-Daten von Datenverarbeitungsressourcen 516 in einer Datenbank 532 speichern. Wenn der Datenverarbeitungsressourcen-Manager 502 in einigen Ausführungsformen einen Funktionsaufruf 518 empfängt, antwortet das Planungsmodul 510 auf den Funktionsaufruf 518 durch ein Verwenden eines Tag-Interpreters 514, um die Funktions-Tag-Daten 522, die der aufgerufenen Funktion 520 zugehörig sind, mit den Tag-Daten 516 für verschiedene Datenverarbeitungsressourcen, einschließlich der Datenverarbeitungsressource 504, zu vergleichen Nach einem Auswählen der Datenverarbeitungsressource 504 zum Bereitstellen der Funktion 520 benachrichtigt das Planungsmodul 510 die Datenverarbeitungsressource 504 über die Systemschnittstelle 506 und die Systemschnittstelle 524 der Datenverarbeitungsressource 504 über die Bereitstellung der Funktion 520 und den Funktionsaufruf 518, und leitet den Funktionsaufruf 518 an die Datenverarbeitungsressource 504 weiter. In einigen derartigen Ausführungsformen antwortet die Datenverarbeitungsressource 504 auf die Benachrichtigung von dem Planungsmodul 510 durch Zuweisen von Speicherplatz im Arbeitsspeicher 526 zum Hosten der Funktion 520 und leitet den Funktionsaufruf 518 an einen Funktions-Host 530 weiter, der den Funktionsaufruf 518 empfängt und die Ausführung der Funktion 520 in Reaktion auf den Funktionsaufruf 518 bearbeitet.
-
In einigen Ausführungsformen stellt der Datenverarbeitungsressourcen-Manager 502 eine Platzierung von Funktionen auf physischen Computer-Ressourcen auf Grundlage von Kollokationsregeln, situationsbedingten Durchsetzungsrichtlinien und Tag-Abgleichsregeln bereit, die durch einen Systemadministrator eingerichtet wurden. Tag-Abgleichsregeln sind Regeln, die angeben, wie Funktions-Tag-Daten und Host-Tag-Daten verglichen und berücksichtigt werden sollten, wenn ein Server zum Hosten einer Funktion ausgewählt wird, einschließlich dessen, wann und ob eine harte oder sanfte Durchsetzung der Tag-Abgleichsregel aufgerufen werden soll. Eine harte Durchsetzung einer Tag-Abgleichsregel kann bedeuten, dass ein Host-Server einen bestimmten Aspekt der Funktions-Tag-Daten, die trotz der Umstände oder der Situation streng durchgesetzt werden, erfüllen muss, um die zugehörige Funktion zu hosten. Im Gegensatz dazu bedeutet eine sanfte Durchsetzung, dass ein Host-Server nicht notwendigerweise einen Aspekt der Funktions-Tag-Daten erfüllen muss, um die zugehörige Funktion zu hosten, und somit kann die Platzierung der Funktion nach Ermessen des Scheduler-Mechanismus erfolgen, ungeachtet der Funktions-Tag-Daten, die der platzierten Funktion entsprechen. In der veranschaulichten Ausführungsform wird die Funktion 520 schließlich der Datenverarbeitungsressource 504 durch das Planungsmodul 510 auf Grundlage einer Erfüllung von verschiedenen Regeln und Richtlinien, einschließlich der Tag-Abgleichsregeln, bereitgestellt. Zum Beispiel gibt das Planungsmodul 510 in einigen Ausführungsformen eine Anweisung über die Systemschnittstelle 506 und die Systemschnittstelle 524 an die Datenverarbeitungsressource 504 aus, um Ressourcen zum Hosten einer Ausführung der Funktion 520 zuzuweisen. In einigen Ausführungsformen verwaltet das Planungsmodul 510 eine Ressourcendatenbank 534 (z.B. die Ressourcendatenbank 534 von 5) oder dergleichen, die angibt, wo verschiedene Funktionen bereitgestellt worden sind, und das Planungsmodul 510 aktualisiert die Ressourcendatenbank dahin, dass die Funktion 520 von der Datenverarbeitungsressource 504 bereitgestellt und ausgeführt wird.
-
Unter Bezugnahme auf 6 stellt diese Figur einen Ablaufplan eines beispielhaften Prozesses 600 für ein Tag-gesteuertes Planen von Datenverarbeitungsressourcen zur Funktionsausführung gemäß einer veranschaulichenden Ausführungsform dar. In einigen Ausführungsformen wird der Prozess 600 durch ein Planungsmodul in der Cloud-Computing-Umgebung von 1 bereitgestellt, zum Beispiel in der Arbeitslastenschicht 90 von 2. In einigen Ausführungsformen wird der Prozess 600 zum Beispiel durch ein Planungsmodul durchgeführt, das als Arbeitslastenverwaltung 96 in 2 umgesetzt ist.
-
In einer Ausführungsform empfängt das Planungsmodul an einem Block 602 eine Anforderung, die einem Hosten einer Ausführung einer Funktion von einem Server-Cluster zugehörig ist. Als Nächstes analysiert das Planungsmodul an einem Block 604 eine Anforderung zum Extrahieren von Funktions-Tag-Daten. In einigen Ausführungsformen erkennt das Planungsmodul die Funktions-Tag-Daten, die einer Funktion zugehörig sind, die durch die Anforderung identifiziert wurde. In einigen Ausführungsformen ist die Anforderung einem Hosten einer Ausführung der Funktion in einem Server-Cluster zugehörig. In einigen Ausführungsformen empfängt das Planungsmodul die Anforderung als eine Bereitstellungsanforderung, die Quellcode für die Funktion umfasst. In einigen derartigen Ausführungsformen analysiert das Planungsmodul die Bereitstellungsanforderung nach Datensegmenten und erkennt die Funktions-Tag-Daten in mindestens einem der Datensegmente.
-
Als Nächstes identifiziert das Planungsmodul in einem Block 606 eine Datenverarbeitungseinheit in dem Server-Cluster, um die Funktion zumindest teilweise auf Grundlage eines Vergleiches der Funktions-Tag-Daten und der Host-Tag-Daten zu hosten, die der Datenverarbeitungseinheit zugehörig sind. In einigen Ausführungsformen durchsucht das Planungsmodul eine Ressourcendatenbank, um zu bestimmen, ob die Funktion bereits einer Datenverarbeitungsressource zugewiesen worden ist. In einigen Ausführungsformen durchsucht das Planungsmodul Tag-Daten von Datenverarbeitungs-Ressourcen nach Host-Tag-Daten, die mit den Funktions-Tag-Daten die größte Übereinstimmung aufweisen, wobei eine Angabe einer ersten Regel in den Funktions-Tag-Daten identifiziert wird, die beim Bereitstellen der Funktion durchgesetzt werden muss. In einigen Ausführungsformen identifiziert die erste Regel in den Funktions-Tag-Daten einen Typ von Datenverarbeitungs-Hardware, der auf einer Datenverarbeitungsressource verfügbar sein muss, die die Funktion hostet. In einigen Ausführungsformen identifiziert das Planungsmodul eine Angabe einer zweiten Regel in den Funktions-Tag-Daten, die beim Bereitstellen der Funktion nicht durchgesetzt werden muss. In einigen Ausführungsformen erkennt das Planungsmodul, dass die Datenverarbeitungseinheit die erste Regel in den Funktions-Tag-Daten erfüllt, und erkennt, dass die Datenverarbeitungseinheit die zweite Regel in den Funktions-Tag-Daten nicht erfüllt. In einigen Ausführungsformen identifiziert das Planungsmodul einen Teil der Host-Tag-Daten, die ein Vorhandensein des Typs von Datenverarbeitungs-Hardware angeben, der auf einer Datenverarbeitungsressource verfügbar sein muss, die die Funktion hostet.
-
Als Nächstes gibt das Planungsmodul an einem Block 608 eine Anweisung an die Datenverarbeitungseinheit aus, die Ressourcen zum Hosten einer Ausführung der Funktion zuzuweisen. Schließlich aktualisiert das Planungsmodul an einem Block 610 eine Ressourcendatenbank, die angibt, dass die Funktion durch die Datenverarbeitungseinheit ausgeführt wird.
-
Unter Bezugnahme auf die Figuren und insbesondere unter Bezugnahme auf 7 und 8 sind diese Figuren beispielhafte Darstellungen von Datenverarbeitungsumgebungen, in denen veranschaulichende Ausführungsformen umgesetzt werden können. 7 und 8 sind nur Beispiele und durch sie soll keinerlei Einschränkung hinsichtlich der Umgebungen festgestellt oder impliziert werden, in denen verschiedene Ausführungsformen umgesetzt werden können. Eine spezielle Umsetzung kann zu vielen Modifizierungen an den dargestellten Umgebungen auf Grundlage der folgenden Beschreibung führen.
-
7 stellt ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen dar, in denen veranschaulichende Ausführungsformen umgesetzt werden können. Eine Datenverarbeitungsumgebung 700 ist ein Netzwerk von Computern, in denen die veranschaulichenden Ausführungsformen umgesetzt werden können. Die Datenverarbeitungsumgebung 700 umfasst ein Netzwerk 702. Das Netzwerk 702 ist das Medium, das zum Bereitstellen von Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die in der Datenverarbeitungsumgebung 700 miteinander verbunden sind. Das Netzwerk 702 kann Verbindungen enthalten, wie beispielsweise drahtgebundene, drahtlose Datenübertragungsverbindungen oder Lichtwellenleiterkabel.
-
Clients oder Server sind nur beispielhafte Rollen von bestimmten Datenverarbeitungssystemen, die mit dem Netzwerk 702 verbunden sind, und sind nicht so aufzufassen, dass sie andere Konfigurationen oder Rollen für diese Datenverarbeitungssysteme ausschließen. Eine Datenverarbeitungsumgebung 704 ist mit dem Netzwerk 702 verbunden. Software-Anwendungen können auf jedem Datenverarbeitungssystem in der Datenverarbeitungsumgebung 700 ausgeführt werden. Jede Software-Anwendung, die als in dem weiteren Verarbeitungssystem 704 in 7 ausgeführt beschrieben wird, kann konfiguriert werden, um in einem weiteren Datenverarbeitungssystem auf ähnliche Weise ausgeführt zu werden. Alle in dem Datenverarbeitungssystem 704 in 7 gespeicherten oder erzeugten Daten oder Informationen können konfiguriert werden, um in einem weiteren Datenverarbeitungssystem auf ähnliche Weise gespeichert oder erzeugt zu werden. Ein Datenverarbeitungssystem wie zum Beispiel das Datenverarbeitungssystem 704 kann Daten enthalten und kann Software-Anwendungen oder Software-Werkzeuge aufweisen, die Datenverarbeitungsprozesse darauf ausführen. In einer Ausführungsform umfasst das Datenverarbeitungssystem 704 einen Arbeitsspeicher 724, der eine Anwendung 705A umfasst, die so konfiguriert werden kann, dass eine oder mehrere der Datenprozessorfunktionen umgesetzt werden können, die hierin gemäß einer oder mehreren Ausführungsformen beschrieben werden.
-
Ein Server 706 ist zusammen mit einer Speichereinheit 708 mit dem Netzwerk 702 verbunden. Die Speichereinheit 708 umfasst eine Datenbank 709, die konfiguriert ist, um Daten, wie hierin beschrieben, in Bezug auf verschiedene Ausführungsformen zu speichern, zum Beispiel Bilddaten und Attributdaten. Der Server 706 ist ein herkömmliches Datenverarbeitungssystem. In einer Ausführungsform umfasst der Server 706 eine Anwendung 705B, die konfiguriert werden kann, um eine oder mehrere der Prozessorfunktionen umzusetzen, die hierin gemäß einer oder mehreren Ausführungsformen beschrieben werden.
-
Clients 710, 712 und 714 sind ebenfalls mit dem Netzwerk 702 verbunden. Ein herkömmliches Datenverarbeitungssystem wie zum Beispiel der Server 706 oder der Client 710, 712 oder 714 kann Daten enthalten und kann Software-Anwendungen oder Software-Werkzeuge aufweisen, die herkömmliche Datenverarbeitungsprozesse darauf ausführen.
-
Nur als Beispiel und ohne irgendeine Einschränkung einer derartigen Architektur implizieren zu wollen, stellt 7 bestimmte Komponenten dar, die in einer beispielhaften Umsetzung einer Ausführungsform verwendbar sind. Zum Beispiel werden der Server 706 und die Clients 710, 712, 714 nur zu Beispielzwecken als Server und Clients dargestellt und nicht, um eine Einschränkung auf eine Client-Server-Architektur zu implizieren. Als weiteres Beispiel kann eine Ausführungsform über mehrere Datenverarbeitungssysteme und ein Datennetzwerk, wie gezeigt, verteilt werden, wogegen eine weitere Ausführungsform auf einem einzelnen Datenverarbeitungssystem innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen umgesetzt werden kann. Herkömmliche Datenverarbeitungssysteme 706, 710, 712 und 714 stellen auch Beispielknoten in einem Cluster, Partitionen und andere Konfigurationen dar, die für ein Umsetzen einer Ausführungsform geeignet sind.
-
Eine Einheit 732 ist ein Beispiel für eine hierin beschriebene herkömmliche Datenverarbeitungseinheit. Zum Beispiel kann die Einheit 732 die Form eines Smartphones, eines Tablet-Computers, eines Laptop-Computers, eines Clients 710 in einer ortsfesten oder tragbaren Form, eine tragbare Datenverarbeitungseinheit oder jede andere geeignete Einheit aufweisen. In einer Ausführungsform sendet die Einheit 732 Anforderungen an den Server 706, um eine oder mehrere Datenverarbeitungsaufgaben durch die Anwendung 705B durchzuführen, wie zum Beispiel ein Initiieren von hierin beschriebenen Prozessen des Registry-Servers. Jede Software-Anwendung, die als in einem weiteren herkömmlichen Datenverarbeitungssystem in 7 ausgeführt beschrieben wird, kann konfiguriert werden, um in der Einheit 732 auf ähnliche Weise ausgeführt zu werden. Alle in einem weiteren herkömmlichen Datenverarbeitungssystem in 7 gespeicherten oder erzeugten Daten oder Informationen können konfiguriert werden, um in der Einheit 732 auf ähnliche Weise gespeichert oder erzeugt zu werden.
-
Der Server 706, die Speichereinheit 708, das Datenverarbeitungssystem 704 und die Clients 710, 712 und 714 und die Einheit 732 können mit dem Netzwerk 702 durch ein Verwenden von drahtgebundenen Verbindungen, drahtlosen Datenübertragungsprotokollen oder einer anderen geeigneten Datenkonnektivität verbunden werden. Die Clients 710, 712 und 714 können zum Beispiel Personal Computer (PCs) oder Netzwerk-Computer sein.
-
In dem dargestellten Beispiel kann der Server 706 Daten wie zum Beispiel Boot-Dateien, Betriebssystemabbildungen und Anwendungen für die Clients 710, 712 und 714 bereitstellen. Die Clients 710, 712 und 714 können in diesem Beispiel Clients für den Server 706 sein. Die Clients 710, 712 und 714 oder eine Kombination davon können ihre eigenen Daten, Boot-Dateien, Betriebssystemabbilder und Anwendungen umfassen. Die Datenverarbeitungsumgebung 700 kann zusätzliche Server, Clients und andere nicht gezeigte Einheiten enthalten.
-
In dem dargestellten Beispiel kann der Arbeitsspeicher 724 Daten wie zum Beispiel Boot-Dateien, Betriebssystemabbildungen und Anwendungen für einen Prozessor 722 bereitstellen. Der Prozessor 722 kann seine eigenen Daten, Boot-Dateien, Betriebssystem-Abbildungen und Anwendungen umfassen. Die Datenverarbeitungsumgebung 700 kann zusätzliche Arbeitsspeicher, Prozessoren und andere nicht gezeigte Einheiten enthalten.
-
In dem dargestellten Beispiel kann die Datenverarbeitungsumgebung 700 das Internet sein. Das Netzwerk 702 kann eine Sammlung von Netzwerken und Gateways darstellen, die das Transmission Control Protocol/Internet Protocol (TCP/IP) oder andere Protokolle verwenden, um miteinander Daten auszutauschen. Das Kernstück des Internets ist ein Backbone von Datenübertragungsverbindungen zwischen Hauptknoten oder Host-Computern, die Tausende von gewerblichen, behördlichen, schulischen und anderen Computersystemen umfassen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann die Datenverarbeitungsumgebung 700 auch als eine Anzahl von verschiedenen Typen von Netzwerken umgesetzt werden, wie zum Beispiel ein Intranet, ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN). 7 ist als Beispiel und nicht als Architektureinschränkung für die verschiedenen veranschaulichenden Ausführungsformen gedacht.
-
Neben anderen Verwendungen kann die Datenverarbeitungsumgebung 700 zum Umsetzen einer containerfähigen Host-Server-Umgebung verwendet werden, in der die veranschaulichenden Ausführungsformen umgesetzt werden können. Eine containerfähige Host-Server-Umgebung ermöglicht, dass containerisierte Software-Anwendungen und Daten über ein Netzwerk verteilt werden können, sodass eine Anwendung durch ein Verwenden der Interaktivität zwischen einem herkömmlichen Client-Datenverarbeitungssystem und einem herkömmlichen Server-Datenverarbeitungssystem funktioniert. Die Datenverarbeitungsumgebung 700 kann auch eine dienstorientierte Architektur verwenden, in der interoperable Software-Komponenten, die über ein Netzwerk verteilt sind, als kohärente Geschäftsanwendungen zusammengepackt sind. Die Datenverarbeitungsumgebung 700 kann auch die Form einer Cloud annehmen und ein Cloud-Computing-Modell einer Dienstbereitstellung verwenden, um einen problemlosen bedarfsgesteuerten Netzwerkzugang zu einem gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungsressourcen zu ermöglichen (z.B. Netzwerke, Netzwerkbandbreite, Server, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuelle Maschinen und Dienste), die mit minimalem Verwaltungsaufwand bzw. minimaler Interaktion mit einem Anbieter des Dienstes schnell bereitgestellt und freigegeben werden können.
-
Unter Bezugnahme auf 8 stellt diese Figur ein Blockschaubild eines Datenverarbeitungssystems dar, in dem veranschaulichende Ausführungsformen umgesetzt werden können. Ein Datenverarbeitungssystem 800 ist ein Beispiel für einen herkömmlichen Computer, wie zum Beispiel das Datenverarbeitungssystem 704, der Server 706 oder die Clients 710, 712 und 714 in 7 oder ein anderer Typ von Einheit, in dem sich durch einen Computer verwendbarer Programmcode oder Anweisungen für die veranschaulichenden Ausführungsformen befinden kann bzw. können, der bzw. die die Prozesse umsetzt bzw. umsetzen.
-
Das Datenverarbeitungssystem 800 ist auch repräsentativ für ein herkömmliches Datenverarbeitungssystem oder eine Konfiguration darin, wie zum Beispiel das herkömmliche Datenverarbeitungssystem 732 in 7, in dem sich durch einen Computer verwendbarer Programmcode oder Anweisungen befinden kann bzw. können, der bzw. die die Prozesse der veranschaulichenden Ausführungsformen umsetzt bzw. umsetzen. Das Datenverarbeitungssystem 800 wird nur zu Beispielzwecken als ein Computer beschrieben, ohne darauf beschränkt zu sein. Umsetzungen in der Form von anderen Einheiten, wie beispielsweise die Einheit 732 in 7, können das Datenverarbeitungssystem 800 zum Beispiel durch Hinzufügen einer Berührungsschnittstelle modifizieren und sogar bestimmte dargestellte Komponenten aus dem Datenverarbeitungssystem 800 eliminieren, ohne von der allgemeinen Beschreibung der Operationen und Funktionen des hierin beschriebenen Datenverarbeitungssystems 800 abzuweichen.
-
In dem dargestellten Beispiel verwendet das Datenverarbeitungssystem 800 eine Hub-Architektur mit North-Bridge und Speicher-Controller-Hub (NB/MCH) 802 und South-Bridge und Eingabe/Ausgabe- (E/A) Controller-Hub (SB/ICH) 804. Eine Verarbeitungseinheit 806, ein Hauptarbeitsspeicher 808 und ein Grafikprozessor 810 sind mit North-Bridge und dem Controller-Hub (NB/MCH) 802 verbunden. Die Verarbeitungseinheit 806 kann einen oder mehrere Prozessoren enthalten und kann durch Verwenden von einem oder mehreren heterogenen Prozessorsystemen umgesetzt werden. Die Verarbeitungseinheit 806 kann ein Mehrkern-Prozessor sein. Der Grafikprozessor 810 kann in bestimmten Umsetzungen mit dem NB/MCH 802 über einen beschleunigten Grafikanschluss (AGP - Accelerated Graphics Port) verbunden werden.
-
In dem dargestellten Beispiel ist ein Adapter 812 des lokalen Netzwerks (LAN) mit South-Bridge und E/A-Controller-Hub (SB/ICH 804) verbunden. Ein Audio-Adapter 816, ein Tastatur- und Maus-Adapter 820, ein Modem 822, ein Nur-Lese-Speicher (ROM) 824, ein Universal-Serial-Bus (USB) und andere Anschlüsse 832 und PCI/PCIe-Einheiten 834 sind mit South-Bridge und einem E/A-Controller-Hub 804 über einen Bus 838 verbunden. Ein Festplattenlaufwerk oder eine Solid-State-Einheit (SSD) 826 und ein CD-ROM 830 sind mit South-Bridge und dem E/A-Controller-Hub 804 durch einen Bus 840 verbunden. Zu den PCI/PCIe-Einheiten 834 können beispielsweise Ethernet-Adapter, Add-in-Karten und PC-Karten für Notebook-Computer gehören. PCI verwendet einen Karten-Bus-Controller, PCIe hingegen nicht. Der ROM 824 kann beispielsweise ein binäres Flash-Eingabe/Ausgabe-System (BIOS) sein. Das Festplattenlaufwerk 826 und der CD-ROM 830 können zum Beispiel eine Integrated Drive Electronics- (IDE) oder Serial Advanced Technology Attachment- (SATA) Schnittstelle oder Varianten wie beispielsweise External SATA (eSATA) und Mikro-SATA (mSATA) verwenden. Eine Super I/O- (SIO) Einheit 836 kann mit South-Bridge und dem E/A-Controller-Hub (SB/ICH) 804 über einen Bus 838 verbunden werden.
-
Arbeitsspeicher, wie zum Beispiel der Hauptarbeitsspeicher 808, der ROM 824 oder ein Flash-Speicher (nicht gezeigt) sind einige Beispiele für durch einen Computer verwendbare Speichereinheiten. Das Festplattenlaufwerk oder die Solid-State-Einheit 826, der CR-ROM 830 und andere ähnlich verwendbare Einheiten sind einige Beispiele für durch einen Computer verwendbare Speichereinheiten, die ein durch einen Computer verwendbares Speichermedium umfassen.
-
Auf der Verarbeitungseinheit 806 wird ein Betriebssystem ausgeführt. Das Betriebssystem koordiniert verschiedene Komponenten und stellt deren Steuerung in dem Datenverarbeitungssystem 800 in 8 bereit. Das Betriebssystem kann ein im Handel erhältliches Betriebssystem für jeden Typ einer Datenverarbeitungsplattform sein, das Serversysteme, Personal Computer (PCs) und mobile Einheiten umfasst, aber nicht darauf beschränkt ist. Ein objektorientiertes Programmiersystem oder ein anderer Typ eines Programmiersystems kann zusammen mit dem Betriebssystem ausgeführt werden und stellt Aufrufe an das Betriebssystem aus Programmen oder Anwendungen bereit, die auf dem Datenverarbeitungssystem 800 ausgeführt werden.
-
Anweisungen für das Betriebssystem, das objektorientierte Programmiersystem und Anwendungen oder Programme, wie beispielsweise die Anwendung 705 in 7, befinden sich auf Speichereinheiten, wie beispielsweise in der Form eines Codes 826A auf einem Festplattenlaufwerk 826, und können in mindestens einen von einem oder mehreren Arbeitsspeichern, wie beispielsweise einen Hauptarbeitsspeicher 808, zur Ausführung durch eine Verarbeitungseinheit 806 geladen werden. Die Prozesse der veranschaulichenden Ausführungsformen können von der Verarbeitungseinheit 806 durch Verwenden von durch den Computer umgesetzten Anweisungen ausgeführt werden, die sich in einem Arbeitsspeicher wie zum Beispiel dem Hauptarbeitsspeicher 808, dem ROM 824 oder in einer oder mehreren Peripherieeinheiten 226 und 230 befinden können.
-
Ferner kann in einem Fall der Code 826A über ein Netzwerk 801A von einem entfernt angeordneten System 801B heruntergeladen werden, auf dem ein ähnlicher Code 801C auf einer Speichereinheit 801D gespeichert ist. In einem weiteren Fall kann der Code 826A über das Netzwerk 801A auf das entfernt angeordnete System 801B heruntergeladen werden, auf dem der heruntergeladene Code 801C auf der Speichereinheit 801D gespeichert ist.
-
Die Hardware in den 2 bis 7 kann je nach Umsetzung verschieden sein. Andere interne Hardware- oder Peripherie-Einheiten wie Flash-Speicher, gleichwertiger nicht flüchtiger Arbeitsspeicher oder optische Plattenlaufwerke und dergleichen können zusätzlich zu oder anstelle der Hardware verwendet werden, die in den 2 bis 7 dargestellt ist. Außerdem können die Prozesse der veranschaulichenden Ausführungsformen auf ein Mehrfachprozessor-Datenverarbeitungssystem angewendet werden.
-
In einigen veranschaulichenden Beispielen kann das Datenverarbeitungssystem 800 ein Personal Digital Assistant (PDA) sein, der im Allgemeinen mit einem Flash-Arbeitsspeicher konfiguriert ist, um nicht flüchtigen Arbeitsspeicher zum Speichern von Betriebssystemdateien und/oder vom Benutzer generierten Daten bereitzustellen. Ein Bussystem kann aus einem oder mehreren Bussen bestehen, wie zum Beispiel einem Systembus, einem E/A-Bus und einem PCI-Bus. Selbstverständlich kann das Bussystem unter Verwendung jedes Typs von Kommunikationsstruktur oder -architektur umgesetzt werden, die eine Übertragung von Daten zwischen verschiedenen Komponenten oder Einheiten bereitstellen, die mit der Struktur oder Architektur verbunden sind.
-
Eine Datenübertragungseinheit kann eine oder mehrere Einheiten umfassen, die zum Übertragen und Empfangen von Daten verwendet wird bzw. werden, wie zum Beispiel ein Modem oder ein Netzwerkadapter. Ein Arbeitsspeicher kann zum Beispiel der Hauptarbeitsspeicher 808 oder ein Cache wie beispielsweise der Cache sein, der in North-Bridge und dem Arbeitsspeicher-Controller-Hub 802 zu finden ist. Eine Verarbeitungseinheit kann einen oder mehrere Prozessoren oder CPUs umfassen.
-
Die dargestellten Beispiele in 2 bis 7 und die oben beschriebenen Beispiele sind so aufzufassen, dass sie keinerlei Einschränkungen der Architektur implizieren. Zum Beispiel kann das Datenverarbeitungssystem 800 zusätzlich zum Aufweisen einer Form als mobile oder Wearable-Einheit auch ein Tablet-Computer, ein Laptop-Computer oder eine Telefoneinheit sein.
-
In Fällen, in denen ein Computer- oder Datenverarbeitungssystem als eine virtuelle Maschine, eine virtuelle Einheit oder eine virtuelle Komponente beschrieben wird, arbeitet die virtuelle Maschine, die virtuelle Einheit oder die virtuelle Komponente in der Art und Weise des Datenverarbeitungssystems 800 durch Verwenden einer virtualisierten Erscheinungsform von einigen oder allen Komponenten, die in dem Datenverarbeitungssystem 800 dargestellt sind. Zum Beispiel zeigt sich die Verarbeitungseinheit 806 in einer virtuellen Maschine, einer virtuellen Einheit oder einer virtuellen Komponente als eine virtualisierte Instanz von allen oder einigen Hardware-Verarbeitungseinheiten 806, die in einem Host-Datenverarbeitungssystem verfügbar sind, der Hauptarbeitsspeicher 808 zeigt sich als eine virtualisierte Instanz des gesamten oder eines Teils des Hauptarbeitsspeichers 808, der in dem Host-Datenverarbeitungssystem verfügbar ist, und das Festplattenlaufwerk 826 zeigt sich als eine virtualisierte Instanz des gesamten oder eines Teils des Festplattenlaufwerks 826, das in dem Host-Datenverarbeitungssystem verfügbar ist. Das Host-Datenverarbeitungssystem wird in solchen Fällen durch das Datenverarbeitungssystem 800 dargestellt.
-
Die folgenden Definitionen und Abkürzungen sind für die Auslegung der Ansprüche und der Patentschrift zu verwenden. Wie hierin verwendet, sollen die Begriffe „weist auf“, „aufweisend“, „umfasst“, „umfassend“, „besitzt“, „besitzend“, „enthält“ oder „enthaltend“ oder irgendeine Variation davon eine nicht ausschließende Einbeziehung abdecken. Zum Beispiel ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Artikel oder eine Vorrichtung, die eine Liste von Elementen umfasst, nicht notwendigerweise auf nur diese Elemente beschränkt, sondern kann andere Elemente umfassen, die nicht ausdrücklich aufgelistet oder derartigen Zusammensetzungen, Gemischen, Prozessen, Verfahren, Artikeln oder Vorrichtungen eigen sind.
-
Außerdem bedeutet der hierin verwendete Begriff „veranschaulichend“, dass „etwas als Beispiel, Instanz oder zur Veranschaulichung dient“. Jede hierin als „veranschaulichend“ beschriebene Ausführungsform oder Auslegung muss nicht notwendigerweise als gegenüber anderen Ausführungsformen oder Auslegungen bevorzugt oder vorteilhaft aufgefasst werden. Der Begriff „mindestens ein/eine“ und „ein/e oder mehrere“ ist als jede ganzzahlige Anzahl größer oder gleich eins zu verstehen, d.h. eins, zwei, drei, vier usw. Der Begriff „eine Mehrzahl“ ist als ganzzahlige Anzahl größer oder gleich zwei zu verstehen, d.h. zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung“ umfassen.
-
Verweise in der Patentschrift auf „eine bestimmte Ausführungsform“, „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein besonderes Merkmal, eine besondere Struktur oder Eigenschaft umfassen kann, aber nicht jede Ausführungsform das besondere Merkmal, die besondere Struktur oder Eigenschaft umfassen muss. Des Weiteren verweisen derartige Ausdrücke nicht notwendigerweise auf dieselbe Umgebung. Wenn ferner ein bestimmtes Merkmal, eine Struktur oder Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, wird geltend gemacht, dass es innerhalb der Kenntnisse eines Fachmanns liegt, auf ein derartiges Merkmal, eine derartige Struktur oder Eigenschaft in Verbindung mit anderen Ausführungsformen Einfluss zu nehmen, gleichgültig, ob dies explizit beschrieben wurde.
-
Die Begriffe „über“, „im Wesentlichen“, „ungefähr“ und Variationen davon sollen das Fehlermaß angeben, das einer Messung der bestimmten Menge auf Grundlage des Zeitpunkts der Anmeldungseinreichung auf der verfügbaren Ausrüstung zugehörig ist. Zum Beispiel kann „über“ einen Bereich von ±8 % oder 5 % oder 2 % eines bestimmten Werts umfassen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin beschriebenen Ausführungsformen zu ermöglichen.
-
Somit wird ein durch einen Computer umgesetztes Verfahren, ein System oder eine Vorrichtung und ein Computerprogrammprodukt in den veranschaulichenden Ausführungsformen zum Verwalten einer Teilnahme an Online-Communities und anderen zugehörigen Merkmalen, Funktionen oder Operationen bereitgestellt. In Fällen, in denen eine Ausführungsform oder ein Teil davon in Bezug auf einen Einheitentyp beschrieben wird, wird das durch einen Computer umgesetzte Verfahren, das System oder die Vorrichtung und das Computerprogrammprodukt oder ein Teil davon angepasst oder konfiguriert, um mit einer geeigneten oder vergleichbaren Erscheinungsform dieses Einheitentyps verwendet zu werden.
-
In Fällen, in denen eine Ausführungsform als in einer Anwendung umgesetzt beschrieben wird, wird die Bereitstellung der Anwendung in einem Software-as-a-Service-(SaaS)-Modell innerhalb des Schutzumfangs der veranschaulichenden Ausführungsformen in Betracht gezogen. In einem SaaS-Modell wird die Fähigkeit der Anwendung zum Umsetzen einer Ausführungsform für einen Benutzer durch Ausführen der Anwendung in einer Cloud-Infrastruktur bereitgestellt. Der Benutzer kann durch Verwenden einer Vielfalt von Client-Einheiten über eine Thin-Client-Schnittstelle, beispielsweise ein Web-Browser (z.B. eMail auf Web-Grundlage) oder andere leichte Client-Anwendungen auf die Anwendung zugreifen. Der Benutzer verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur nicht, darunter Netzwerke, Server, Betriebssysteme oder der Speicher der Cloud-Infrastruktur. In einigen Fällen kann der Benutzer nicht einmal die Funktionen der SaaS-Anwendung verwalten oder steuern. In einigen anderen Fällen kann die SaaS-Umsetzung der Anwendung eine mögliche Ausnahme von eingeschränkten benutzerspezifischen Einstellungen der Anwendungskonfiguration gestatten.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare 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 tragbarer CD-ROM, eine DVD, ein Arbeitsspeicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, 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 andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server 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, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu 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, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen 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, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder 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 Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass 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 Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Ausführungsformen der vorliegenden Erfindung können auch als Teil einer Dienstvereinbarung mit einem Kundenunternehmen, einer gemeinnützigen Organisation, einer Regierungsbehörde, einer internen Organisationsstruktur oder dergleichen bereitgestellt werden. Aspekte dieser Ausführungsformen können ein Konfigurieren eines Computersystems umfassen, um Software, Hardware und Web-Dienste auszuführen und bereitzustellen, die einige oder alle der hierin beschriebenen Verfahren umsetzen. Aspekte dieser Ausführungsformen können auch ein Analysieren der Operationen des Kunden, Erstellen von Empfehlungen in Reaktion auf die Analyse, Erstellen von Systemen, die Abschnitte der Empfehlungen umsetzen, Integrieren der Systeme in vorhandene Prozesse und die Infrastruktur, Messen der Nutzung der Systeme, Zuweisen von Kosten zu Nutzern der Systeme, und Fakturieren für die Nutzung der Systeme umfassen. Zwar wurden die vorgenannten Ausführungsformen der vorliegenden Erfindung jeweils durch Angeben ihrer individuellen Vorteile beschrieben, doch ist die vorliegende Erfindung nicht auf eine bestimmte Kombination von diesen beschränkt. Derartige Ausführungsformen können im Gegenteil auch auf jede Art und Weise und in jeder Anzahl gemäß dem beabsichtigten Einsatz der vorliegenden Erfindung kombiniert werden, ohne ihre vorteilhaften Auswirkungen einzubüßen.