DE202015009316U1 - Metadatenmanagement in einem dezentralen Verarbeitungssystem - Google Patents

Metadatenmanagement in einem dezentralen Verarbeitungssystem Download PDF

Info

Publication number
DE202015009316U1
DE202015009316U1 DE202015009316.7U DE202015009316U DE202015009316U1 DE 202015009316 U1 DE202015009316 U1 DE 202015009316U1 DE 202015009316 U DE202015009316 U DE 202015009316U DE 202015009316 U1 DE202015009316 U1 DE 202015009316U1
Authority
DE
Germany
Prior art keywords
subscription
hub
structures
agent
hierarchy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202015009316.7U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202015009316U1 publication Critical patent/DE202015009316U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

System, das Folgendes umfasst: einen Hub, der sich aus einem oder mehreren Datenverarbeitungsgeräten zusammensetzt; und ein Datenspeicher, der Instruktionen speichert, die wenn sie durch den Hub ausgeführt werden, den Hub veranlassen, folgende Handlungen auszuführen: Das Empfangen einer Berechnungsspezifikation am Hub, die einen Satz Strukturen beinhaltet, der einen Initialzustand für die vom dezentralen Verarbeitungssystem auszuführende Berechnung festlegt, welches eine Mehrzahl von Rechnern enthält, wobei jede in dem Satz Strukturen enthaltene Struktur Metadaten umfasst, die einen Teil des Initialzustands für die Berechnung festlegen; das Speichern einer Strukturhierarchie durch den Hub, die das Stadium der Berechnung auf Grundlage eines Strukturtyps jeder Struktur innerhalb der Strukturreihe zuordnet, innerhalb derer sich die Strukturhierarchie aus diversen Subskriptionsstrukturen für eine oder mehrere Subskriptionen an der Strukturhierarchie zusammensetzt, wobei mit jeder Subskription eine oder mehrere der in der Strukturhierarchie enthaltenen Strukturen korrespondieren und jede Subskription eine oder mehrere Maßnahmen spezifiziert, welche der Hub ausführen soll; und in der Ausführung durch den Hub, während der Ausführung von Berechnungen, mindestens einer oder mehrerer der Handlungsweisen, die durch mindestens eine oder mehrere Subskriptionen spezifiziert werden.

