-
HINTERGRUND
-
Diese Beschreibung bezieht sich auf Cloud-Computing.
-
Cloud-Computing ist eine netzwerkbasierte Datenverarbeitung, bei der normalerweise eine große Anzahl an Servern, die sich in Datenzentren oder „Server-Farmen” befinden, Datenverarbeitungsressourcen und Datenspeicherung bereitstellen, die von Endbenutzern benötigt werden. Einige Cloud-Computing-Dienste stellen Endbenutzern, die eine Schnittstelle zu den Anwendungen über Internet-Browser oder andere Software auf der Client-Seite herstellen, den Zugang zu Softwareanwendungen bereit, wie Textverarbeitungsprogrammen und anderen häufig verwendeten Anwendungen. Elektronische Daten der Benutzer werden üblicherweise in der Server-Farm anstatt auf den Rechenvorrichtungen der Benutzer gespeichert. Das Unterhalten von Software-Anwendungen und Benutzerdaten in einer Server-Farm vereinfacht das Management der Rechnervorrichtungen von Endbenutzern. Einige Cloud-Computing-Dienste ermöglichen Endbenutzern das Ausführen von Softwareanwendungen in Virtual Machines.
-
Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen.
-
ZUSAMMENFASSUNG
-
Benutzer können Metadaten definieren, z. B. Paarungen von Metadatenattributen und Metadatenwerte, die beim Konfigurieren von Virtual Maschine-Instanzen verwendet werden sollen. Wie sie in dieser Beschreibung verwendet werden, werden die Begriffe Paarungen von Metadatenattributen mit Metadatenwerten und Metadaten-Schlüsselwertpaare austauschbar verwendet. Jedes Metadaten-Schlüsselwertpaar kann mit einem oder mehreren Identifikatoren verknüpft werden. Die Identifikatoren können beispielsweise einen Projektidentifikator beinhalten, der sich auf ein spezifisches Projekt bezieht, mit der einen oder den mehreren Virtual Maschine-Instanzen verknüpft sind, einen Instanz-Identifikator, der sich auf eine spezifische Virtual Maschine-Instanz bezieht, oder einen Tag-Identifikator, der sich auf ein spezifisches Tag bezieht, das mit einer oder mehreren Virtual Maschine-Instanzen verknüpft ist. Jedes Metadaten-Schlüsselwertpaar wird in einer Metadatensammlung gespeichert, die durch einen spezifischen Identifikator identifiziert ist. So wird beispielsweise ein Metadaten-Schlüsselwertpaar, das mit einem Projektidentifikator P1 und einem Tag-Identifikator T1 verknüpft ist, in einer ersten Metadatensammlung, die durch den Projektidentifikator P1 identifiziert ist, und einer zweiten Metadatensammlung, die durch den Tag-Identifikator T1 identifiziert ist, gespeichert.
-
Beim Initialisieren von Virtual Maschine-Instanzen können Benutzer jede Virtual Maschine-Instanz mit einem oder mehreren Identifikatoren verknüpfen, z. B. einem Projektidentifikator, einem Instanz-Identifikator oder einem Tag-Identifikator, wie oben beschrieben. Jede Virtual Maschine-Instanz kann Metadaten beispielsweise von einem Metadaten-Server erlangen. In einigen Implementierungen kann eine Virtual Maschine-Instanz, die mit spezifischen Identifikatoren verknüpft ist, Metadaten erlangen, die auch mit den spezifischen Identifikatoren verknüpft sind. Jede Virtual Maschine-Instanz kann die erlangten Metadaten-Schlüsselwertpaare anwenden, um mehrere Einstellungen in Verbindung mit der jeweiligen Virtual Maschine-Instanz zu konfigurieren.
-
Generell kann ein Aspekt des beschriebenen Gegenstands in dieser Beschreibung in Verfahren ausgeführt werden, das die folgenden Aktionen beinhaltet: Verknüpfen einer oder mehrerer einer Vielzahl von Metadatensammlungen mit einem oder mehreren jeweiligen Identifikatoren, worin jede Metadatensammlung eine oder mehrere Paarungen von Metadatenattributen mit Metadatenwerten beinhaltet, und worin jeder Identifikator einer von einem Projektidentifikator, einem Tag-Identifikator oder einem Instanz-Identifikator ist; Identifizieren beruhend auf Identifikator-Information verknüpft mit einer Virtual Maschine-Instanz, eines oder mehrerer Metadatenwerte, die zur Virtual Machine-Instanz bereitgestellt werden sollen, wobei die Identifikator-Information einen oder mehrere von einem Projektidentifikator, einem Tag-Identifikator und einem Instanz-Identifikator spezifiziert, und wobei jede identifizierte Metadatenwert zu einer Metadatensammlung verknüpft mit einem Identifikator gehört, der in der Identifikator-Information spezifiziert ist; und Bereitstellen zur Virtual Maschine-Instanz des identifizierten einen oder der mehreren Metadatenwerte. Andere Ausführungsformen dieses Aspekts beinhalten entsprechende System-, Vorrichtungs- und Computerprogrammprodukte.
-
Diese und andere Ausführungsformen können als Option eins oder mehrere der folgenden Eigenschaften beinhalten. Das Verfahren beinhaltet ferner ein Erhalten einer Metadatenabfrage von der Virtual Maschine-Instanz, die die Identifikator-Information beinhaltet; und Identifizieren des einen oder der mehreren Metadatenwerte als Antwort auf den Erhalt der Metadatenabfrage. Die Metadatenabfrage wird unter Verwendung eines Hanging GET-Vorgangs kommuniziert. Das Verfahren beinhaltet ferner das Empfangen von Daten, die einen oder mehrere benutzerdefinierte Identifikatoren und eine oder mehrere benutzerdefinierte Paarungen von Metadatenwerten mit Metadatenattributen beinhalten; Erzeugen einer Metadatensammlung, die die eine oder mehrere benutzerdefinierte Paarungen beinhaltet; und Verknüpfen der erzeugten Metadatensammlung mit dem benutzerdefinierten Identifikator. Die Metadatensammlungen beinhaltet eine erste Metadatensammlung und eine zweite Metadatensammlung, wobei die erste Metadatensammlung mit einem ersten Identifikator verknüpft ist und eine Paarung von einem ersten Metadatenattribut mit einem ersten Metadatenwert beinhaltet, und die zweite Metadatensammlung mit einem zweiten Identifikator verknüpft ist und eine Paarung des ersten Metadatenattributs mit einem zweiten Metadatenwert beinhaltet, wobei der erste Metadatenwert sich vom zweiten Metadatenwert unterscheidet.
-
Das Verfahren beinhaltet ferner das Bereitstellen des ersten Metadatenwerts und des zweiten Metadatenwerts zur Virtual Maschinen-Instanz. Das Verfahren beinhaltet ferner das Bestimmen, dass die erste Metadatensammlung eine höhere Prioritätsebene hat als die zweite Metadatensammlung beruhend auf einer Bewertung des ersten Identifikators und des zweiten Identifikators; und ein Bereitstellen des ersten Metadatenwerts und nicht des zweiten Metadatenwerts zur Virtual Maschine-Instanz. Der erste Identifikator ist ein Instanz-Identifikator oder ein Tag-Identifikator und der zweite Identifikator ist ein Projektidentifikator oder der erste Identifikator ist ein Instanz-Identifikator und der zweite Identifikator ist ein Tag-Identifikator oder ein Projektidentifikator. Das Verfahren beinhaltet ferner ein Erhalten von Daten, die einen Identifikator und eine neue Paarung von einem Metadatenattribut mit einem Metadatenwert spezifizieren und ein Aktualisieren der Metadatensammlung, die mit dem spezifizierten Identifikator Daten verknüpft ist, um die neue Paarung zu beinhalten.
-
Bestimmte Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Die Rollen von Virtual Maschinen können beruhend auf ihren jeweiligen Tag-Identifikatoren definiert werden. Benutzer können Metadaten-Schlüsselwertpaare spezifizieren und die spezifizierten Metadaten-Schlüsselwertpaare können verwendet werden, um kollektiv Einstellungen für eine oder mehrere Virtual Maschine-Instanzen zu konfigurieren. Einstellungen und Rollen von Virtual Maschine-Instanzen können bei Aktualisierung dynamisch aktualisiert werden. Metadaten können mit Projektidentifikatoren oder Tag-Identifikatoren verknüpft werden, um die Durchführung von üblichen Konfigurationen und Eigenschaften bei vielfachen Virtual Maschine-Instanzen zu vereinfachen. In Fällen, wo Virtual Maschine-Instanzen nicht auf Metadaten zugreifen, die mit einem Instanz-Identifikator verknüpft sind, oder wenn der Zugang zu den Metadaten durch Richtlinien verboten ist, kann das Bearbeiten von Virtual Maschine-Instanzen, die eine Standardkonfiguration verwenden, vereinfacht werden.
-
Die Details von einer oder mehreren Ausführungsformen des Gegenstands dieser Beschreibung werden in den begleitenden Zeichnungen und in der nachfolgenden Beschreibung dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist eine schematische Darstellung eines Beispielsystems einer Virtual Maschine.
-
2 ist ein Schwimmbahndiagramm, das eine Konfiguration einer Virtual Maschine-Instanz unter Verwendung von Paarungen von Metadatenattributen mit Metadatenwerten darstellt.
-
3 ist ein Flussdiagramm von einem Beispielprozess zum Konfigurieren einer Virtual Maschine-Instanz unter Verwendung von Paarungen von Metadatenattributen mit Metadatenwerten.
-
4 ist ein schematisches Diagramm einer beispielhaften Host-Maschine.
-
Ähnliche Referenznummern und Bezeichnungen in den verschiedenen Zeichnungen weisen auf ähnliche Elemente hin.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 ist eine schematische Darstellung eines exemplarischen Virtual Machine-Systems 100. System 100 besteht aus einer oder mehreren Host-Maschinen wie Host-Maschine 102 und Host-Maschine 104. Allgemein gesagt stellt eine Host-Maschine eine oder mehrere Datenverarbeitungsvorrichtungen dar, wie beispielsweise Rack-montierte Server oder andere Computergeräte. Die Datenverarbeitungsvorrichtung kann sich an verschiedenen physikalischen Orten befinden und kann unterschiedliche Fähigkeiten und Computerarchitekturen aufweisen. Hostmaschinen können miteinander über ein internes Datenkommunikationsnetzwerk 116 kommunizieren. Das interne Netzwerk kann beispielsweise ein oder mehrere verdrahtete, z. B. Ethernet, oder drahtlose, z. B. Wi-Fi, Netzwerke beinhalten. In einigen Implementierungen ist das interne Netzwerk 116 ein Intraet. Host-Maschinen sind auch in der Lage, mit Geräten externer Netzwerke zu kommunizieren wie dem Internet 122, über ein oder mehrere Gateways 120. Dies sind Datenverarbeitungsgeräte, die für den Kommunikationsverkehr der Routingdaten zwischen dem internen Netzwerk 116 und dem externen Netzwerk 122 verantwortlich sind. Andere Arten von externen Netzwerken sind möglich.
-
Jede Host-Maschine 102, 104 führt ein Host-Betriebssystem 106, 108 aus. Ein Host-Betriebssystem 106, 108 verwaltet Host-Maschine-Ressourcen. In diesem Beispiel führen Host-Betriebssysteme 106, 108, Software aus, z. B. einen Virtual Maschine-Monitor („VMM”) oder einen Hypervisor, der die zugrunde liegende Host-Maschine-Hardware virtualisiert und eine gleichzeitige Ausführung von eine oder mehrere Instanzen von Virtual Maschines („VMs”) verwaltet. In diesem Beispiel verwaltet das Host-Betriebssystem 106 zwei VM-Instanzen, VM 110 und VM 112, während ein anderes Host-Betriebssystem 108 eine einzelne VM 114 verwaltet. VM-Instanzen können von einer Host-Maschine auf eine andere Host-Maschine migriert werden. Zusätzlich kann eine einzelne VM-Instanz von vielfachen Host-Maschinen verwaltet werden. Eine Host-Maschine kann generell vielfache Virtual Maschinen verwalten, allerdings kann die Anzahl beruhend auf den physikalischen Ressourcen der Host-Maschine begrenzt sein.
-
Jede VM-Instanz stellt eine Emulation eines physikalischen Hardware-Systems dar, die auf der Architektur der Host-Maschine-Hardware basieren kann, aber nicht muss. Die simulierte Version der Hardware wird hierin als virtuelle Hardware bezeichnet, z. B. virtuelle Hardware 110a, 112a und 114a. Software, die durch die virtuelle Hardware ausgeführt wird, wird als Gastsoftware bezeichnet. In einigen Implementierungen kann Gastsoftware nicht bestimmen, ob sie durch virtuelle Hardware oder durch eine physikalische Hostmaschine ausgeführt wird. Wenn eine ausgeführte Gast-Software in einer VM-Instanz, oder die VM-Instanz an sich beeinträchtigt ist, nicht richtig funktioniert oder abgebrochen wird, können andere ausgeführte VM-Instanzen auf der Host-Maschine nicht betroffen sein. (Ein) Mikroprozessor(en) einer Hostmaschine kann/können Mechanismen auf Prozessorebene umfassen, um virtueller Hardware zu ermöglichen, Softwareanwendungen effizient auszuführen, indem zugelassen wird, dass Gastsoftware-Anweisungen direkt auf dem Mikroprozessor der Hostmaschine ausgeführt werden, ohne dass Neuschreiben von Code, Neukompilierung oder Anweisungsemulation notwendig ist.
-
Jede VM-Instanz, z. B. VMs 110, 112 und 114 ist einer Reihe von virtuellen Speicherseiten vom virtuellen Speicher des zugrunde liegenden Host-Betriebssystems und zugewiesen und ist virtuellen Festplattenblöcken von einer oder mehreren virtuellen Festplatten zur Verwendung durch die Gast-Software, die auf der VM-Instanz ausgeführt wird, zugewiesen. So weist beispielsweise ein Host-Betrieb 106 Speicherseiten und Festplattenböcke VM 110 und VM 112 zu, und ein Host-Betriebssystem 108 macht das gleiche für VM 114. In solchen Implementierungen kann eine gegebene VM-Instanz nicht auf die virtuellen Speicherseiten zugreifen, die anderen VMs zugewiesen sind. So kann beispielsweise VM 110 nicht auf Speicherseiten zugreifen, die VM 112 zugeordnet wurden. Eine virtuelle Festplatte kann bei Neustarts von VM-Instanzen fortbestehen. Virtuelle Plattenblöcke werden auf physikalischen Plattenlaufwerken zugeordnet, die beispielsweise mit Hostmaschinen verbunden oder über das interne Netzwerk 116 verfügbar sind. Zusätzlich zu virtuellen Speicher- und Festplatten-Ressourcen können VM-Instanzen Netzwerkadressen zugewiesen werden, über die ihre jeweilige Gast-Software mit anderen Prozessen kommunizieren kann, die über das interne Netzwerk 116 oder das Internet 122 erreichbar sind. So kann beispielsweise Gastsoftware, die auf VM 110 ausgeführt wird, mit Gastsoftware kommunizieren, die auf VM 112 oder VM 114 ausgeführt wird. In einigen Implementierungen wird jede VM-Instanz einer oder mehreren einmaligen Adressen des Internet Protocol (IP) der Version 4 oder Version 6 zugewiesen. Andere Adresssysteme sind möglich. Die IP-Adressen der VM-Instanz sind im internen Netzwerk 116 adressierbar und in einigen Implementierungen sind sie im Internet 122 adressierbar, wenn die Adressen unter Verwendung von z. B. einem geeigneten Routing-Protokoll aufgegeben werden.
-
Eine Gast-Software einer VM-Instanz kann ein Gast-Betriebssystem beinhalten, z. B. Gast-Betriebssysteme 110b, 112b, und 114b, das eine Software ist, die die Ausführung jeweiliger Gast-Software-Anwendungen, z. B. Gastanwendungen 110c, 112c und 114c, in der VM-Instanz steuert und diesen Anwendungen dienste bereitstellt. So könnte beispielsweise ein Gast-Betriebssystem eine Variante des Betriebssystems UNIX sein. Andere Betriebssysteme, z. B. Microsoft Windows, und unterschiedliche Versionen dieser Betriebssysteme können als das Gast-Betriebssystem ausgeführt werden. Jede VM-Instanz kann dasselbe Gast-Betriebssystem oder andere Gast-Betriebssysteme ausführen. In weiteren Implementierungen erfordert eine VM-Instanz kein Gast-Betriebssystem, um Gast-Software-Anwendungen auszuführen. Ein Zugriff des Gastbetriebssystems auf Ressourcen wie Netzwerke und virtuelle Plattenspeicher wird durch das zugrunde liegende Betriebssystem gesteuert.
-
Wie das Beispiel der Virtual Maschine 110 zeigt, wird beim Versuch der Gast-Anwendung 110c oder des Gast-Betriebssystems 110b, eine Ein-/Ausgabeoperation auf einem virtuellen Schreibtisch durchzuführen, eine Netzwerkkommunikation zu starten oder eine privilegierte Operation durchzuführen die virtuelle Hardware 110a unterbrochen, sodass das Host-Betriebssystem 106 die Aktion für die Virtual Maschine 110 durchführen kann. Das Hostbetriebssystem 106 kann diese Handlungen mit einem Prozess durchführen, der in Kernelprozessraum 106b, Benutzerprozessraum 106a oder beiden ausgeführt wird.
-
Der Kernprozessbereich 106b z. B. ist ein virtueller Speicher, der für den Kern 106d des Host-Betriebssystems 106 einschließlich Kernerweiterungen und Gerätetreibern reserviert ist. Der Kernel-Prozessraum hat höhere Privilegien, die manchmal als ein „Supervisor Modus” bezeichnet werden; d. h. das Kernel 106d kann privilegierte Vorgänge ausführen, die außerhalb den Grenzen der Prozesse sind, die im Benutzerprozessraum 106a laufen. Beispiele für vorrangige Operationen umfassen Zugriff auf verschiedene Adressräume, Zugriff auf spezielle Funktionsprozessoreinheiten in der Hostmaschine wie Speicherverwaltungseinheiten usw. Der Benutzerprozessraum 106a ist ein separater Teil virtuellen Speichers, der für Prozesse des Benutzermodus reserviert ist. Prozesse des Benutzermodus können vorrangige Operationen nicht direkt durchführen.
-
In mehreren Implementierungen ist ein Teil der Netzwerk-Kommunikationsfunktionen der VM-Instanz einem Kommunikationsprozess implementiert, z. B. Kommunikationsprozess 106c. In einigen Implementierungen wird der Kommunikationsprozess im Benutzerprozessraum ausgeführt, z. B. Benutzerprozessraum 106a eines Host-Betriebssystems, z. B. Host-Betriebssystem 106. In anderen Implementierungen kann der Kommunikationsprozess im Kernel-Prozessraum ausgeführt werden, z. B. Kernel-Prozessraum 106d des Host-Betriebssystems. In wieder anderen Implementierungen wird ein Teil des Kommunikationsprozesses im Benutzerbereich ausgeführt und ein Teil im Kernprozessbereich.
-
Das System 100 beinhaltet einen Metadaten-Server 130, der Metadaten für VM-Instanzen im System 100 verwaltet und Zugang dazu bereitstellt. Der Metadaten-Server 130 kann als ein oder mehrere Computerprogramme implementiert sein, die auf einem oder mehreren Computern im System 100 installiert sind. Der Metadaten-Server 130 kann beispielsweise auf einer spezifischen Host-Maschine installiert sein. Der Metadaten-Server 130 kann auch als eine VM-Instanz im System 100 implementiert sein. Generell befindet sich der Metadaten-Server 130 im selben Datenzentrum wie die VM-Instanzen, die der Metadaten-Server 130 bedient, obwohl sich der Metadaten-Server 130 auch an einem anderen Ort befinden und beispielsweise über das Internet zugänglich sein kann.
-
Metadaten können unter Verwendung von jedem geeigneten Netzwerk-Kommunikationsprotokoll auf den Metadaten-Server 130 geschrieben und von dort gelesen werden. In einigen Implementierungen sind die Lese- und Schreibbefehle unter Verwendung von konventionellen Befehlen „GET” und „PUT” des Hypertext Transfer Protocol (HTTP) implementiert. In einigen Implementierungen können Benutzer unter Verwendung von einer Application Programming Interface (API) angepasste Metadaten zum Metadaten-Server 130 bereitstellen.
-
Jedes Element von Metadaten ist ein Schlüsselwertpaar. Der Schlüssel, bzw. das Attribut, identifiziert unverwechselbar einen Typ von Metadaten. Der Wert kann ein oder mehrere Datenstücke sein, beispielsweise Textketten. Ein Benutzer kann beispielsweise einen Metadatenschlüssel „hostname” und einen entsprechenden Metadatenwert „myinst.myproject.mydomain.intemal” spezifizieren. Benutzer können auch jedes Schlüsselwertpaar mit einem oder mehreren jeweiligen Identifikatoren verknüpfen. In einigen Implementierungen beinhaltet der eine oder die mehreren Identifikatoren einen Projektidentifikator, einen Instanz-Identifikator oder einen Tag-Identifikator. So kann beispielsweise sich ein Projektidentifikator auf ein spezifisches Projekt beziehen, das von einem Benutzer erstellt wurde. Ein Instanz-Identifikator kann sich auf eine spezifische Virtual Maschine-Instanz beziehen. Ein Tag-Identifikator kann sich auf ein spezifisches Tag beziehen, z. B. „Front-End-Webserver” oder „sql server”, womit eine oder mehrere Virtual Maschine-Instanzen verknüpft sind. In einigen Implementierungen können Benutzer angepasste Identifikatoren spezifizieren, die mit Schlüsselwertpaaren verknüpft sind. So kann beispielsweise ein Benutzer einen Maschinentyp-Identifikator spezifizieren, der mit einem Metadatenschlüssel „hostname” verknüpft werden kann.
-
In einigen Implementierungen ist der Zugang zu Metadaten, die mit einer oder mehreren Identifikatoren verknüpft sind, auf VM-Instanzen beschränkt, die auch mit den einen oder den mehreren Identifikatoren verknüpft sind. So kann beispielsweise eine VM-Instanz, die mit einem Projektidentifikator P1 verknüpft ist, auf Metadaten zugreifen, die mit dem Projektidentifikator P1 verknüpft sind, aber nicht auf Metadaten, die mit einem Projektidentifikator P2 verknüpft sind. Auf ähnliche Art und Weise können ähnliche Tag-Identifikatoren mit verschiedenen Projektidentifikatoren verknüpft werden. Somit kann beispielsweise ein erster Tag-Identifikator „Front-End-Webserver” mit einem Projektidentifikator P1 verknüpft sein, während ein zweiter Tag-Identifikator „Front-End-Webserver” mit einem Projektidentifikator P2 verknüpft werden kann. In diesem Beispiel haben Metadaten, die mit dem ersten Tag-Identifikator „Front-End-Webserver” im Projekt P1 verknüpft sind, keine Beziehung zu Metadaten, die mit dem zweiten Tag-Identifikator „Front-End-Webserver” im Projekt P2 verknüpft sind. Somit können VM-Instanzen, die mit dem Projektidentifikator P1 verknüpft sind, nicht auf Metadaten zugreifen, die mit dem Projektidentifikator P2 verknüpft sind. Auf ähnliche Art und Weise können VM-Instanzen, die mit dem Projektidentifikator P2 verknüpft sind, nicht auf Metadaten zugreifen, die mit dem Projektidentifikator P1 verknüpft sind. Dies ist eine nützliche Eigenschaft für ein mandantenfähiges System, das sie gewährleistet, dass Metadaten geheim bleiben und nicht VM-Instanzen sichtbar sind, die nicht mit den richtigen Identifikatoren verknüpft sind.
-
Der Metadaten-Server 130 ist konfiguriert, um benutzerdefinierte Schlüsselwertpaare und ihre entsprechenden Identifikatoren zu erhalten. In einigen Implementierungen kategorisiert und speichert der Metadaten-Server 130 erhaltene Schlüsselwertpaare in einer oder mehreren Metadatensammlungen basierend auf ihren jeweiligen Identifikatoren. So kann beispielsweise ein Metadaten-Schlüsselwertpaar, das mit einem Projektidentifikator P1 und einem Tag-Identifikator T1 verknüpft ist, in einer ersten Metadatensammlung gespeichert werden, die dem Projektidentifikator P1 entspricht, und einer zweiten Metadatensammlung, die dem Tag-Identifikator T1 entspricht.
-
Der Metadaten-Server 130 ist auch konfiguriert, um Anfragen von VM-Instanzen zu erhalten, die Metadaten anfordern. Benutzer können die Konfiguration von VM-Instanzen, die im System 100 laufen, durch Verknüpfen der VM-Instanzen mit einem oder mehreren jeweiligen Identifikatoren anpassen, z. B. einem Projektidentifikator, einem Instanz-Identifikator oder einem Tag-Identifikator, wie oben beschrieben. So kann beispielsweise ein Benutzer spezifizieren, dass eine VM-Instanz mit einem Projektidentifikator P1, einem Instanz-Identifikator M1 und Tag-Identifikatoren „sql server” und „Front-End-Webserver” verknüpft ist. In einigen Implementierungen kann jede VM-Instanz mit nur einem Projektidentifikator verknüpft sein.
-
Beim Start kann die VM-Instanz den Metadaten-Server 130 abfragen, um Metadaten zu erlangen, die mit denselben Identifikatoren verknüpft sind, die mit der VM-Instanz verknüpft sind. Somit kann beispielsweise eine VM-Instanz, die mit einem Projektidentifikator P1, einem Instanz-Identifikator M1, und Tag-Identifikatoren „sql server” und „Front-End-Webserver” verknüpft ist, den Metadaten-Server 130 abfragen, um Metadaten zu erlangen, die auch mit dem Projektidentifikator P1, dem Instanz-Identifikator M1 und den Tag-Identifikatoren „sql server” und „”Front-End-Webserver” verknüpft sind. Als Antwort auf das Erhalten der Abfrage kann der Metadaten-Server 130 Metadatensammlungen identifizieren, die jeweils dem Projektidentifikator P1, dem Instanz-Identifikator M1 und den Tag-Identifikatoren „sql server” und „Front-End-Webserver” entsprechen. Der Metadaten-Server 130 kann Metadaten bereitstellen, die in den identifizierten Metadatensammlungen zu der VM-Instanz kategorisiert waren. Die VM-Instanz kann die erhaltenen Metadaten anwenden, um mehrere Einstellungen in Verbindung mit der VM-Instanz zu konfigurieren.
-
So kann beispielsweise ein Benutzer einen ersten Metadatenschlüssel „sshKeys” und entsprechenden Wert, z. B. „joe:ssh-rsa <SSH key>”, die Benutzerkonten und entsprechende öffentliche SSH-Schlüssel beschreiben, mit einem Projektidentifikator P1 verknüpfen. Der Benutzer kann auch einen zweiten Metadatenschlüssel „allowedHosts” und entsprechenden Wert, z. B. „192.0.2.24/30”, die Adressen des Internet Protocol (IP) beschreiben, denen es erlaubt ist, sich mit einer VM-Instanz zu verbinden, mit dem Projektidentifikator P1 verknüpfen. Der Benutzer kann dann einen dritten Metadatenschlüssel „startupScript” und entsprechenden Wert, z. B. ein Shell-Script, das einen Webserver konfiguriert und startet, mit einen Tag-Identifikator „web” verknüpfen. Schließlich kann der Benutzer einen vierten Metadatenschlüssel „allowedHosts” und entsprechenden Wert, z. B. „0.0.0.0/0”, die IP-Adressen beschreiben, denen es erlaubt ist, sich mit einer VM-Instanz zu verbinden, mit einem Instanz-Identifikator „shell” verknüpfen.
-
In einigen Implementierungen können Benutzer spezifische Identifikatoren spezifizieren, die mit einer oder mehreren VM-Instanzen unter Verwendung von einer Application Programming Interface (API) verknüpft werden sollen. Eine Systemkomponente in jeder VM-Instanz ist konfiguriert, um die benutzerdefinierten Identifikatoren zu erhalten, und um die Identifikatoren mit der jeweiligen VM-Instanz zu verknüpfen.
-
Ein Benutzer kann eine VM-Instanz initialisieren und kann die VM-Instanz mit einem Projektidentifikator P1 und einem Instanz-Identifikator „shell” verknüpfen. Beim Start kann die VM-Instanz den Metadaten-Server 130 abfragen, um Metadaten zu erlangen, die mit dem Projektidentifikator P1 und dem Instanz-Identifikator „shell” verknüpft sind. Als Antwort auf die Anfrage kann der Metadaten-Server 130 der VM-Instanz Metadaten bereitstellen, die mit dem Projektidentifikator P1 verknüpft sind, z. B. die ersten und zweiten Metadaten-Schlüsselwertpaare, und Metadaten, die mit dem Instanz-Identifikator „shell” verknüpft sind, z. B. das vierte Metadaten-Schlüsselwertpaar. In einigen Implementierungen stellt der Metadaten-Server 130 der VM-Instanz die jeweiligen Pfade des Uniform Resource Locator (URL) bereit, der sich auf die angeforderten Metadaten bezieht. So kann beispielsweise der Metadaten-Server 130 eine erste URL bereitstellen, z. B. „/vlbeta/computemetadata/project/attributes/sshKeys”, der sich auf das Schlüsselwertpaar „sshKeys” bezieht, das mit dem Projektidentifikator P1 verknüpft ist, eine zweite URL, z. B. „/vlbeta/computemetadata/project/attributes/allowedHosts”, die sich auf das Schlüsselwertpaar „allowedHosts” bezieht, das mit dem Projektidentifikator P1 verknüpft ist, und eine dritte URL, z. B. „/vlbeta/computemetadata/instance/attributes/allowedHosts”, die sich auf das Schlüsselwertpaar „allowedHosts” bezieht, das mit dem Instanz-Identifikator „shell” verknüpft ist. Die VM-Instanz kann dann die erhaltenen Metadaten verarbeiten, um die VM-Instanz zu konfigurieren. Wenn der Benutzer in diesem Beispiel die VM-Instanz mit einen Tag-Identifikator „web” verknüpft hatte, würde der Metadaten-Server 130 dann der VM-Instanz eine vierte URL bereitstellen, z. B. „/vlbeta/computemetadata/tags/web/attributes/startupScript”, die sich auf das Schlüsselwertpaar „startupScript” bezieht, das mit dem Tag-Identifikator „web” verknüpft ist.
-
In einigen Instanzen kann ein Metadatenkonflikt entstehen, wenn verschiedene Werte fur einen Metadatenschlüssel spezifiziert werden, der mit mehr als einer Metadatensammlung verknüpft ist, z. B. mit mehr als einem Identifikator, und wenn eine VM-Instanz mit diesen Identifikatoren verknüpft ist. Wie im Beispiel oben beschrieben, hat der zweite Metadatenschlüssel „allowedHosts”, der mit dem Projektidentifikator P1 verknüpft ist, einen entsprechenden Wert „192.0.2.24/30”, während der vierte Metadatenschlüssel „allowedHosts”, der mit dem Instanz-Identifikator „shell” verknüpft ist, einen entsprechenden Wert „0.0.0.0/0” hat. Da die VM-Instanz in diesem Beispiel mit dem Projektidentifikator P1 und dem Instanz-Identifikator „shell” verknüpft ist, besteht ein Konflikt, ob der Metadatenwert des zweiten Metadatenschlüssels „allowedHosts”, z. B. „192.0.2.24/30”, oder des vierten Metadatenschlüssels „allowedHosts”, z. B. „0.0.0.0/0” verwendet wird, um die VM-Instanz zu konfigurieren.
-
In einigen Implementierungen stellt der Metadaten-Server 130 alle in Konflikt stehenden Metadaten zu der VM-Instanz bereit, und die VM-Instanz bestimmt selbst, welcher Metadatenwert verwendet wird, um die VM-Instanz zu konfigurieren. In einigen Implementierungen bestimmt der Metadaten-Server 130, welches Metadaten-Schlüsselwertpaar einen höheren Prioritätsgrad hat, indem er jeweilige Identifikatoren bewertet, die mit den Metadaten-Schlüsselwertpaaren verknüpft sind, und stellt zu der VM-Instanz das Metadaten-Schlüsselwertpaar bereit, das mit dem höheren Prioritätsgrad verknüpft ist. In einigen Implementierungen werden Instanz-Identifikatoren und Tag-Identifikatoren höher priorisiert als Projektidentifikatoren. In einigen Implementierungen werden Instanz-Identifikatoren höher priorisiert als Tag-Identifikatoren und Projektidentifikatoren.
-
In einigen Implementierungen können Benutzer VM-Instanzen neu konfigurieren, indem sie Metadatensammlungen aktualisieren. So kann beispielsweise ein Benutzer neue Metadaten-Schlüsselwertpaare spezifizieren, oder der Benutzer kann Metadatenwerte für vorhandene Metadatenschlüssel aktualisieren. VM-Instanzen können konfiguriert werden, um automatisch den Metadaten-Server 130 abzufragen, um die neuen oder aktualisierten Metadaten zu erlangen, wie nachfolgend beschrieben in Bezug auf 2. Die VM-Instanzen können verwendet werden, um Metadaten zu erlangen, um mehrere Einstellungen in Verbindung mit der VM-Instanz neu zu konfigurieren.
-
In einigen Implementierungen wird jede VM-Instanz, z. B. VM 110, 112 oder 114, mit einem verschiedenen Metadaten-Server gepaart, z. B. dem Metadaten-Server 130. In einigen Implementierungen wird jede Host-Maschine, z. B. Host-Maschinen 102 oder 104, mit einem verschiedenen Metadaten-Server gepaart, z. B. dem Metadaten-Server 130. In einigen Implementierungen ist der Metadaten-Server, z. B. der Metadaten-Server 130, als ein verteiltes System konfiguriert.
-
2 ist ein Schwimmbahndiagramm, das eine Konfiguration einer Virtual Maschine-Instanz unter Verwendung von Paarungen von Metadatenattributen mit Metadatenwerten darstellt.
-
Ein Benutzer, der ein Benutzergerät betreibt, stellt Metadaten, z. B. Schlüsselwertpaare, und einen oder mehrere entsprechende Identifikatoren zu einem Metadaten-Server bereit, wie oben beschrieben (202). In einigen Implementierungen können Benutzer Werte für Metadatenschlüssel bereitstellen, z. B. „attached-disks”, um eine Liste kurz- und langlebiger Festplatten zu spezifizieren, und kann die Metadaten mit einer oder mehreren Identifikatoren verknüpfen, um VM-Instanzen zu konfigurieren, die mit dem einen eine oder den mehreren Identifikatoren verknüpft sind, um die kurz- und langlebigen Festplatten zu verwenden. Andere Beispiele von Metadaten, für die Benutzer angepasste Werte bereitstellen können, enthalten einen Metadatenschlüssel, z. B. „description”, um eine Beschreibung einer Instanz zu spezifizieren, einen Metadatenschlüssel, z. B. „domain”, um eine Domäne eines VM-Instanz-Hostnamen zu spezifizieren, einen Metadatenschlüssel, z. B. „hostname”, um einen Host-Namen für eine Instanz zu spezifizieren, einen Metadatenschlüssel, z. B. „image”, um ein Bild zu spezifizieren, das zum Initialisieren einer VM-Instanz verwendet werden soll.
-
Zusätzlich können Benutzer angepasste Werte bereitstellen für einen Metadatenschlüssel, z. B. „machine-type”, der einen Maschinentyp identifiziert, z. B. einen Maschinentyp mit einer spezifischen Anzahl von Central Processing Units (CPUs) und Speicherkonfiguration, einen Metadatenschlüssel, z. B. „network”, um spezifische Netzwerkinformation zu spezifizieren, einen Metadatenschlüssel, z. B. „zone”, um eine Zone zu spezifizieren, z. B. Zeitzone. Ferner können Benutzer angepasste Werte bereitstellen für einen Metadatenschlüssel, z. B. „sshKeys”, um eine Liste mit sicheren Schlüsseln Secure Shell (SSH) zu spezifizieren, die verwendet werden können, um sich mit einer Instanz zu verbinden, einen Metadatenschlüssel, z. B. „startup-script”, um ein Start-Script zu spezifizieren, das ausgeführt wird, wenn eine Instanz startet, einen Metadatenschlüssel, z. B. „startup-script-url”, um einen URL (Uniform Resource Locator) eines Start-Scripts zu spezifizieren, das ausgeführt wird, wenn eine Instanz startet.
-
Der Metadaten-Server verknüpft eine oder mehrere Metadatensammlungen mit jeweiligen Identifikatoren (204). Wie oben beschrieben kategorisiert und speichert der Metadaten-Server in einigen Implementierungen die erhaltenen Metadaten in einer eine oder mehreren jeweilige Metadatensammlungen beruhend auf den Identifikatoren entsprechend den erhaltenen Metadaten. Somit kann der Metadaten-Server beispielsweise alle erhaltenen Metadaten, die mit einem spezifischen Projektidentifikator, z. B. P1, in einer ersten Metadatensammlung kategorisieren und speichern, und kann die erste Metadatensammlung mit dem spezifischen Projektidentifikator, z. B. P1 verknüpfen. Auf ähnliche Art und Weise kann der Metadaten-Server beispielsweise alle erhaltenen Metadaten, die mit einem spezifischen Tag-Identifikator, z. B. T1, in einer zweiten Metadatensammlung kategorisieren und speichern, und kann die zweite Metadatensammlung mit dem spezifischen Projektidentifikator, z. B. T1 verknüpfen.
-
Eine VM-Instanz, die mit spezifischen Identifikatoren verknüpft ist, sendet Metadatenabfrage zu dem Metadaten-Server, um Metadaten zu erlangen, die auch mit den spezifischen Identifikatoren (206) verknüpft sind. In einigen Implementierungen ist eine VM-Instanz konfiguriert, um den Metadaten-Server nach Metadaten abzufragen, wenn die VM-Instanz initialisiert wird, z. B. beim Start. In einigen Implementierungen ist eine VM-Instanz konfiguriert, um den Metadaten-Server in spezifizierten Zeitintervallen nach Metadaten abzufragen, wie z. B. in einem regelmäßig ausgeführten Programm.
-
In einigen Implementierungen ist eine VM-Instanz konfiguriert, um den Metadaten-Server unter Verwendung von einem Vorgang „Hanging GET” abzufragen. So kann beispielsweise die VM-Instanz den konventionellen „GET”-Vorgang des Hypertext Transfer Protocol (HTTP) „GET” verwenden, um Metadaten abzufragen. In Situationen, wo der Metadaten-Server bereits die VM-Instanz mit Metadaten bereitgestellt hat, kann die VM-Instanz „hang”, oder die HTTP „GET”-Verbindung aufrechterhalten, um weiter zu warten, bis der Metadaten-Server neue oder aktualisierte Metadaten hat, um die VM-Instanz bereitzustellen. Wenn in solchen Implementierungen die HTTP „GET”-Verbindung wegen Inaktivität geschlossen wird, z. B. eine Zeitüberschreitung, kann die VM-Instanz konfiguriert werden, um die Verbindung wiederherzustellen und weiter auf neue oder aktualisierte Metadaten zu warten.
-
Der Metadaten-Server erhält die Abfrage zur Anforderung von Metadaten, die mit spezifischen Identifikatoren verknüpft sind, wie oben beschrieben (208). Der Metadaten-Server kann Daten kommunizieren, z. B. Abfragen und Metadaten unter Verwendung von jedem geeigneten Netzwerk-Kommunikationsprotokoll oder von konventionellen oder unter Verwendung von konventionellen Befehlen „GET” und „PUT” des Hypertext Transfer Protocol (HTTP).
-
Der Metadaten-Server identifiziert Metadaten, die der Metadatenabfrage (210) entsprechen. Der Metadaten-Server kann eine oder mehrere Metadatensammlungen identifizieren, die jeweils den spezifischen Identifikatoren, wie oben beschrieben unter Bezugnahme auf 1.
-
Der Metadaten-Server stellt die Metadaten bereit, die der Abfrage der VM-Instanz (212) entsprechen. Der Metadaten-Server kann Metadaten bereitstellen, die in der identifizierten Metadatensammlungen zu der VM-Instanz kategorisiert und gespeichert waren, wie oben beschrieben.
-
Die VM-Instanz erhält und wendet die Metadaten an, um die VM-Instanz (214) zu konfigurieren. In einigen Implementierungen konfiguriert sich die VM-Instanz selbst durch Aktualisieren einer besonderen Einstellung in Verbindung mit der VM-Instanz, beispielsweise durch Aktualisieren von Daten in einer spezifischen Datei. So kann beispielsweise die VM-Instanz einen Metadatenschlüssel „hostname” und seinen entsprechenden Wert „example.com” erhalten. Beruhend auf dem Schlüssel „hostname” kann die VM-Instanz konfiguriert werden, um eine spezifische Datei, z. B. „/etc/hostname” mit dem Wert „example.com” zu aktualisieren. Bei Aktualisieren der Datei „/etc/hostname” kann die VM-Instanz ihre Netzwerkkonfiguration aktualisieren, sodass die Domäne VM-Instanz „example.com” entspricht.
-
3 ist ein Flussdiagramm von einem Beispielprozess 300 zum Konfigurieren einer Virtual Maschine-Instanz unter Verwendung von Paarungen von Metadatenattributen mit Metadatenwerten. Zur Vereinfachung wird der Prozess 300 in Bezug auf ein System beschrieben, z. B. der Metadaten-Server 130, einhaltend eine oder mehrere Datenverarbeitungsvorrichtungen, die den Prozess 300 ausführen.
-
Das System verknüpft eine oder mehrere Metadatensammlungen mit jeweiligen Identifikatoren, wie oben beschrieben (302).
-
Das System erhält eine Metadatenabfrage zur Anforderung von Metadaten, die mit spezifischen Identifikatoren verknüpft sind, wie oben beschrieben (304). Zum Beispiel kann das System die Anfrage von einer VM-Instanz, die auch mit den spezifischen Identifikatoren verknüpft ist.
-
Das System identifiziert Metadaten, die der Metadatenabfrage entsprechen, wie oben beschrieben (306).
-
Das System stellt die Metadaten zu der VM-Instanz bereit, wie oben beschrieben (308).
-
4 ist ein schematisches Diagramm einer beispielhaften Host-Maschine. Die Host-Maschine 400 aus einem Datenverarbeitungsgerät 402. Das Datenverarbeitungsgerät 402 kann optional mit einem oder mehreren anderen Computer 490 über ein Netzwerk 480 kommunizieren. Während nur ein Datenverarbeitungsgerät 402 in der 4 gezeigt wird, können vielfache Datenverarbeitungsgeräte an einem oder mehreren Standorten verwendet werden. Das Datenverarbeitungsgerät 402 beinhaltet verschiedene Module, z. B. ausführbare Software-Programme. Eines der Module ist das Kernel 406 eines Host-Betriebssystems (z. B. Host-Betriebssystem 106). Ein Virtual Maschine-Modul 408 (z. B. Virtual Maschine 110) beinhaltet virtuelle Hardware (z. B. virtuelle Hardware 110a), ein Gast-Betriebssystem (z. B. Gast-Betriebssystem 110b) und Gastanwendungen (Gastanwendungen 110c). Obwohl mehrere Softwaremodule dargestellt sind, kann es weniger oder mehr Softwaremodule geben. Außerdem können die Softwaremodule auf einem oder mehreren Datenverarbeitungsgeräten verteilt werden, die durch ein oder mehrere Netzwerke oder andere geeignete Kommunikationsmedien verbunden sind.
-
Das Datenverarbeitungsgerät 402 beinhaltet auch Hardware- oder Firmware-Vorrichtungen, beinhaltend einen oder mehrere Prozessoren 412, eine oder mehrere zusätzliche Vorrichtungen 414, ein computerlesbares Speichermedium 416, eine Kommunikationsschnittstelle 418 und optional eine oder mehrere Benutzeroberflächenvorrichtungen 420. Jeder Prozessor 412 ist in der Lage, Anweisungen zur Ausführung in dem Datenverarbeitungsgerät 402 zu verarbeiten. In einigen Implementierungen ist der Prozessor 412 ein Einfach- oder Multithreading-Prozessor. Jeder Prozessor 412 ist in der Lage, Anweisungen zu verarbeiten, die auf dem computerlesbaren Speichermedium 416 oder auf einer Speichervorrichtung, wie z. B. eine der zusätzlichen Vorrichtungen 414, gespeichert sind. Das Datenverarbeitungsgerät 402 verwendet seine Kommunikationsschnittstelle 418, um mit einem oder mehreren Computer 490 zu kommunizieren, beispielsweise über ein Netzwerk 480. Beispiele von Benutzeroberflächenvorrichtungen 420 beinhalten eine Anzeige, eine Kamera, einen Lautsprecher, ein Mikrofon, eine Vorrichtung mit Touch-Rückmeldung, eine Tastatur und eine Maus. Das Datenverarbeitungsgerät 402 kann Anweisungen speichern, die Vorgänge in Verbindung mit den oben beschriebenen Modulen implementieren, beispielsweise auf dem computerlesbaren Speichermedium 416 oder auf einem oder mehreren der zusätzlichen Vorrichtungen 414, zum Beispiel eine oder mehrere CD-Vorrichtung, eine Festplattenvorrichtung, eine optionale Festplattenvorrichtung oder eine Bandvorrichtung.
-
4 ist auch ein schematisches Diagramm eines beispielhaften Metadaten-Servers. Der Metadaten-Server besteht generell aus einem oder mehreren Datenverarbeitungsgerät an einem oder mehreren Standorten. Jeder Prozessor ist fähig, Anweisungen zur Ausführung innerhalb des Datenverarbeitungsapparats zu verarbeiten. In manchen Implementierungen ist der Prozessor ein Single- oder Multi-Thread-Prozessor. Jeder Prozessor ist in der Lage, Anweisungen auszuführen, die auf einem computerlesbaren Speichermedium oder auf einem Speichergerät, wie einem der zusätzlichen Geräte, gespeichert sind. Der Datenverarbeitungsapparat verwendet seine Kommunikationsschnittstelle, um mit einem oder mehreren Computer zu kommunizieren, zum Beispiel über ein Netzwerk. Jeder Prozessor ist fähig, Anweisungen zur Ausführung innerhalb des Datenverarbeitungsapparats zu verarbeiten.
-
Ausführungsformen des Gegenstands und die in dieser Spezifikation beschriebenen Tätigkeiten können in digitalen elektronischen Schaltungen oder konkret implementierter Computer-Software, Firmware oder Hardware implementiert werden, einschließlich der in dieser Spezifikation offengelegten Strukturen und ihrer strukturellen Entsprechungen oder in Kombinationen von einer oder mehrerer von ihnen. Ausführungsformen des in dieser Spezifikation beschriebenen Gegenstands können als ein oder mehrere Computerprogramme, d. h. als ein oder mehrere Module von Computerprogrammanweisungen implementiert werden, die auf einem Computer-Speichermedium für die Durchführung durch oder die Kontrolle des Betriebs des datenverarbeitenden Apparats kodiert werden. Alternativ oder zusätzlich können die Programmanweisungen auf einem künstlich erzeugten propagierten Signal, z. B. einem maschinell erzeugten elektrischen, optischen oder elektromagnetischen Signal künstlich kodiert werden, das erzeugt wird, um Informationen für die Übertragung auf einen geeigneten Empfängerapparat für die Ausführung durch einen datenverarbeitenden Apparat zu kodieren. Bei einem Computer-Speichermedium kann es sich um ein maschinell lesbares Speichergerät, einen maschinell lesbaren Speicherträger, eine zufällige oder serielle Direktzugriffsspeichervorrichtung oder um eine Kombination aus einem oder mehreren dieser Geräte handeln.
-
Der Begriff „datenverarbeitender Apparat” umfasst jegliche Apparate, Vorrichtungen oder Maschinen zur Verarbeitung von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Computers bzw. mehrerer Prozessoren oder Computer. Das Gerät kann logische Sonderzweckschaltungen für spezielle Zwecke beinhalten, z. B. ein FPGA (feldprogrammierbares Gate-Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung). Der Apparat kann neben der Hardware auch einen Code einschließen, der eine Durchführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem oder eine Kombination einer oder mehrerer der genannten darstellt.
-
Ein Computerprogramm (auch bezeichnet oder beschrieben als Programm, Software, Softwareanwendung, Modul, Softwaremodul, Script oder Code) kann in einer beliebigen Form von Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder verfahrensorientierter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt sein, darunter als unabhängiges Programm oder als ein Modul, eine Komponente, eine Subroutine oder eine andere Einheit, die zur Benutzung in einer Rechenumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht, einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert sein, die andere Programme oder Daten beinhaltet, z. B. ein oder mehrere Scripts, die in einem Dokument in Markup-Sprache gespeichert sind, in einer einzelnen Datei speziell für das betreffende Programm oder in mehreren koordinierten Dateien, z. B. Dateien, die ein oder mehrere Module, Unterprogramme oder Teile von Code speichern. Ein Computerprogramm kann auf einem Computer oder mehreren Computer eingerichtet sein oder ausgeführt werden, die an einem Standort angeordnet sind oder über mehrere Standorte verteilt sind und über ein Kommunikationsnetz verbunden sind.
-
Die in dieser Beschreibung dargestellten Prozesse und Logik-Abläufe können durch einen oder mehrere programmierbare Computer durchgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Funktionen durch das Arbeiten mit Eingabedaten und das Erzeugen von Ausgaben auszuführen. Die Prozesse und die logischen Abläufe können auch durch logische Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
-
Prozessoren, die für die Durchführung eines Computerprogramms geeignet sind, können beispielsweise auf allgemeinen oder Spezial-Mikroprozessoren oder auf beiden oder auf jeglicher Art zentraler Verarbeitungseinheit basieren. Ganz allgemein nimmt eine zentrale Verarbeitungseinheit Anweisungen und Daten von einem schreibgeschützten Speicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind eine zentrale Verarbeitungseinheit für das Durchführen von Anweisungen und ein oder mehr Speichergeräte für das Speichern von Anweisungen und Daten.
-
Ganz allgemein gehören zu einem Computer auch ein oder mehr Massenspeichergeräte für das Speichern von Daten, z. B. Magnet-, magnetooptische oder optische Disketten, um Daten entgegenzunehmen und/oder zu übertragen, bzw. ist ein Computer operativ an ein solches Speichergerät gekoppelt. Jedoch muss ein Computer solche Geräte nicht haben. Außerdem kann ein Computer in einem anderen Gerät eingebettet sein, z. B. in einem Mobiltelefon, einem Organizer (PDA), einem mobilen Audio- oder Videoplayer, einer Spielkonsole, einem Funknavigationsempfänger oder einem tragbaren Speichergerät, z. B. in einem USB-Stick, um nur einige zu nennen.
-
Computerlesbare Medien, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Permanentspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und Flash-Speichergeräte; Magnetdisketten, z. B. interne Festplatten oder herausnehmbare Disketten; magnetooptische Disketten; und CD-ROMs und DVD-ROMs. Der Prozessor und der Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein.
-
Um die Interaktion mit einem Benutzer zu ermöglichen, können in dieser Spezifikation beschriebene Ausführungsformen des Gegenstands auf einem Computer mit einem Anzeigegerät implementiert werden, z. B. einem CRT (Kathodenstrahlröhre) oder LCD-(Flüssigkristallanzeige) Monitor, mit welchem dem Benutzer Informationen angezeigt werden, sowie einer Tastatur und einem Anzeigegerät, z. B. einer Maus oder einem Trackball, mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. Darüber hinaus kann ein Computer über das Senden von Dokumenten an und das Empfangen von Dokumenten von einer Einrichtung, die vom Benutzer verwendet wird, mit einem Benutzer interagieren; beispielsweise über das Senden von Webpages an einen Webbrowser auf dem Clientgerät des Benutzers als Antwort auf die vom Webbrowser empfangenen Aufforderungen.
-
Ausführungsformen des in dieser Spezifikation betrachteten Gegenstands können in ein Computersystem implementiert werden, das eine Backend-Komponente (z. B. einen Datenserver), oder eine Middleware-Komponente (z. B. einen Anwendungsserver) oder eine Frontend-Komponente (z. B. einen Kundencomputer mit graphischer Benutzeroberfläche oder einem Webbrowser) umfasst, worüber der Benutzer mit einer Implementierung des in dieser Spezifikation beschriebenen Gegenstands interagieren kann oder eine beliebige Kombination aus solchen Backend, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk („LAN”), ein Fernnetz („WAN”), wie z. B. das Internet.
-
Das Informatiksystem kann Kunden und Server umfassen. Ein Client und Server befinden sich im Allgemeinen ortsfern voneinander und interagieren typischerweise über ein Kommunikationsnetz. Die Beziehung zwischen Client und Server entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computern laufen und die eine Client-Server-Beziehung zueinander haben.
-
Zwar beinhaltet diese Spezifikation viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkungen des Umfangs oder des Anspruchs ausgelegt werden, sondern vielmehr als Beschreibungen spezifischer Merkmale bestimmter Ausführungsformen bestimmter Erfindungen. Bestimmte Merkmale, die in dieser Spezifikation im Kontext der unterschiedlichen Ausführungsformen beschrieben werden, können auch in Kombination in einer einzelnen Ausführungsform implementiert werden. Andererseits können verschiedene Merkmale, die im Kontext einer einzelnen Ausführungsform beschrieben werden, in mehreren Ausführungsformen oder in jeder geeigneten Unterkombination implementiert werden. Außerdem können ein oder mehrere Merkmale einer beanspruchten Kombination in einigen Fällen aus der Kombination herausgelöst werden, auch wenn die Merkmale vorstehend als in gewissen Kombinationen funktionierend beschrieben oder gar als eine Kombination beansprucht werden, und die beanspruchte Kombination kann an eine Unterkombination oder eine Variation einer Unterkombination verwiesen werden.
-
Ebenso werden Tätigkeiten in den Zeichnungen zwar in einer bestimmten Reihenfolge dargestellt, aber dies sollte nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinanderfolgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um erwünschte Ergebnisse zu erzielen. Unter bestimmten Umständen können Multitasking und eine Parallelbearbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Ausführungsformen nicht in allen Ausführungsformen erforderlich aufgefasst werden, und es versteht sich, dass die beschriebenen Programmkomponenten und Systeme im Allgemeinen zusammen in ein einziges Softwareprodukt integriert oder in mehreren Softwareprodukten verpackt werden können.
-
Bestimmte Ausführungsformen des Gegenstands wurden beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. Die in den Ansprüchen ausgeführten Vorgänge können beispielsweise in einer anderen Reihenfolge ausgeführt werden und erzielen dennoch gewünschte Ergebnisse. Die in den beigefügten Abbildungen dargestellten Verfahren erfordern beispielsweise nicht notwendigerweise die gezeigte Reihenfolge oder sequentielle Reihenfolge, um erwünschte Ergebnisse zu erzielen. Bei bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.