Description

  • HINTERGRUND
  • Diese Schrift bezieht sich auf Metadatenmanagement in einem dezentralen Verarbeitungssystem. Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, 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.
  • Dezentrale Verarbeitungssysteme sind Systeme, die mehrere Rechner umfassen, welchen die Ausführung verschiedener Aufträge oder Prozesse zugewiesen werden kann. Sie können beispielsweise tausende Rechner beinhalten, die jeweils in der Lage dazu sind, eine Mehrzahl unterschiedlicher Prozesse durchzuführen. Dezentrale Verarbeitungssysteme können in der Verarbeitung großer Datenvolumen und/oder kontinuierlicher Datenströme verwendet werden. Die Vielfalt von Berechnungen, welche dezentrale Verarbeitungssysteme ausführen können, hat zur Entwicklung vieler verschiedener Werkzeuge für die Erledigung verschiedener Aufgaben geführt.
  • ZUSAMMENFASSUNG
  • Im Allgemeinen kann ein innovativer Aspekt des in dieser Schrift dargelegten Gegenstands in Methoden ausgeführt sein, welche in einem Hub mit einer oder mehreren Datenverarbeitungsgeräten Berechnungsspezifikationen empfangen, die eine Reihe Strukturen beinhalten, welche einen Initialzustand für eine Berechnung spezifizieren, die von einem dezentralen Verarbeitungssystem durchgeführt werden sollen, das eine Vielzahl von Rechnern umfasst, sodass jede in der Reihe Strukturen enthaltenen Struktur aus Metadaten besteht, die einen Teil des Initialzustands für die Berechnung festlegen; weiterhin darin, dass der Hub eine Strukturhierarchie speichert, die das Stadium der Berechnung auf Grundlage eines Strukturtyps jeder Struktur innerhalb der Strukturreihe zuordnet, innerhalb derer sich die Strukturhierarchie aus diversen Subskriptionsstrukturen für eine oder mehrere Subskriptionen an der Strukturhierarchie zusammensetzt, wobei mit jeder Subskription eine oder mehrere der in der Strukturhierarchie enthaltenen Strukturen korrespondieren und jede Subskription eine oder mehrere Maßnahmen spezifiziert, welche der Hub ausführen soll; zuletzt in der Ausführung durch den Hub, während der Ausführung von Berechnungen, mindestens einer oder mehrerer der Handlungsweisen, die durch mindestens eine oder mehrere Subskriptionen spezifiert werden. Weitere Ausführungsformen dieses Aspektes umfassen entsprechende Systeme, Apparate und Computerprogramme, die so konfiguriert sind, dass sie die auf Computerspeichergeräten kodierten Handlungen des Verfahrens ausführen.
  • Diese und andere Ausführungsformen können optionalerweise jeweils eines oder mehrere der folgenden Merkmale beinhalten. Die Strukturhierarchie kann Folgendes beinhalten: Eine oder mehrere Manager-Agent-Strukturen, die für einen oder mehrere Manager-Agent-Prozesse, welche die Performance einer Berechnung durch das dezentrale Verarbeitungssystem verwalten, Metadaten spezifizieren; eine oder mehrere Datensatzstrukturen, welche Metadaten für dem dezentralen Verarbeitungssystem zugängliche Daten beinhalten; eine oder mehrerer Auftragsstrukturen, die Metadaten für einen oder mehrere durch das dezentrale Verarbeitungssystem durchgeführten Aufträge beinhalten; oder ein oder mehrere Durchführungsmittel, die jeweils mit einer Teilmenge der Vielzahl an Rechnern korrespondieren, welche diesen Auftrag ausführen.
  • Die Ausführungsform der Berechnung kann einen Subskriptions-Agent für jede von einer oder mehreren Nutzungen für die Strukturhierarchie spezifizieren. Jeder Subskriptionsagent kann ein a) Manager-Agent mit einer korrespondierenden Struktur innerhalb der Strukturhierarchie oder ein b) Worker-Agent mit einer korrespondierenden Struktur innerhalb der Strukturhierarchie sein.
  • Eine oder mehrere der Subskriptionen kann eine Beobachtungssubskription sein, die den Hub anweist, einen Subskriptions-Agent der Beobachtungssubskription über eine bestimmte Veränderung innerhalb des Teils des Zustands zu informieren, der durch eine oder mehrere Strukturen der Strukturhierarchie festgelegt wird, mit der die Beobachtungssubskription korrespondiert.
  • Eine oder mehrere der Subskriptionen kann eine Anfragesubskription sein, welche den Hub anweist, in Reaktion auf den Empfang einer Anfragesubskription hin einem Subskriptions-Agent der Anfragesubskription spezifische Informationen zur Verfügung zu stellen, die mit dem Teil des Zustands verknüpft sind, welcher durch eine oder mehrere Strukturen der Strukturhierarchie festgelegt wurde, mit denen die Anfragesubskription korrespondiert.
  • Eine oder mehrere der Subskriptionen kann eine Anspruchssubskription (claim subscription) sein, welche den Hub instruiert, Eigentum an einer Struktur innerhalb von einer oder mehrerer Strukturen der Strukturhierarchie, mit welcher die Anspruchssubskription korrespondiert, zuzuweisen.
  • Die Methode kann ferner beinhalten: Den Empfang einer zusätzlichen Struktur für die Berechnung; und ebenso die Speicherung der zusätzlichen Struktur in der für die Berechnung verwendeten Strukturhierarchie.
  • Die Methode kann ferner beinhalten: Das Überwachen des Stadiums einer Berechnung durch die Überwachung von einer oder mehrerer Veränderungen innerhalb einer oder mehrerer in der Strukturhierarchie beinhalteten Strukturen während der Ausführung der Berechnung; weiterhin die Benachrichtigung des Subskriptions-Agents in Reaktion auf das Feststellen einer bestimmten Veränderung an einer Struktur, welche eine entsprechende Subskription beinhaltet, die dem Subskriptions-Agent zugeordnet ist.
  • Jede Struktur kann eines oder mehrere der Folgenden bestimmen: Einen Namen, der den Aufenthaltsort der Struktur innerhalb der Strukturhierarchie beschreibt; einen gegenwärtigen Zustand für die Struktur; einen Eigentümer, dem die Struktur gehört; ein Ablaufdatum, zu dem das Eigentum an der Struktur ausläuft; Statistiken, die Messungen für den Überwachungsfortschritt der Berechnung beinhalten; Beschränkungen des Eigentumsrechts an der Struktur; Abhängigkeiten von anderen Strukturen, die sich innerhalb der Strukturhierarchie befinden; oder ein durch den Hub zugewiesener Zeitstempel, welcher die jüngste Aktualisierung an der Struktur anzeigt.
  • Die eine oder mehr Handlungsweisen, die vom Hub ausgeführt werden sollten, können eine oder mehrere der Folgenden umfassen: Einem Subskriptions-Agent eine Benachrichtigung zur Verfügung stellen, dass ein zuvor festgelegtes Ereignis in einer oder mehrerer der Strukturen eingetreten ist, mit dem eine Beobachtungssubskription korrespondiert; den aktuellen Zustand einer oder mehrerer Strukturen aktualisieren; oder einem Subskriptions-Agent bestimmte Metadaten zur Verfügung zu stellen, welche in einer oder mehrerer Strukturen beinhaltet sind, mit denen eine Anfragesubskription korrespondiert.
  • Einer oder mehrere der Manager-Agent-Prozesse können umfassen: Einen Starter-Agent-Prozess (launcher agent process), der den Worker-Agent-Struktur-Unterverzeichnisbaum überwacht und Prozesse startet; einen Abgleich-Agent-Prozess (matcher agent process), der vom dezentralen Verarbeitungssystem zu verarbeitende Daten mit einem oder mehreren Worker-Agents abgleicht; oder ein Auftragsgestalter-Agent-Prozess (task shaper agent process), der einen Auftragsstruktur-Unterverzeichnisbaum verwaltet.
  • Bestimmte Ausführungsformen des in dieser Schrift dargelegten Gegenstandes können so implementiert werden, dass sie einen oder mehrere der folgenden Vorteile verwirklichen. Die Verwendung eines Hubs, um Metadaten für von einem dezentralen Verarbeitungssystem durchgeführter Berechnungen zu verwalten, ermöglicht es, eine große Vielfalt von Berechnungen mittels eines üblichen Hubs durchzuführen. Ein üblicher Hub kann Fehlertoleranz, Ablaufplanung, Worker-Management und weitere Eigenschaften bereitstellen, sofern sie für bestimmte Berechnungen benötigt werden. Entwickler von Werkzeugen, welche Berechnungen unter Verwendung eines Hubs ausführen, umgehen so die Notwendigkeit, viele der dem Hub bereits zugehörigen Funktionen entwickeln zu müssen, während der Hub eine Individualisierbarkeit durch Entwickler erlaubt, wann immer es die Berechnung erfordert. Zusätzlich zu der vom Hub selbst unterstützten Verwaltung können verbundene Agents die Metadaten im Hub überwachen und aktualisieren, um zusätzliche Verwaltungskapazitäten, wie etwa individualisierbare Ablauforganisation und Worker-Management zur Verfügung zu stellen, um nur einige zu nennen.
  • Die Details einer oder mehrerer Ausführungen des Gegenstands, der in dieser Spezifikation beschrieben wird, sind in den beigelegten Zeichnungen und der Beschreibung unten dargelegt. Andere Merkmale, Aspekte und Vorteile des Gegenstands werden aus der Beschreibung, den Zeichnungen und den Ansprüchen deutlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm einer Beispielsumgebung, in der ein Hub Metadaten für ein dezentrales Verarbeitungssystem verwaltet.
  • 2 ist eine Darstellung einer beispielhaften Strukturhierarchie, die von einem Hub verwaltet wird.
  • 3 ist ein Flussdiagramm eines Beispielsprozesses, durch den Metadaten für ein dezentrales Verarbeitungssystem verwaltet werden.
  • 4 is ein Blockdiagramm eines beispielhaften Datenverarbeitungsgeräts.
  • Gleichnamige Referenznummern und Kennzeichnungen in den verschiedenen Zeichnungen zeigen gleichartige Elemente an.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Hub erleichtert die Verwaltung von Metadaten für Berechnungen, die von einem dezentralen Verarbeitungssystem ausgeführt werden. In einem dezentralen Verarbeitungssystem, das eine Master-Worker-Architektur implementiert, kann die traditionelle Rolle des Masters vom Hub und von Manager-Agents übernommen werden. Der Hub enthält die Metadaten, welche den Zustand einer gegenwärtig durch das System ausgeführten Berechnung anzeigen. Der Manager-Agent überwacht und aktualisiert kontinuierlich das Stadium der Berechnung. Worker-Agents beanspruchen Arbeitseinheiten vom Hub, führen die Datenverarbeitung für die Berechnung aus und aktualisieren kontinuierlich das Stadium der Berechnung.
  • Ein dezentrales Verarbeitungssystem kann viele Rechner umfassen, denen jeweils die Rolle eines Arbeiters oder eines Managers zugewiesen werden kann und die verwendet werden können, um einen Abschnitt der Berechnung auszuführen. Der Hub speichert den Zustand der Berechnung und verwaltet Berechnungsmetadaten auf eine Art und Weise, die entwickelt wurde um Unterschiede in den Anforderungen an Metadatenmanagement diverser Berechnungen zu berücksichtigen. Eine Beispielsberechnung kann eine Kombination aus Filter-, Sortierungs- und Meldeprozessen sein, die auf einen konstant fließenden Eingangsdatenstrom angewendet werden. Eine weitere Beispielsberechnung ist ein groß angelegter Graphenverarbeitungsalgorithmus, der Statistiken und andere Informationen bezüglich eines Datums, das als Graph dargestellt wird.
  • Manager-Agent-Rollen, die von Rechnern des dezentralen Verarbeitungssystems übernommen werden, umfassen beispielsweise die des Starter-Agents, der weitere Agents und Prozesse anstößt, die vom System durchgeführt werden sollen, weiterhin die des Auftragsgestalter-Agents, der Aufträge in von den Worker-Agents verarbeitete Unteraufträge aufteilt und die des Abgleich-Agents, der Worker-Agents Aufträge zuweist. Worker-Agents führen den Auftrag/die Aufträge aus, den/die ihnen der Abgleich-Agent zuweist. Sowohl Manager-, als auch Worker-Agents kommunizieren mit dem Hub während der Performance einer Berechnung, z. B. indem sie Aktualisierungsanfragen ausgeben, welche Veränderungen im oder Abfragen das Stadium der Berechnung betreffend, spezifizieren.
  • Die in einem Hub für die Berechnung gespeicherte Information kann verschiedene Arten von Metadaten beinhalten, die gemeinsam das Stadium der Berechnung zu jeder gegebenen Zeit ausmachen. Die Metadaten werden in einer Strukturhierarchie gespeichert, in der jede Struktur für Metadaten steht, die einen Anteil am Stadium der Berechnung bestimmen. Beispielsweise kann ein Auftragsstruktur-Unterverzeichnisbaum Strukturen für jeden in der Berechnung umfassten Auftrag und Unterauftrag beinhalten; jede Struktur steht für Metadaten für den Auftrag oder Unterauftrag, so wie auch der für den jeweiligen Unterauftrag bzw. den Fortschritt eines für den Unterauftrag zuständigen Worker-Agents. Der Initialzustand einer Berechnung wird von einer von einem Controller bereitgestellten Spezifizierung beschrieben, z. B. von einem Computer, der die Berechnung initiiert. Im Verlauf der Berechnung können Strukturen hinzugefügt, modifiziert oder aus der Hierarchie entfernt werden, was Veränderungen im Stadium der Berechnung widerspiegelt. Zum Beispiel können Strukturen für Aufträge und/oder Unteraufträge, die vervollständigt wurden, aus der Strukturhierarchie entfernt werden, während Strukturen für zusätzliche Aufträge oder Eingabedaten zur Hierarchie hinzugefügt werden können.
  • Die Agents, die eine Berechnung ausführen, können Interesse an in der Strukturhierarchie vertretenen Metadaten ausdrücken, z. B. an Strukturen eines Unterverzeichnisbaums, anderen Agents, Datensätzen oder Auftragsdaten, indem sie Subskriptionen nutzen. Eine Subskription bestimmt ein Interesse an einer Teilmenge an Strukturen, welche eine einzelne Struktur umfassen kann. Die Reichweite einer Subskription wird durch ihren Ankerpunkt und ihre -tiefe bestimmt, welche die Verwurzelung in der Strukturhierarchie festlegen und die Tiefe innerhalb des durch die Subskription abgedeckten Unterverzeichnisbaums begrenzen können. Zum Beispiel kann ein Abgleich-Agent, der anderen Agents, die dazu in der Lage sind, verarbeitungsfertige Strukturen zuweist, über eine Subskription verfüngen, den Unterverzeichnisbaum eines zur Erledigung eines bestimmten Auftrag befähigten Workeragents zu beobachten. Der Hub stellt auf Grundlage der Subskription dem Abgleich-Agent Aktualisierungen bereit, wenn im festgelegten Unterverzeichnisbaums des Worker-Agents Veränderungen auftreten, wie etwa die Erledigung seines Unterauftrags. Subskriptionsstrukturen können auch in der Strukturhierarchie dargestellt werden und können z. B. durch die initialen Berechnungsspezifikationen oder auf eine Anfrage eines Agents hin hinzugefügt werden.
  • Unterschiedliche Berechnungen implementieren verschiedene Aufträge unterschiedlicher Reichweite mit variierendem Input und sich unterscheidendem Output, aber dieselbe Hubarchitektur kann zur Verwaltung der Metadaten vieler verschiedener Berechnungen genutzt werden. Die Verwendung eines Hubs, um Metadaten für ein dezentrales Verarbeitungssystem zu speichern, verschafft den Entwicklern von Werkzeugen, die Berechnungen ausführen, ein flexibles Metadatenmanagementsystem, das in der Lage dazu ist, für eine Vielfalt neuer und bestehender Datenverarbeitungstools eingesetzt zu werden.
  • Diese und weitere Merkmale werden nachstehend detaillierter beschrieben.
  • 1 ist ein Blockdiagramm einer Beispielsumgebung 100, in dem der Hub Metadaten für ein dezentrales Verarbeitungssystem verwaltet. Ein Computernetzwerk 102, etwa ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), das Internet oder eine Kombination aus den genannten, verbindet einen Controller 104 mit einem dezentralen Verarbeitungssystem 106, das einen Hub 108, einen Manager-Agent 112 und einen Worker-Agent 114 beinhaltet. Das Beispielsnetzwerk 102 verbindet auch die Netzwerkdatenspeicher 116 mit dem dezentralen Verarbeitungssystem 106 und Controller 104. Während der Controller 104 und die Netzwerkspeicher 116 separat vom dezentralen Verarbeitungssystem 106 dargestellt werden, kann einer oder beide auch innerhalb des dezentralen Verarbeitungssystem 106 umfasst sein. Das dezentrale Verarbeitungssystem 106 kann außerdem zusätzliche Komponenten umfassen, die nicht in der Beispielsumgebung 100 dargestellt werden, wie etwa ein/e Managementsystem/-komponente, um das dezentrale Verarbeitungssystem zu steuern oder einen dedizierten Belastungsausgleicher (load balancer) um die Arbeitsverteilung innerhalb des dezentralen Verarbeitungssystems 106 zu verwalten.
  • Der Controller 104 stellt dem dezentralen Verarbeitungssystem 106 die Spezifikation 118 zur Verfügung. Der Controller 104 kann sich außerhalb des dezentralen Verarbeitungssystems 106 befinden, wie in der Beispielsumgebung 100 dargestellt oder innerhalb des dezentralen Verarbeitungssystems 106. Die Spezifizierung 118 beinhaltet einen Satz Strukturen, die den Initialzustand für eine Berechnung festlegen, welche durch das dezentrale Verarbeitungssystem 106 durchgeführt werden sollen. In einigen Implementierungen wird dem Controller 104 die Spezifizierung durch eine dritte Stelle zur Verfügung gestellt, etwa durch einen Entwickler oder ein separates System, durch das ein Anwender interagiert. Der Hub 108 kann die Initialspezifikation 118 auf anderem Wege empfangen, z. B. kann die Initialspezifikation 118 durch Instruktionen bereitgestellt werden, die in einer durch das dezentrale Verarbeitungssystem 106 gestarteten Applikation enthalten sind oder sie können durch das Netzwerkspeichergerät 116 abgerufen werden.
  • Der Hub 108 speichert Metadaten für eine Berechnung in einer Strukturhierarchie und unterstützt die fortwährende Aktualisierung von Strukturen. Der Hub 108 kann beispielsweise auf einem Server implementiert werden und kann den lokalen oder Netzwerkspeicher 110 für die Speicherung von Metadaten für eine bestimmte Berechnung umfassen. In einigen Implementierungen können die Netzwerkspeichergeräte 116 durch den Hub 108 verwendet werden und zwar entweder alleine oder in Kombination mit Speicher 110. Der Hub 108 ist in Kommunikation mit Manager-Agent 112 und Worker-Agent 114, die gemeinsam eine Berechnung ausführen. Kommunikation zwischen dem Hub 108, Speicher 110, Manager-Agents 112 und Worker-Agents 114 kann beispielsweise jede Kombination aus direkter Kommunikation, interner Netzwerkkommunikation und/oder Kommunikation über das Netzwerk 102 sein.
  • Manager-Agents 112 sind Komponenten eines dezentralen Verarbeitungssystems 106, das die Performance einer Berechnung verwaltet und mit dem Hub 108 interagiert, um das Stadium der Berechnung fortwährend zu modifizieren. Manager beinhalten beispielsweise einen Starter-Agent, der Worker-Agents 114, wenn notwendig, startet und einen Abgleich-Agent, der Arbeitseinheiten mit Worker-Agents 114 abgleicht. In Implementierungen, in denen der Controller 104 Teil des dezentralen Verarbeitungssystem 106 ist, kann der Controller 104 als Manager-Agent betrachtet werden.
  • Worker-Agents 114 sind Komponenten eines dezentralen Verarbeitungssystems 106, das einen Teil einer Berechnung ausführt. Worker-Agents 114 interagieren außerdem mit dem Hub 108, um das Stadium der Berechnung fortwährend zu modifizieren. Worker-Agents können auf einem oder mehreren Rechnern eines dezentralen Verarbeitungssystems 106 implementiert werden und können, in einigen Implementierungen, verwendet werden, um einen durch einen Manager-Agent zugewiesenen Auftrag zu erfüllen. Zum Beispiel kann ein Worker-Agent einen Datenstrom oder einen Datenbatch auf eine Vielzahl von Arten und Weisen manipulieren, wie etwa durch Datensortieren, Aufzeichnungen durchmischen, Daten bewegen, Aufzeichnungen filtern und Outputdaten generieren.
  • Agents, sowohl Manager-Agents 112 als auch Worker-Agents 114, können von einem oder mehreren Rechnern innerhalb des dezentralen Verarbeitungssystems 106 implementiert werden. Zusätzliche Rechner können nach Bedarf durch das dezentrales Verarbeitungssystem 106 hinzugefügt und/oder entfernt werden. Zusätzlich kann ein Agent über einen dedizierten Rechner oder einen Rechnerpool verfüngen, um seine Rolle in der Berechnung auszufüllen. In einigen Implementierungen können Agents in Kommunikation mit den lokalen Speichergeräten, Speichergeräten innerhalb des dezentralen Verarbeitungssystems und/oder den Netzwerkspeichergeräten 118 stehen. Zum Beispiel kann ein Worker-Agent 114, der einen Spamfilterprozess auf einen Aufzeichnungsbatch anwendet, die Aufzeichnungen aus Netzwerkspeichergeräten auslesen, den lokalen Speicher verwenden, um Aufzeichnungen in Spam-Templates zu vergleichen und Output an ein anderes Speichergerät im Netzwerk ausgeben, z. B. ein Spam- oder ein Kein-Spam-Label.
  • Eine Beispielsberechnung kann durch das Starten des Hubs 108 und optionalerweise durch einen Starter-Agent (z. B. einen der Manager-Agents 112), der für das Starten anderer Agents auf Grundlage von Worker-Agent-Strukturen verantwortlich ist, begonnen werden. Dies kann beispielsweise unter Verwendung eines Skripts ausgeführt werden. In einigen Implementierungen können der Hub 108 und alle Agenten durch den Beginn der Berechnung gestartet werden, z. B. durch ein Skript, was die Notwendigkeit eines Starter-Agents vermeidet, es sei denn Worker-Agent-Strukturen müssen der Berechnung fortwährend hinzugefügt werden.
  • Die Initialspezifikation 118 für die Berechnung kann dem Hub 108 durch den Controller 104 zur Verfügung gestellt werden. Die Spezifikation 118 beinhaltet eine Datensatzstruktur, die den Initialzustand der Berechnung widerspiegelt. Zum Beispiel kann ein Controller für eine Berechnung, die, angewendet auf einen Datenbatch, Mapping vornimmt und Funktionen reduziert, eine Spezifikation bereitstellen, die Datensatzstrukturen beinhaltet, welche den Mapinput und Reduktionsoutput widerspiegeln; weiter Strukturen, welche das Mapping und Reduktionsaufträge widerspiegeln; und eine oder mehrere Worker-Agent-Strukturen für Workers, die in der Lage sind, Mapping- und Reduktionsaufträge abzuarbeiten und z. B. als Map-Workers und Reduktions-Workers bezeichnet werden. Der Hub 108 spiegelt die Strukturen innerhalb der Spezifikation 118 in einer Strukturhierarchie wider, welche im Weiteren detailliert beschrieben wird.
  • Manager-Agents 112 bereiten Strukturen vor, die von Worker-Agents 114 übernommen werden sollen. Zum Beispiel kann ein Ablaufsteuerungs-Agent entscheiden, wann jede Phase oder jeder Auftrag einer Berechnung beginnen soll, ein Inputaufteilungs-Agent kann Input-Daten in Stücke aufteilen, ein Auftragsgestaltungs-Agent kann die Datenstücke in Aufträge gruppieren, die von Worker-Agents aufgeführt werden und ein Worker-Agent-Manager kann einem Clustermanagement-Agent oder einem System Signale geben, das in der Lage dazu ist, die Zahl von Workers zu erhöhen und/oder zu verringern, um der Nachfrage für die Berechnung zu entsprechen. Weitere Manager-Agents 112 können ebenso verwendet werden, um die Performance einer Berechnung zu vereinfachen und können, z. B. von Entwicklern, nach Bedarf variiert werden um eine bestimmte Arbeit zu verrichten.
  • Aufträge und Unteraufträge können den Worker-Agents 112, z. B. durch einen Abgleich-Agent, auf Grundlage der Workers-Anspruchssubskription zugewiesen werden. Subskriptionen, die weiter unten in größerem Detail beschrieben werden, legen ein Interesse an einer Teilmenge der Strukturhierarchie fest. Zum Beispiel kann ein Worker-Agent, der einen Sortierauftrag ausführt, eine Anspruchssubskription haben, die das Interesse daran indiziert, Daten zur Sortierung zu empfangen. Ein Abgleich-Agent kann Inputdaten ohne einen Eigentümer identifizieren und sie einem Worker-Agent zuweisen, beispielsweise vorausgesetzt, dass der Worker-Agent die Voraussetzungen der Inputdatenstruktur erfüllt.
  • Worker-Agents 114 aktualisieren den Hub 108 mit dem kontinuierlichen Fortschritt ihres Auftrags und der Hub 108 kann Statistiken bezüglich etwa der Fortschrittsmessung aggregieren und innerhalb der Strukturhierarchie verbreiten. Während jeder in einem Auftragsstrukturunterverzeichnisbaum dargestellte Auftrag vervollständigt wird, kann der Hub das Stadium der Auftragsstruktur aktualisieren, um anzuzeigen, dass der Auftrag bearbeitet wurde. In einigen Implementierungen spezifizieren Strukturen Abhängigkeiten, die erfüllt werden müssen, bevor die Struktur in Anspruch genommen werden kann. Zum Beispiel kann ein Sortierauftrag abhängig von einem Filterprozess sein und eine Struktur für den Filter kann nicht in Anspruch genommen werden, bis dass der Sortierauftrag abgearbeitet wurde.
  • Strukturen spiegeln neuen, zu verarbeitenden Input wider, wie z. B. im Fall einer neuen Inputquelle für eine Berechnung oder es können zusätzliche Stadien der Berechnung dem Hub 108 kontinuierlich hinzugefügt werden, z. B. durch den Controller 104 basierend auf externen Ereignissen oder als Resultat der Berechnung selbst, wie etwa in einer iterativen Berechnung. Für endliche Berechnungen können der Controller 104, Instruktionen für die Berechnung oder andere Agenten die Beendigung feststellen und das Herunterfahren des Datenverarbeitungssystems veranlassen. Zum Beispiel kann eine Berechnung beendet werden, wenn der Zustand der Struktur an der Wurzel des Auftragsunterverzeichnisbaums vom Hub 108 als erledigt markiert wird. Andere Berechnungen, wie etwa die auf einen kontinuierlichen Datenstrom angewendeten, haben möglicherweise kein festgelegtes Ende.
  • Wie oben bereits erwähnt, kann der Hub 108, zusätzlich zu der in der Beispielsumgebung 100 dargestellten Konfiguration, innerhalb einer Vielfalt von Konfigurationen für ein dezentrales Verarbeitungssystem operieren. Der Hub 108 unterstützt außerdem, zusätzlich zu den oben beschriebenen Beispielsberechnungen und -aufträgen, eine Vielfalt von Berechnungen und Aufträgen.
  • 2 is eine Darstellung einer beispielhaften Strukturhierarchie 200, welche im Speicher 110 aufbewahrt und vom Hub 108 verwaltet wird. Die Beispielsstrukturhierarchie 200 stellt den Zustand einer Berechnung dar, indem sie Strukturen in einem Verzeichnisbaum organisiert, wobei die Strukturen in Unterverzeichnisbäumen unter einem Wurzelknoten 201 organisiert sind. In einigen Implementierungen können Strukturen „on the wire” dargestellt werden, z. B. wie in einem Wire-Protokoll und sich, wie oben bemerkt, aus Metadaten zusammensetzen, die das Stadium eines Teils der Berechnung beschreiben. Beispielhafterweise kann ein vom dezentralen Verarbeitungssystem ausgeführter Sortierauftrag in mehrere Unteraufträge für mehrere Workers aufgeteilt werden, z. B. kann eine Sorte Unterauftrag der Sortierung von Datenaufzeichnungen beginnend mit A-M dienen, ein weiterer Unterauftrag der Sortierung von Aufzeichnung beginnend mit N-Z und ein dritter Unterauftrag kann dazu dienen, nicht-alphabetische Datenaufzeichnungen zu sortieren. Metadaten für den Sortierauftrag und jeden Unterauftrag werden in der Strukturhierarchie gespeichert.
  • In einigen Implementierungen können Strukturen generische Datenobjekte sein, die Metadaten beinhalten können, welche zum Teil der Spezifikation zugehörig sein können, mit dem die Struktur korrespondiert. Jede Unterauftragsstruktur kann beispielsweise einen Status für den Unterauftrag festlegen, z. B. fertig, aktiv oder vollständig; einen Eigentümer am Unterauftrag, z. B. eine Markierung für den Worker-Agent, der den Auftrag durchführt; und einen Fortschritt für den Unterauftrag, z. B. eine Zahl oder Prozentangabe von Aufzeichnungen, die sortiert wurden oder einen Zeitstempel für eine Aufzeichnung, die gegenwärtig sortiert wird. Die Auftragsstruktur kann ähnliche Informationen für den Auftrag beinhalten und der Auftragsfortschritt kann, beispielsweise, aus einer Aggregation oder einem Durchschnitt des Fortschritts jedes Unterauftrags bestehen oder auch aus dem Zeitstempel der ältesten zu sortierenden Aufzeichnung.
  • Die Beispielsstrukturhierarchie 200 beinhaltet eine Manager-Agent-Struktur 202, welche wiederum die Wurzel eines Manager-Agent-Unterverzeichnisbaums ist. Die Manager-Agent-Struktur 202 beinhaltet Metadaten für die Manager-Agents einer Berechnung, wie etwa die Nummer und den Typ der im Unterverzeichnisbaum beinhalteten Manager-Agents. Der beispielhafte Manager-Agent-Unterverzeichnisbaum beinhaltet Strukturen für drei Manager-Agents, eine Starterstruktur 204, eine Abgleichstruktur 206 und eine Auftragsgestaltungsstruktur 208. Die Starterstruktur 204 beinhaltet beispielsweise Metadaten für einen Starter-Agent, der Prozesse anstößt, einschließlich der Prozesse, die den Hub 108 erzeugen und der anderen Agenten, die für eine Berechnung benötigt werden. Die Abgleichstruktur 206 kann beispielsweise Metadaten für einen Abgleich-Agent umfassen, der für den Abgleich bereite Strukturen beobachtet und die Strukturen mit verfügbaren Agents abgleicht, die in der Lage sind, sie zu verarbeiten. Die Auftragsgestalterstruktur 208 kann beispielsweise Metadaten für einen Auftragsgestalter-Agent umfassen, der eine Struktur, die für einen großen Auftrag oder eine Berechnungsphase steht, in für die Verarbeitung durch Workerg-Agents geeignete Unteraufträge aufteilen kann.
  • Eine beispielhafte Abgleichstruktur 250 beinhaltet mehrere Felder oder Kategorien für Metadaten, wie etwa ein Namensfeld, das den Namen und Speicherort des Abgleich-Agents 206 anzeigt und ein Zustandsfeld, das anzeigt, dass der Abgleich-Agent gegenwärtig „aktiv” ist, z. B. gegenwärtig auf einem Rechner läuft und aktiv Worker-Agents und Aufträge abgleicht. Weitere Beispielsfelder beinhalten ein Eigentümerfeld, das den Eigentümer einer Struktur als den Rechner identifiziert, auf dem der Abgleichprozess läuft und ein Statistikfeld, das anzeigt, dass 12 von 13 Aufträgen mit Worker-Agents abgeglichen wurden. Weitere Felder können von der Abgleich-Agent-Struktur 206 umfasst sein und dasselbe oder andere Felder können in der Starterstruktur 204, der Auftragsgestalterstruktur 208 und der Manager-Agent-Struktur 202 beinhaltet sein.
  • Die in der Beispielsstrukturhierarchie 200 beinhaltete Datensatzstruktur 210 ist die Wurzel eines Datensatzunterverzeichnisbaums. Die Datensatzstruktur 210 beinhaltet Metadaten, die den Zustand von Berechnungsdaten, wie etwa die Struktur, den Typ und den Ort für Input- und/oder Outputdaten beschreiben. Der beispielhafte Datensatzunterverzeichnisbaum beinhaltet eine Inputdatenstruktur 212 und eine Outputdatenstruktur 214. Die Inputdatenstruktur 212 kann beispielsweise Metadaten beinhalten, die einen Speicherort oder eine Datenstromquelle für Inputdaten anzeigen, weiterhin das Format der Inputdaten und die Quantität an Inputdaten für eine Berechnung. Die Outputdatenstruktur 214 kann beispielsweise Metadaten beinhalten, die einen Speicherort für Outputdaten anzeigen und/oder Daten aufzeichnen, wie auch ein Format für die Outputdaten und eine Quantität an Outputdaten während einer Berechnung.
  • Die in der Beispielsstrukturhierarchie 200 beinhaltete Worker-Agentstruktur 216 ist die Wurzel eines Worker-Agent-Unterverzeichnisbaums. Die Worker-Agent-Struktur 216 beinhaltet Metadaten, die den Zustand des die Berechnung ausführenden Worker-Agents beschreiben, wie etwa die Typen von Worker-Agents, die Zahl an Worker-Agents und die Verfügbarkeit von Worker-Agents. Der beispielhafte Workeragentunterverzeichnisbaum beinhaltet eine Mapperstruktur 218, die den Zustand von den die Mapfunktion ausführender Worker-Agents (z. B. Mapworkers) beschreibt sowie eine Reduktionsstruktur, die den Zustand von Worker-Agents beschreibt, die eine Reduktionsfunktion ausführen (z. B. Reduktions-Workers). Die Mapper-Struktur 218 und die Reduktions-Struktur 220 können Metadaten beinhalten, die den Zustand des Workers innerhalb seines jeweiligen Unterverzeichnisbaums beschreiben, wie etwa die Anzahl von Mapworkers, für die eine Strukturzuweisung aussteht und die Anzahl an Workers, die gegenwärtig die Reduktionsfunktion ausführen. Strukturen für individuelle Workers, welche die Mapfunktion ausführen, z. B. m1 222 und m2 224, beinhalten Metadaten für die individuellen Worker-Agents. Dies gilt ebenso für Strukturen für Workers, welche gegenwärtig bestimmt sind, die Reduktionsfunktion, z. B. r1 226 und r2 228, auszuführen.
  • So wie auch die oben beschriebene, beispielhafte Manager-Agent-Struktur 250, beinhaltet die Beispielsstruktur für den Worker r1 260 mehrere Felder oder Kategorien für Metadaten, wie etwa das Namensfeld, das den Namen und den Speicherort des Workers anzeigt und ein Zustandsfeld, dass anzeigt, dass der Worker gegenwärtig „abwartet”, z. B. darauf wartet, einen Reduktionsunterauftrag zu beanspruchen. Weitere Beispielsfelder beinhalten ein Eigentümerfeld, das den Eigentümer an einer Struktur als den Rechner identifiziert, auf dem ein Reduktions-Worker-Prozess läuft, weiterhin ein Eigentümerinformationsfeld, das anzeigt, zu welcher Zeit das Eigentum ausläuft, sofern es nicht durch den Eigentümer verlängert wird und ein Statistikfeld, das vom Struktureigner gegenwärtig verwendete Systemressourcen anzeigt. Weitere Felder können in der Reduktions. Worker-Struktur r1 226 beinhaltet sein und dieselben oder andere Felder können in der Abgleich-Worker-Struktur m1 222 und m2 224, der Abgleich-Struktur 218, der Reduktions-Struktur 220 und der Worker-Agent-Struktur 216 beinhaltet sein.
  • Die Beispielstrukturhierarchie 200 beinhaltet außerdem eine Auftragsstruktur 230, welche die Wurzel eines Auftragsunterverzeichnisbaums bildet. Die Auftragsstruktur 230 beinhaltet Metadaten, die den Zustand eines im Laufe der Berechnung auszuführenden (oder sich in der Ausführung befindlichen) Auftrags beschreiben, wie etwa den gesamten Fortschritt des auszuführenden Auftrags und die gesamte Anzahl und die Typen von Aufträgen und Unteraufträgen. Der beispielhafte Auftragsunterverzeichnisbaum beinhaltet eine Map-Struktur 232, die den Zustand eines Map-Auftrags beschreibt und eine Reduktionsstruktur 234, die den Zustand eines Reduktionsauftrags beschreibt. Die Map-Struktur 232 und die Reduktionsstruktur 234 können Metadaten beinhalten, die den Zustand eines Auftrags und/oder von in ihren jeweiligen Unterverzeichnisbäumen beinhalteten Unteraufträgen beschreiben, wie etwa den Fortschritt eines Auftrags, beispielsweise als eine Aggregation von Unterauftragsfortschritten und eine Zahl von Unterauftragsstrukturen, die darauf warten, dass ihnen vom Hub 108 ein Eigentümer oder ein Abgleich-Agent zugewiesen wird. Strukturen für die individuellen Unteraufträge, z. B. A 236, B 238, C 240 und D 242 beinhalten Metadaten für die jeweiligen Unteraufträge, wie etwa die Identität des Struktureigners und den Unterauftragsfortschritt.
  • Eine Subskriptionsstruktur 244 ist auch in der beispielhaften Strukturhierarchie 200 beinhaltet, sie bildet die Wurzel eines Subskriptionsunterverzeichnisbaums. Die Subskriptionsstruktur 244 beinhaltet Metadaten, die den Zustand von Subskriptionen beschreiben, wie etwa die Anzahl und den Typ Subskriptionen. Der beispielhafte Subskriptionsunterverzeichnisbaum beinhaltet die Subskriptionsstrukturen 246, die jeweils den Zustand einer Subskription beschreiben. In einigen Implementierungen werden die Subskriptionsstrukturen nicht in einem Unterverzeichnisbaum der Strukturhierarchie gespeichert, sondern können stattdessen in einem anderen Teil der Strukturhierarchie gespeichert sein, beispielsweise beim Subskriptions-Agent oder in einer von der Strukturhierarchie separaten Datenstruktur.
  • Wie bereits im Falle der beispielhaften Manager-Agent-Struktur 250 und der beispielhaften Reduktions-Worker-Struktur 260 beinhaltet die beispielhafte Subskriptionsstruktur 270 mehrere Felder oder Kategorien für Metadaten, wie etwa das Namensfeld, das den Namen und den Speicherort einer Subskription angibt und ein Zustandsfeld, das angibt, dass die Subskription gegenwärtig „aktiv” ist, d. h. bereits über einen Abonnenten verfügt. Das Unterzustandsfeld kann zusätzliche Informationen bezüglich der Struktur eines Zustands festlegen, wie etwa Informationen, die verwendet werden, um Subskriptionen zu präzisieren, z. B. kann ein Unterzustandsfeld für eine Datensatzstruktur festlegen, dass die Größe des sich in der Vorbereitung befindlichen Datensatzes unbekannt ist, bis dass ein Agent die Größe des Datensatzes bestimmt und das Datensatzunterzustandsfeld aktualisiert hat, sodass es sich weiter in der Vorbereitung befindet, aber eine bekannte Größe besitzt, was eine Bedingung dafür sein kann, dass die Datensatzstruktur von einem Worker-Agent in Anspruch genommen werden kann. Das beispielhafte Unterzustandsfeld der Subskriptionsstruktur legt den Typ der Subskription fest, z. B. den einer Anspruchssubskription für einen Reduktionsunterauftrag D 242. Das Eigentümerfeld identifiziert den Abonnenten einer Struktur als den Reduktions-Worker-Agent r2 220 und die Eigentümerinformation listet die Voraussetzungen von Eigentümerschaft am Reduktionsunterauftrag auf, z. B. 300 MB verfügbaren Speicher. Während Subskriptionen in größerem Detail weiter unten beschrieben werden, indiziert die beispielhafte Subskriptionsstruktur 270, dass der Reduktionsworker r1 226 einen Anspruch am Reduktionsunterauftrag D 242 innehat. Der Hub 108 wird das Eigentum am Reduktionsauftrag dem Reduktions-Worker zuweisen, wenn eine bestimmte Bedingung erfüllt ist, wie etwa die Abhängigkeit von einem noch zu vervollständigenden Mapunterauftrag, z. B. Mapunterauftrag B 238. Weitere Felder können in der Subskriptionsstruktur 270 enthalten sein und dieselben oder andere Felder können in anderen Subskriptionsstrukturen enthalten sein.
  • Wie bereits oben bemerkt, legt eine Subskription ein Interesse an einer Struktur oder Teilmenge an Strukturen fest und besitzt einen korrespondierenden Ankerpunkt und eine -tiefe in der Strukturhierarchie. Während diverse Typen von Subskriptionen existieren, legt jede Subskription eine oder mehr Handlungen fest, die ein Hub ausführen soll. Zum Beispiel kann eine Beobachtungssubskription verwendet werden, um das Stadium einer Berechnung kontinuierlich zu überwachen und Ursache dafür sein, dass ein Agent bezüglich des neuen oder gegenwärtigen Zustands dann benachrichtigt wird, wenn eine Bedingung erfüllt wird. Eine beispielhafte Beobachtungssubskription kann von einem Starter-Agent abonniert werden, um Einfügungen und Veränderungen an einer Worker-Agent-Struktur kontinuierlich zu beobachten, z. B. die Worker-Agent-Struktur 216. Sobald eine neue Worker-Agent-Struktur eingefügt wird, wird der Hub über die Beobachtungssubskription den Starter-Agent benachrichtigen.
  • Eine weitere Beispielssubskription ist eine Anspruchssubskription, die ein Interesse daran ausdrückt, Strukturen in einem bestimmten Teil der Strukturhierarchie zu besitzen und in einer Anspruchsbenachrichtigung resultiert, wenn eine verfügbare Struktur mit dem Subskriptions-Agent abgeglichen wird, vorbehaltlich der Fähigkeiten des Agents und der Struktureigentumsbeschränkungen. Die Anspruchsbenachrichtigung informiert den Subskriptions-Agent, dass er auf Grundlage der Anspruchssubskription der Eigentümer einer Struktur geworden ist. In einigen Implementierungen kann ein Agent selbst explizit eine Struktur und einen Namen einfügen, ohne eine Anspruchssubskription zu verwenden.
  • Eine Abfragesubskription wird verwendet, um den gegenwärtigen Zustand einer oder mehrerer Strukturen als direkte Abfrage an den Hub abzufragen. Zum Beispiel kann ein Worker nach Empfang einer Anspruchsbenachrichtigung für eine Auftragsstruktur, eine Abfragesubskription verwenden, um zusätzliche Informationen innerhalb von einer Datensatzstruktur, die durch die Auftragsstruktur als Input identifiziert wird, abzufragen. Eine weitere Beispielssubskription ist eine Zustimmungssubskription, die eine Möglichkeit bereitstellt, bestimmte Veränderungen zu verhindern. Beispielsweise kann ein Security-Manager die Einfügung eines Auftrags verhindern, der vertrauliche Protokolle als Input und einen Ausgabeort hat, welcher Sicherheitsrichtlinien verletzt oder ein Backup-Manager kann verhindern, dass ein Backup-Worker das Eigentum an einer Auftragsstruktur erneuert, wenn der Hauptauftrag bereits abgeschlossen wurde. Andere Sorten Subskriptionen, einschließlich individuell für eine bestimmte Berechnung angefertigter Subskriptionen, können außerdem in der Strukturhierarchie gespeichert werden. In einigen Implementierungen können bestimmte Typen Subskriptionen nicht innerhalb der Strukturhierarchie fortbestehen, z. B. kann eine Abfragesubskription einmal verwendet werden, um den Hub abzufragen und dann vergessen werden. In einigen Implementierungen bestehen bestimmte Typen Subskriptionen innerhalb der Strukturhierarchie fort, z. B. eine Zustimmungssubskription, die Agents mit einer periodischen Benachrichtigung versorgt, während sich die Metadaten einer Berechnung kontinuierlich verändern.
  • In einigen Implementierungen können Subskriptionen auf bestimmte Strukturtypen oder Strukturen mit bestimmten Eigenschaften begrenzt werden. Zum Beispiel kann eine Beobachtungssubskription festlegen, dass sie einzig daran interessiert ist, Benachrichtigungen des Hubs bezüglich Strukturen in einem bestimmten Stadium zu erhalten. Eine weitere Beispielssubskription kann festlegen, dass es gerne nur Aufträge und Unteraufträge abfragen würde, die indizieren, dass der korrespondierende Auftrag zu mehr als 90% abgeschlossen wurde. Außerdem können weitere Beschränkungen oder Beschränkungskombinationen verwendet werden, wie etwa eine Anspruchssubskription für Inputdaten, die mit einem bestimmten Input-Typ übereinstimmen und eine bestimmte Größe unterschreiten.
  • Die Struktur der Strukturhierarchie kann von der Spezifikation und den Voraussetzungen einer bestimmten Berechnung abhängen. Weitere Strukturhierarchien können mehr oder weniger Strukturen und Unterverzeichnisbäume, als die in der Beispielsstrukturhierarchie 200 dargestellten, beinhalten. Zum Beispiel kann eine Strukturhierarchie mehrere Worker-Agent-Unterverzeichnisbäume besitzen und Manager-Agents können, anders als eine Manager-Agent-Struktur, unmittelbar vom Wurzelknoten abstammen. In einigen Implementierungen können Subskriptionen separat von der Strukturhierarchie gespeichert werden, z. B. in einer unterschiedlichen Datenstruktur und/oder im lokalen Speicher des Hubs. Zum Beispiel kann eine Auftragsgestaltungsstruktur 208, sofern eine Berechnung mehrere Auftragsgestalter-Agents benötigt, die Wurzel eines Unterverzeichnisbaums für individuelle Auftragsgestalter bilden und die Subskriptionen 246 können in Unterverzeichnisbäumen abhängig von ihrem Subskriptionstyp organisiert sein, z. B. ein Unterverzeichnisbaum für jeden Typ.
  • Die in jeder Struktur beinhalteten Metadaten können außerdem von den in den Beispielsstrukturen der Beispielshierarchie 200 beinhalteten Metadaten abweichen. Zum Beispiel kann ein Name für eine Struktur eine eindeutige Kennung oder eine Kombination aus eindeutiger Kennung und Pfadangabe sein, die der Hub zuweist. Der Strukturzustand kann abhängig vom Teil der Berechnung variieren, mit dem die Struktur korrespondiert. Zum Beispiel kann eine Auftragsstruktur über andere Optionen verfügen, ihren Zustand zu beschreiben, als eine Datensatzstruktur. Strukturzustände können einen Statuscode beinhalten, wie etwa einen der Folgenden: „abwesend” indiziert, dass eine Struktur sich nicht oder nicht mehr im Hub befindet, „Vorb.” indiziert, dass eine Struktur unvollständig ist und weiter vorbereitet wird, „Wartend” indiziert, dass eine Struktur darauf wartet, in die Ablauforganisation einbezogen zu werden, „blockiert” indiziert, dass eine Struktur wegen einer Abhängigkeit nicht fortschreiten kann, „bereit” indiziert, dass eine Struktur einen Eigentümer von einem Abgleich-Agent erhalten kann, „zuweisbar” indiziert, dass die Struktur einen Eigentümer vom Hub erhalten kann „aktiv” indiziert, dass die Struktur einen Eigentümer hat, „erledigt” indiziert, dass die Verarbeitung der Struktur abgeschlossen ist, „fehlgeschlagen” indiziert, dass die Verarbeitung der Struktur ohne Erfolg beendet wurde und „defekt” indiziert, dass die Struktur unrichtig gebildet wurde oder nicht normal verarbeitet werden kann.
  • Ein weiteres beispielhaftes Strukturfeld beinhaltet: Eigentümerinformationen, welche Beschränkungen auf funktionale Attribute und Ressourcen beschreiben können, die von einem Agent zur Verfügung gestellt werden müssen, um die Struktur zu eignen, weiterhin Abhängigkeiten von anderen Strukturen, die erfüllt werden müssen, bevor die Struktur ins Eigentum übergehen kann und eine Zeit, zu der das Eigentum ausläuft, sofern es nicht verlängert wird. Weitere Strukturfelder beinhalten einen durch den Hub zugewiesenen logischen Zeitstempel, der die jüngste Aktualisierung an der Struktur umfasst, ferner Statusdetails, Anweisungen bezüglich der Verbreitung der Vervollständigung in der Strukturhierarchie und Hinweise, die von einem Nicht-Eigner der Struktur verändert werden können.
  • Im Verlaufe einer Berechnung kann sich die Strukturhierarchie verändern. Zum Beispiel können Strukturen und Unterverzeichnisbäume von Controller-Agents eingefügt und entfernt werden. Außerdem verändern sich die Metadaten innerhalb der Struktur mit der Veränderung des Zustands der Berechnung. Zum Beispiel können unendliche Berechnungen, wie etwa auf einen Inputdatenstrom angewendete Berechnungen, über eine aktive Datensatzstruktur und einen aktiven Unterverzeichnisbaum verfügen, in dem Strukturen für neue Daten hinzugefügt werden und Strukturen für Daten, die vollständig verarbeitet wurden, kontinuierlich entfernt werden. Der Hub kann außerdem einen Controller-Agent veranlassen, die Verarbeitung einer Berechnung einzustellen, z. B. indem er eine Benachrichtigung an den Controller-Agent verschickt, dass die Wurzel eines Auftragsunterverzeichnisbaums vom Hub als vollständig markiert wurde.
  • 3 ist ein Flussdiagramm eines Beispielsprozesses 300, der Metadaten für ein dezentrales Verarbeitungssystem verwaltet. Der Prozess 300 kann durch ein Datenverarbeitungsgerät wie den oben beschriebenen Hub ausgeführt werden.
  • Eine Berechnungsspezifikation, die einen Satz Strukturen enthält, der einen Initialzustand für eine Berechnung festlegt, die von einem dezentralen Verarbeitungssystem ausgeführt wird, wird an einem Hub (302) empfangen. Das dezentrale Verarbeitungssystem beinhaltet eine Vielzahl von Rechnern und jede im Satz Strukturen beinhaltete Struktur beinhaltet Metadaten, die einen Teil des Zustands für die Berechnung festlegt. Zum Beispiel kann ein Controller-Agent, der eine Berechnung durchführt, die einen Filter- und Sortierprozess auf einen Input-Datensatz anwendet, dem Hub eine Spezifikation bereitstellen. Die Spezifikation kann sowohl Strukturen für den Filter- und Sortierauftrag als auch Strukturen für Workers beinhalten, die den Filterprozess ausführen. Wenn beispielsweise der Sortierprozess vom Filterprozess abhängig ist, müssen die in der Spezifikation beinhalteten Strukturen keine Strukturen für Workers beinhalten, um den Sortierprozess auszuführen, da sie für die Initialphase der Berechnung nicht benötigt werden.
  • Eine Strukturhierarchie, die das Stadium der Berechnung basierend auf dem Strukturtyp widerspiegelt, der mit jeder innerhalb des Satzes Strukturen beinhalteten Struktur verknüpft ist, wird im Hub (304) gespeichert. Die Strukturhierarchie kann Subskriptionsstrukturen für keine oder mehr Subskriptionen an der Strukturhierarchie beinhalten, wobei jede Subskription mit keiner oder mehr in der Strukturhierarchie beinhalteten Strukturen korrespondiert und jede Subskription eine oder mehrere Handlungen festlegt, die der Hub ausführen soll, z. B. beobachten und/oder in Anspruch nehmen.
  • In einigen Implementierungen ist eine Subskription eine Beobachtungssubskription, die den Hub anweist, einen Abonnenten an der Beobachtungssubskription über eine festgelegte Veränderung in dem Teil des Zustands zu benachrichtigen, der durch eine oder mehrere Strukturen der Strukturhierarchie festgelegt wird, mit denen die Beobachtungsspezifikation korrespondiert. Zum Beispiel kann ein Starter-Agent eine Beobachtungssubskription an einer Auftragsstruktur für einen Filterauftrag innehaben. Der Hub kann den Starter-Agent bezüglich Aktualisierungen des Filterauftrags benachrichtigen und der Starter-Agent kann die Information verwenden, um Workers für einen darauf folgenden Sortierauftrag zu starten, der vom Filterauftrag abhängt.
  • In einigen Implementierungen sind eine oder mehrere Subskriptionen eine Abfragesubskription, die den Hub anweist, in Reaktion auf den Empfang einer Abfragesubskription, den Abonnenten einer Abfragesubskription mit spezifischen Informationen zu versorgen, welche mit dem Teil des Zustands verknüpft sind, der durch eine oder mehrere Strukturen der Strukturhierarchie, mit dem die Abfragesubskription korrespondiert, festgelegt wurde. Zum Beispiel kann ein Manager-Agent, der den Vervollständigungsstatus eines Auftrags auf ein Anwenderverlangen hin meldet, eine Abfrage an den Hub bezüglich des Fortschritts eines bestimmten Auftrags ausgeben.
  • In einigen Implementierungen sind eine oder mehrere Subskriptionen eine Anspruchssubskription, die den Hub anweist, Eigentum an einer Struktur innerhalb von einer oder mehr Strukturen der Strukturhierarchie, mit denen die Anspruchssubskription korrespondiert, zuzuweisen. Zum Beispiel kann ein Worker-Agent eine Anspruchssubskription an den Hub bezüglich eines bestimmten Auftrags oder Unterauftrags ausstellen und der Hub wird daraufhin das Eigentum an einer Auftragsstruktur an den Worker-Agent zuweisen.
  • In einigen Implementierungen kann die Strukturhierarchie eine oder mehrere Manager-Agent-Strukturen beinhalten, die Metadaten für einen oder mehrere Manager-Agent-Prozesse festlegen, um die Performance einer Berechnung durch das dezentrale Verarbeitungssystem zu verwalten. Zum Beispiel haben Rechner, die Prozesse ausführen, welche die durch das dezentrales Verarbeitungssystem ausgeführten Berechnung verwalten, ihre eigenen Metadaten und ihren eigenen Teil der Strukturhierarchie, in dem die Metadaten gespeichert werden. Metadaten für einen Belastungsausgleicher-Agent können beispielsweise Daten beinhalten, die den Fortschritt jedes Worker-Agents innerhalb des dezentralen Verarbeitungssystems anzeigen. In einigen Implementierungen beinhalten eine oder mehrere Manager-Agent-Prozesse: einen Starter-Agent-Prozess, der einen Worker-Agent-Strukturunterverzeichnisbaum beobachtet und Prozesse startet; einen Abgleich-Agent-Prozess, der vom dezentralen Verarbeitungssystem zu verarbeitende Daten mit einem oder mehreren Worker-Agents abgleicht; oder einen Auftragsgestalter-Agent-Prozess, der einen Auftragsstrukturunterverzeichnisbaum verwaltet.
  • Die Strukturhierarchie kann außerdem eine oder mehrere Datensatzstrukturen inklusive Metadaten für dem dezentralen Verarbeitungssystem zugängliche Daten beinhalten. Dies kann beispielsweise Strukturen für Input-Daten, Output-Daten und protokollierte Daten beinhalten, was Metadaten wie etwa den Ort von Protokolldaten, die Menge an Output-Daten und den/die Typ/en Input-Daten beinhalten kann.
  • Die Strukturhierarchie kann außerdem eine oder mehrere Auftragsstrukturen beinhalten, inklusive Metadaten für einen oder mehrere vom dezentralen Verarbeitungssystem auszuführende Aufträge. Zum Beispiel kann eine Berechnung, die einen Sortier- und einen Filterprozess involviert, über eine Auftragsstruktur für jeden einzelnen Prozess verfügen. In einigen Implementierungen ist jede Auftragsstruktur die Wurzel eines Unterverzeichnisbaums für Unteraufträge, die Teil des Auftrags sind. Zum Beispiel kann ein Filterauftrag Unteraufträge für die Filterung verschiedener Typen von Input-Daten beinhalten.
  • Die Strukturhierarchie kann außerdem einen oder mehrere Worker-Agent-Strukturen für zumindest einen Auftrag beinhalten, inklusive solcher Metadaten für einen oder mehrere Worker-Agents, die jeweils mit einer Teilmenge an die Berechnung ausführenden Rechnern korrespondieren. Unter Verwendung der einen Sortier- und Filterauftrag involvierenden Beispielsberechnung kann ein Worker-Agent-Strukturunterverzeichnisbaum eine Struktur für die Filterung von Worker-Agents beinhalten, welche die Wurzel eines Unterverzeichnisbaums bildet, der Strukturen für die den Filterprozess ausführende Rechner beinhaltet und eine weitere Struktur für Sortier-Worker-Agents, welche die Wurzel eines Unterverzeichnisbaums bilden kann, der die Strukturen für die den Sortierprozess ausführenden Rechner beinhaltet.
  • In einigen Implementierungen legt die Berechnungsspezifikation einen Subskriptions-Agent für eine oder mehrere Subskriptionen an der Strukturhierarchie fest. Zum Beispiel kann ein Starter-Agent, der eine bestimmte Auftragsstruktur beobachtet, als der Abonnent einer Beobachtungssubskription festgelegt werden, welche den Hub veranlasst, die Auftragsstruktur anstelle des Starter-Agents zu beobachten. In einigen Implementierungen ist jeder Subskriptions-Agent entweder i) ein Manager-Agent mit einer korrespondierenden Struktur innerhalb des Manager-Agent-Unterverzeichnisbaums oder ii) ein Worker-Agent mit einer korrespondierenden Struktur innerhalb des Worker-Agent-Unterverzeichnisbaums. In dieser Implementierung werden Subskriptionen entweder nur von Worker-Agents oder nur von Manager-Agents abonniert.
  • In einigen Implementierungen wird eine zusätzliche Struktur für die Berechnung (306) empfangen. Zum Beispiel können zusätzliche Worker-Agents von einem Starter-Agent oder einem Belastungsausgleich-Agent hinzugefügt werden. Zusätzliche Strukturen können auf verschiedene Arten und Weisen eingefügt werden, z. B. basierend auf den Berechnungsweisungen, Manager-Agent-Einfügungen, Anwender-Input und des Eintreffens zusätzlicher zu verarbeitender Daten.
  • In einigen Implementierungen wird die zusätzliche Struktur in der Strukturhierarchie für die Berechnung (308) abgespeichert. Wie oben bereits bemerkt können Strukturen in die Berechnung auf verschiedene Arten und Weisen eingeführt werden und empfangene Strukturen können der Strukturhierarchie durch den Hub auf den Empfang der Struktur hin hinzugefügt werden.
  • In einigen Implementierungen wird der Zustand der Berechnung dadurch überwacht, dass eine oder mehrere Veränderungen an einer oder mehrerer der innerhalb der Strukturhierarchie beinhalteten Strukturen während der Ausführung der Berechnung (310) überwacht werden. Während die Spezifikation den Initialzustand der Berechnung beschreibt, können die in den Strukturen der Strukturhierarchie beinhalteten Daten durch die Berechnung ausführenden Agents aktualisiert werden und diese Veränderungen resultieren in Veränderungen im Zustand der Berechnung. Die Modifikationen an der Strukturhierarchie können dem Hub gemeldet und/oder vom Hub während der Berechnung beobachtet werden und der Hub kann die Metadaten, während die Berechnung fortschreitet, aggregieren, nachverfolgen und verwalten. Zum Beispiel kann der Hub periodisch Statistikfelder für Auftragsstrukturen für Aufträge aggregieren, die gegenwärtig ausgeführt werden, um den Fortschritt der Aufträge nachzuverfolgen. Indem er Fortschrittsinformationen nutzt, die ihm von diversen, beispielsweise einen Filterauftrag ausführenden Filter-Agents gemeldet werden, kann der Hub den gesamten Filterfortschritt von 50% vollständig auf 75% vollständig aktualisieren, was den die Veränderung im Zustand der Berechnung widerspiegelt.
  • In einigen Implementierungen beinhaltet die Veränderungsüberwachung das Empfangen von und Umgehen mit Aktualisierungen an Strukturen innerhalb der Strukturhierarchie. Zum Beispiel kann ein Hub aktualisierte Informationen bezüglich einer existenten Struktur empfangen und diese Informationen mit der in der Strukturhierarchie existierenden Struktur zusammenfassen. Zusätzlich kann der Hub in einigen Implementierungen eine neue Version einer existenten Struktur empfangen und die existente Struktur mit der neuen Version ersetzen.
  • Während der Ausführung der Berechnung führt der Hub zumindest eine der durch die Subskriptionen an der Strukturhierarchie (312) festgelegten Handlungen aus. In einigen Implementierungen beinhalten die eine oder mehrere Handlungen Folgendes: einen Subskriptions-Agent mit einer Benachrichtigung darüber zu versorgen, dass ein zuvor festgelegtes Ereignis in einer oder mehrerer Strukturen eingetreten ist, mit denen eine Beobachtungssubskription korrespondiert; einem Subskriptions-Agent Eigentum an einer oder mehrerer Strukturen zuzuweisen, mit denen eine Anspruchssubskription korrespondiert; einen gegenwärtigen Status für eine oder mehrere Strukturen aktualisieren; oder einem Subskriptions-Agent bestimmte Metadaten zur Verfügung zu stellen, die in einer oder mehrerer Strukturen beinhaltet sind, mit denen eine Abfragesubskription korrespondiert. Zum Beispiel kann ein Abgleich-Agent eine Beobachtungssubskription abonnieren, die den Hub veranlasst, einen Filterauftrag zu beobachten und den Abgleich-Agent zu benachrichtigen, wenn der Filterauftrag abgeschlossen wurde. Die von der Beobachtungssubskription festgelegte Handlung ist eine Benachrichtigung des Abonnenten. Als weiteres Beispiel kann eine Anspruchssubskription den Hub veranlassen, Eigentum an einer Struktur an eine weitere Struktur zuzuweisen, wie im Falle eines Sortier-Worker-Agents mit einer Anspruchssubskription an einem Sortierauftrag.
  • 4 ist ein Blockdiagramm eines beispielhaften Datenverarbeitungsgeräts 400. Das System 400 umfasst einen Prozessor 410, einen Speicher 420, ein Speichergerät 430 und ein Eingabe-/Ausgabegerät 440. Jede der Komponenten 410, 420, 430 und 440 kann beispielsweise unter Verwendung eines Systembus 450 untereinander vernetzt werden. Der Prozessor 410 ist fähig, Anweisungen zur Umsetzung innerhalb des Systems 400 zu verarbeiten. Bei einer Implementierung ist der Prozessor 410 ein Single-Thread-Prozessor. Bei einer anderen Implementierung ist der Prozessor 410 ein Multi-Thread-Prozessor. Der Prozessor 410 ist in der Lage dazu, im Speicher 420 oder im Speichergerät 430 abgelegte Anweisungen zu verarbeiten.
  • Der Speicher 420 speichert Informationen innerhalb des Systems 400 ab. In einer Implementierung ist der Speicher 420 ein computerlesbares Medium. In einer Implementierung ist der Speicher 420 eine flüchtige Speichereinheit. In einer anderen Implementierung ist der Speicher 420 eine nichtflüchtige Speichereinheit.
  • Das Speichergerät 430 ist in der Lage, Massenspeicher für das System 400 bereitzustellen. Bei einer Implementierung ist das Speichergerät 430 ein computer-lesbares Medium. In diversen voneinander unterschiedlichen Implementierungen kann das Speichergerät 430 beispielsweise ein Festplattengerät, ein optisches Speichergerät oder ein anderes Gerät mit hoher Speicherkapazität beinhalten.
  • Das Input/Output-Gerät 440 stellt dem System 400 Input/Output-Operationen zur Verfügung. In einer Implementierung kann das Input/Output-Gerät 440 eine oder mehrere Netzwerkoberflächengeräte, z. B. eine Ethernetkarte, ein serielles Kommunikationsgerät, z. B. einen RS-232-Port und/oder ein kabelloses Oberflächengerät, z. B. eine 802.11-Karte, beinhalten. In einer weiteren Implementierung kann das Input/Output-Gerät Treibergeräte beinhalten, die konfiguriert wurden, um Input-Daten zu empfangen und Output-Daten an andere Input-/Output-Geräte, z. B. Tastatur, Drucker und Bildschirmgeräte 460 auszugeben. Weitere Implementierungen können indes ebenfalls verwendet werden, so wie mobile Computergeräte, mobile Kommunikationsgeräte, Set-Top-Box-Client-Fernsehgeräte etc.
  • Ausführungsformen des Gegenstandes und der in dieser Schrift beschriebenen Funktionsweisen können in digitalen elektronischen Schaltungen oder in Computer-Software, Firmware oder Hardware implementiert werden. Dies gilt sowohl für die in dieser Spezifikation dargelegten Strukturen und ihre strukturellen Entsprechungen, als auch für die Kombination mit 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 Ausführung durch oder die Steuerung des Betriebs des datenverarbeitenden Apparats kodiert werden.
  • Bei einem Computer-Speichermedium kann es sich um ein computerlesbares Speichergerät, ein computerlesbares Speicherträgermaterial, ein zufälliges oder serielles Speicher-Array oder Speichergerät oder um eine Kombination aus einem oder mehrerer dieser Geräte handeln oder es kann in ihnen enthalten sein. Außerdem ist ein Computer-Speichermedium zwar kein verbreitetes Signal, aber ein Computer-Speichermedium kann eine Quelle oder ein Bestimmungsort von Computerprogrammanweisungen sein, die in einem künstlich erzeugten verbreiteten Signal kodiert werden. Bei dem Computer-Speichermedium kann es sich auch um eine oder mehrere unterschiedliche physische Komponenten oder Medien (z. B. mehrere CDs, Plattenlaufwerke oder andere Speichergeräte) handeln, bzw. kann das Speichermedium darin enthalten sein.
  • Die in dieser Schrift dargelegten Funktionsweisen können als Funktionen implementiert werden, welche von einem datenverarbeitenden Gerät in Bezug auf Daten durchgeführt werden, die auf einem oder mehreren computerlesbaren Speichergeräten gespeichert oder aus anderen Quellen empfangen wurden.
  • Der Begriff „Datenverarbeitungsgerät” umfasst alle möglichen Arten von Apparaten, Geräten und Maschinen für die Verarbeitung von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Computers, eines Systems auf einem Chip oder mehrerer oder Kombinationen der zuvor genannten. 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 Ausführungsumgebung für das betreffende Computerprogramm in der Frage erstellt, z. B. einen Code, der Prozessor-Firmware, einen Protokollstapel, ein Datenbank-Managementsystem, ein Betriebssystem, eine plattformunabhängige Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination einer oder mehrerer der genannten darstellt. Der Apparat und die Ausführungsumgebung können verschiedene unterschiedliche Rechnermodell-Infrastrukturen umsetzen, wie Webdienstleistungen, verteilte Rechen- und Grid-Computing-Infrastrukturen.
  • Ein Computerprogramm (auch bezeichnet als Programm, Software, Softwareanwendung, Script oder Code) kann in einer beliebigen Programmiersprache geschrieben sein, einschließlich kompilierter oder interpretierter, deklarativer oder prozeduraler Sprachen. Es kann in jeder beliebigen Form eingesetzt werden, einschließlich als autonomes („stand-alone”) Programm oder als ein Modul, eine Komponente, eine Subroutine, ein Objekt oder eine andere zur Benutzung in einer Rechenumgebung geeigneten Einheit. 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 enthält (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 Schrift beschriebenen Prozesse und logischen Abläufe können durch einen oder mehrere programmierbare Prozessoren, welche eines oder mehrere Computerprogramme ausführen, umgesetzt werden, um Befehle auszuführen, indem sie Input verarbeiten oder Output erzeugen. Die Prozesse und die logischen Abläufe können auch von logischen Sonderzweckschaltungen durchgeführt werde und das Gerät kann als eine solche Sonderzweckschaltung implementiert werden, z. B. als ein FPGA (feldprogammierbares Gate-Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die für die Durchführung eines Computerprogramms geeignet sind, beinhalten beispielsweise sowohl allgemeine, als auch spezielle Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren von jeglicher Art von digitalen Computer. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. Die wesentlichen Elemente eines Computers sind ein Prozessor für das Durchführen von Handlungen gemäß 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 mehrere 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. Geräte, die für das Speichern von Computerprogrammanweisungen und -daten geeignet sind, schließen alle Formen von Dauerspeichern, Medien- und Speichergeräten ein, einschließlich beispielsweise Halbleiter-Speichergeräte, z. B. EPROM, EEPROM und USB-Flash-Speicher; Magnetplatten, z. B. interne Festplatten oder herausnehmbare Platten; magnetooptische Platten; 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 Anwender zu ermöglichen, können die in dieser Schrift beschriebenen Ausführungsformen des Gegenstandes auf einem Computer implementiert werden, welcher ein Anzeigegerät, wie etwa einen CRT-(Kathodenstrahlröhren-) oder LCD-(Flüssigkristall-)Monitor, auf welchem dem Benutzer Informationen angezeigt werden, besitzt, sowie eine Tastatur und ein Zeigegerät, z. B. eine Maus oder einen Trackball, besitzt, mittels derer der Benutzer Eingaben am 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. Zusätzlich kann ein Computer mit einem Benutzer durch das Senden und das Erhalten von Dokumenten von einem Gerät, das von einem Benutzer benutzt wird, wechselwirken; beispielsweise durch das Senden von Webseiten an einen Webbrowser durch ein Benutzergerät des Benutzers als Antwort auf Anforderungen des Webbrowsers.
  • Die in dieser Schrift dargelegten Ausführungsformen des Gegenstandes können in einem Computersystem implementiert werden, das eine Backend-Komponente beinhaltet, z. B. als ein Datenserver oder das eine Middleware-Komponente beinhaltet, z. B. ein Anwendungsserver oder das eine Front-End-Komponente beinhaltet, z. B. ein Anwendercomputer mit einer grafischen Benutzerschnittstelle oder einem Webbrowser, durch den ein Anwender mit einer Implementierung des in dieser Schrift dargelegten Gegenstandes interagieren kann oder jede beliebige Kombination von einer oder mehrerer solcher Backend-, Middleware- oder Front-End-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, z. B. ein Kommunikationsnetz. Zu Beispielen für Kommunikationsnetze zählen ein lokales Netzwerk („LAN”), ein Fernnetzwerk („WAN”), eine netzübergreifende Verbindung (z. B. das Internet) und Peer-to-Peer Netzwerke (z. B. Ad-Hoc Peer-to-Peer Netzwerke).
  • Das Computersystem kann Anwender und Server beinhalten. Ein Benutzer und ein Server sind im Allgemeinen voneinander entfernt und wechselwirken normalerweise durch ein Kommunikationsnetzwerk. Die Beziehung des Benutzers und des Servers entsteht aufgrund von Computerprogrammen, die auf den jeweiligen Computer laufen und eine Benutzer-Server Beziehung zueinander haben. In manchen Ausführungen überträgt ein Server Daten (z. B. eine HTML Seite) an ein Benutzergerät (z. B. mit dem Zweck, Daten anzuzeigen und Benutzereingaben von einem Benutzer, der mit dem Benutzergerät wechselwirkt zu erhalten). Daten, die am Benutzergerät erzeugt werden (z. B. das Resultat einer Wechselwirkung mit einem Benutzer) können vom Benutzergerät am Server erhalten werden.
  • Zwar enthält diese Schrift viele spezifische Implementierungsdetails, jedoch sollten diese nicht als Beschränkung des Umfangs der Neuerung oder des Anspruchs verstanden werden, sondern vielmehr als Beschreibung 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, dies sollte aber nicht als Erfordernis verstanden werden, dass solche Tätigkeiten in der bestimmten gezeigten Reihenfolge oder in einer aufeinander folgenden Reihenfolge ausgeführt werden müssen oder dass alle dargestellten Tätigkeiten ausgeführt werden müssen, um die erwünschten 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 zu mehreren Softwareprodukten verkapselt werden können.
  • Demnach wurden bestimmte Ausführungsformen des Gegenstandes beschrieben. Weitere Ausführungsformen gehören zum Umfang der folgenden Ansprüche. In einigen Fällen können die in den Ansprüchen beschriebenen Handlungen in einer anderen Reihenfolge durchgeführt werden und dennoch erwünschte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder aufeinanderfolgende Reihenfolge, um erwünschte Ergebnisse zu erzielen. In bestimmten Implementierungen können Multitasking und eine Parallelbearbeitung vorteilhaft sein.

Claims (8)

  1. System, das Folgendes umfasst: einen Hub, der sich aus einem oder mehreren Datenverarbeitungsgeräten zusammensetzt; und ein Datenspeicher, der Instruktionen speichert, die wenn sie durch den Hub ausgeführt werden, den Hub veranlassen, folgende Handlungen auszuführen: Das Empfangen einer Berechnungsspezifikation am Hub, die einen Satz Strukturen beinhaltet, der einen Initialzustand für die vom dezentralen Verarbeitungssystem auszuführende Berechnung festlegt, welches eine Mehrzahl von Rechnern enthält, wobei jede in dem Satz Strukturen enthaltene Struktur Metadaten umfasst, die einen Teil des Initialzustands für die Berechnung festlegen; das Speichern einer Strukturhierarchie durch den Hub, die das Stadium der Berechnung auf Grundlage eines Strukturtyps jeder Struktur innerhalb der Strukturreihe zuordnet, innerhalb derer sich die Strukturhierarchie aus diversen Subskriptionsstrukturen für eine oder mehrere Subskriptionen an der Strukturhierarchie zusammensetzt, wobei mit jeder Subskription eine oder mehrere der in der Strukturhierarchie enthaltenen Strukturen korrespondieren und jede Subskription eine oder mehrere Maßnahmen spezifiziert, welche der Hub ausführen soll; und in der Ausführung durch den Hub, während der Ausführung von Berechnungen, mindestens einer oder mehrerer der Handlungsweisen, die durch mindestens eine oder mehrere Subskriptionen spezifiziert werden.
  2. Das System von Anspruchsgegenstand 1, wonach sich die Strukturhierarchie aus dem Folgenden zusammensetzt: eine oder mehrere Manager-Agent-Strukturen, welche Metadaten für eine oder mehr Manager-Agent-Prozesse zur Verfügung stellt, welche die Performance der Berechnung durch das dezentrale Verarbeitungssystem regulieren; eine oder mehrere Datensatzstrukturen inklusive Metadaten für dem dezentralen Datenverarbeitungssystem zugängliche Daten; eine oder mehrere Auftragsstrukturen inklusive Metadaten für einen oder mehr vom dezentralen Datenverarbeitungssystem ausgeführte Aufträge; oder eine oder mehrere Worker-Agentstrukturen, inklusive, für wenigstens einen des einen oder der mehreren Aufträge, Metadaten für einen oder mehrere Worker-Agents, die jeweils mit einer Teilmenge der Vielzahl von Rechnern korrespondieren, welche den Auftrag ausführen.
  3. Das System von Anspruchsgegenstand 1, wonach die Berechnungsspezifikation einen Subskriptions-Agent für jede von einer oder mehreren Subskriptionen an der Strukturhierarchie bestimmt.
  4. Das System von Anspruchsgegenstand 3, wonach jeder Subskriptions-Agent entweder ein i) Manager-Agent mit einer in der Strukturhierarchie beinhalteten, korrespondierenden Struktur oder ii) einer Worker-Agent mit einer in der Strukturhierarchie beinhalteten, korrespondierenden Struktur ist.
  5. Das System von Anspruchsgegenstand 1, wonach eine der eine oder mehreren Subskriptionen eine Beobachtungssubskription ist, die den Hub anweist, einen Subskriptions-Agent über eine Beobachtungssubskription bezüglich einer bestimmten Veränderung in dem Teil des Zustands zu benachrichtigen, der von einer oder mehrerer in der Strukturhierarchie beinhalteten Strukturen festgelegt wurde, mit der die Beobachtungssubskription korrespondiert.
  6. Das System von Anspruchsgegenstand 1, wonach es sich bei einer oder mehrerer der Subskriptionen um eine Abfragesubskription handelt, die den Hub anweist, in Reaktion auf das Empfangen einer Abfragesubskription einem Subskriptions-Agent der Abfragesubskription bestimmte, mit dem Teil des Zustands verknüpfte Informationen zur Verfügung zu stellen, der von einer oder mehrerer Strukturen der Strukturhierarchie festgelegt wurde, mit der die Abfragesubskription korrespondiert.
  7. Das System von Anspruchsgegenstand 1, wonach es sich bei einer oder mehrerer der Subskriptionen um eine Anspruchssubskription handelt, die den Hub anweist, Eigentum an einer Struktur, die in einer oder mehrerer Strukturen der Strukturhierarchie, mit dem die Anspruchssubskription korrespondiert, zuzuweisen.
  8. Ein computerlesbares Medium, das Anweisungen speichert, die, wenn sie durch einen Hub ausgeführt werden, der sich aus einem oder mehreren Datenverarbeitungsgeräten zusammensetzt, den Hub veranlassen, Handlungen auszuführen, die sich aus den Folgenden zusammensetzen: Das Empfangen einer Berechnungsspezifikation am Hub, die einen Satz Strukturen beinhaltet, der einen Initialzustand für die vom dezentralen Verarbeitungssystem auszuführende Berechnung festlegt, welches eine Mehrzahl von Rechnern enthält, wobei jede in dem Satz Strukturen enthaltene Struktur Metadaten umfasst, die einen Teil des Initialzustands für die Berechnung festlegen; das Speichern einer Strukturhierarchie durch den Hub, die das Stadium der Berechnung auf Grundlage eines Strukturtyps jeder Struktur innerhalb der Strukturreihe zuordnet, innerhalb derer sich die Strukturhierarchie aus diversen Subskriptionsstrukturen für eine oder mehrere Subskriptionen an der Strukturhierarchie zusammensetzt, wobei mit jeder Subskription eine oder mehrere der in der Strukturhierarchie enthaltenen Strukturen korrespondieren und jede Subskription eine oder mehrere Maßnahmen spezifiziert, welche der Hub ausführen soll; und in der Ausführung durch den Hub, während der Ausführung von Berechnungen, mindestens einer oder mehrerer der Handlungsweisen, die durch mindestens eine oder mehrere Subskriptionen spezifiziert werden.
DE202015009316.7U 2014-03-14 2015-03-04 Metadatenmanagement in einem dezentralen Verarbeitungssystem Active DE202015009316U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/211,660 US9424083B2 (en) 2014-03-14 2014-03-14 Managing metadata for a distributed processing system with manager agents and worker agents
US14/211,660 2014-03-14

Publications (1)

Publication Number Publication Date
DE202015009316U1 true DE202015009316U1 (de) 2017-02-22

Family

ID=52727404

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202015009316.7U Active DE202015009316U1 (de) 2014-03-14 2015-03-04 Metadatenmanagement in einem dezentralen Verarbeitungssystem

Country Status (5)

Country Link
US (4) US9424083B2 (de)
EP (2) EP3117318A1 (de)
CN (2) CN111522651B (de)
DE (1) DE202015009316U1 (de)
WO (1) WO2015138195A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
WO2017212504A1 (en) * 2016-06-06 2017-12-14 Hitachi, Ltd. Computer system and method for task assignment
US11539784B2 (en) * 2016-06-22 2022-12-27 International Business Machines Corporation Content-based distribution and execution of analytics applications on distributed datasets
US10691501B1 (en) * 2016-10-25 2020-06-23 Amazon Technologies, Inc. Command invocations for target computing resources
US11481190B2 (en) * 2020-05-22 2022-10-25 International Business Machiines Corporation Selecting a plurality of processing systems to sort a data set
US20220413904A1 (en) * 2021-06-29 2022-12-29 Vast Data Ltd. Distributed task progress report

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7735000B2 (en) 2003-09-25 2010-06-08 Sony Corporation Information and content exchange document type definitions to support content distribution
US20050086469A1 (en) * 2003-10-17 2005-04-21 Microsoft Corporation Scalable, fault tolerant notification method
US7711647B2 (en) * 2004-06-10 2010-05-04 Akamai Technologies, Inc. Digital rights management in a distributed network
US8335824B2 (en) * 2004-12-29 2012-12-18 At&T Intellectual Property I, L.P. Methods, systems, and computer program products for providing metadata subscription services
US7707163B2 (en) 2005-05-25 2010-04-27 Experian Marketing Solutions, Inc. Software and metadata structures for distributed and interactive database architecture for parallel and asynchronous data processing of complex data and for real-time query processing
US7949684B2 (en) * 2005-09-09 2011-05-24 Salesforce.Com, Inc. Systems and methods for exporting, publishing, browsing and installing on-demand applications in a multi-tenant database environment
US8782002B2 (en) 2005-11-16 2014-07-15 Hewlett-Packard Development Company, L.P. Distributed processing with metadata placeholders
US8190610B2 (en) * 2006-10-05 2012-05-29 Yahoo! Inc. MapReduce for distributed database processing
GB0623927D0 (en) * 2006-11-30 2007-01-10 Ibm Event - based activation and deactivation of subscription matching
US20080209392A1 (en) * 2007-02-26 2008-08-28 Able Steve L Systems and Methods for Definition and Execution of Batch Processing Services
US8577842B1 (en) 2011-09-19 2013-11-05 Amazon Technologies, Inc. Distributed computer system snapshots and instantiation thereof
CN102833151B (zh) * 2012-07-02 2015-07-08 上海交通大学 基于内容覆盖和反馈机制的用户个性化优先级路由方法

Also Published As

Publication number Publication date
EP3117318A1 (de) 2017-01-18
US20190171493A1 (en) 2019-06-06
WO2015138195A1 (en) 2015-09-17
US20150261570A1 (en) 2015-09-17
US11620168B2 (en) 2023-04-04
US10754705B2 (en) 2020-08-25
US20210042166A1 (en) 2021-02-11
CN111522651A (zh) 2020-08-11
US20160357613A1 (en) 2016-12-08
US10089154B2 (en) 2018-10-02
US9424083B2 (en) 2016-08-23
CN106462459B (zh) 2020-01-17
EP3680775A1 (de) 2020-07-15
CN111522651B (zh) 2024-04-16
CN106462459A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
DE202015009316U1 (de) Metadatenmanagement in einem dezentralen Verarbeitungssystem
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE112011103829B4 (de) Verfahren und System zum Erzeugen einer virtuellen Maschine auf der Grundlage von Vorlagen
DE112013001308T5 (de) Verwalten von mandantenspezifischen Datensätzen in einer mandantenfähigen Umgebung
DE112011101508T5 (de) Zentrale Steuerung von Datenbankanwendungen
DE112017006164T5 (de) Differenzvergleich von ausführbaren Datenflussdiagrammen
DE202018006346U1 (de) Gemeinsames Nutzen bzw. Teilen von Daten in einem mandantenfähigen Datenbanksystem
DE202015009875U1 (de) Transparente Entdeckung eines semistrukturierten Datenschemas
DE112019000321T5 (de) Transaktionsoperationen in verteilten Multi-Master-Datenverwaltungssystemen
DE112011104787B4 (de) Nutzung von Inhalten über persönliche Clouds
DE202015009292U1 (de) Erzeugung eines Aktivitätsflusses
DE102012223167B4 (de) Gemeinsame Nutzung von Artefakten zwischen kollaborativen Systemen
DE112011105186T5 (de) Graphdatenbanken zum Speichern mehrdimensionaler Modelle von Software-Angeboten
DE202012013427U1 (de) Verknüpfung von Tabellen in einem MapReduce-Verfahren
DE102013216273A1 (de) Umwandlung von Datenbanktabellenformaten auf der Grundlage von Benutzerdatenzugriffsmustern in einer vernetzten Datenverarbeitungsumgebung
DE202013012495U1 (de) Metadatenbasierte virtual Maschine-Konfiguration
DE112010003144T5 (de) Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen
DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE102012224492A1 (de) Auslösen von Fensterbedingungen unter Verwendung einer Ausnahmebehandlung
DE112015001914T5 (de) Dauerhaftes Speichern und Verwalten von Anwendungsnachrichten
DE202017105367U1 (de) Abfrageneustartfähigkeit
DE202021004266U1 (de) Anfügbare-und-abtrennbare Datenbank-Sessions
DE202014010924U1 (de) Nichtflüchtiges Shuffle-System
DE112019000402T5 (de) Chronologisch geordnetes out-of-place-aktualisierungs-schlüssel-wert-speichersystem
DE102012001406A1 (de) Automatische Konfiguration eines Produktdatenmanagementsystems

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years