DE102019128187A1 - Verteilte Sperre für Datenerfassungssysteme - Google Patents

Verteilte Sperre für Datenerfassungssysteme Download PDF

Info

Publication number
DE102019128187A1
DE102019128187A1 DE102019128187.3A DE102019128187A DE102019128187A1 DE 102019128187 A1 DE102019128187 A1 DE 102019128187A1 DE 102019128187 A DE102019128187 A DE 102019128187A DE 102019128187 A1 DE102019128187 A1 DE 102019128187A1
Authority
DE
Germany
Prior art keywords
node
event
lock
request
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019128187.3A
Other languages
English (en)
Inventor
Grzegorz JERECZEK
Jakub Radtke
Pawel MAKOWSKI
Maciej Maciejewski
Pawel Lebioda
Piotr Pelplinski
Aleksandra Wisz
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102019128187A1 publication Critical patent/DE102019128187A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Power Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Systeme und Verfahren zum Verwalten von Sperren in einem Datenerfassungssystem mit einem verteilten Datenspeicher werden offenbart. In Ausführungsformen empfängt ein Speicherknoten eines Datenerfassungssystems mit einer Vielzahl von Speicherknoten eine Anforderung eines nicht verarbeiteten Ereignisses, wobei Anteile der Ereignisdaten über die Vielzahl von Speicherknoten gespeichert sind. Ein Knoten der Vielzahl von Knoten hält den Sperrwert für das Ereignis. Der Knoten, der die Anforderung empfängt, sucht nach einem Ereignis, in dem er den Sperrwert speichert, der nicht gesperrt ist. Wenn keiner gefunden wird, leitet der Knoten, der die Anforderung empfängt, die Anforderung an einen zweiten Knoten weiter, der die Suche wiederholt.

Description

  • TECHNISCHES GEBIET
  • Hierin beschriebene Ausführungsformen betreffen allgemein das Gebiet der Informatik. Insbesondere werden Verfahren, Vorrichtungen und ein computerlesbares Medium zum Bereitstellen einer verteilten Sperre zur Verwendung mit einem verteilten Datenspeicher als Teil eines Datenerfassungssystems offenbart.
  • HINTERGRUND
  • Datenerfassungssysteme können verwendet werden, Datenschnappschüsse, bekannt als Ereignisse, von mehreren Sensoren wie elektronische Detektoren zu erfassen. In einigen Implementierungen wie ein großtechnischer Einsatz von wissenschaftlichen Instrumenten wie der Large Hadron Collider können diese Ereignisse mehrere Male über eine kurze Zeitspanne (manchmal Millionen von Ereignissen pro Sekunde) mit einer relativ großen Anzahl von Sensoren eintreten. Die relativ große Anzahl von Ereignissen über eine große Anzahl von Sensoren resultiert in einem Zustrom einer beträchtlichen Menge von Daten, die zu verarbeiten sind. Derartige große Datenmengen können unter Verwendung eines Datenerfassungssystems, das ein verteiltes Speichermodell nutzt, unter Nutzung mehrerer Datenknoten, die jeweils Daten von einer Teilmenge der Gesamtzahl von Sensoren empfangen können, erfasst werden.
  • Figurenliste
    • 1 zeigt ein beispielhaftes Datenerfassungssystem zum Empfangen von Ereignisdaten von mehreren Sensoren und zum Speichern dieser in einem verteilten Speicher gemäß verschiedenen Ausführungsformen.
    • 2 zeigt ein Ablaufdiagramm eines beispielhaften Verfahrens, das durch Knoten des Datenerfassungssystems von 1 ausgeführt werden kann, zum Speichern von Ereignisdaten gemäß verschiedenen Ausführungsformen.
    • 3 zeigt ein beispielhaftes Datenverarbeitungssystem, das mit dem verteilten Speicher von 1 interagieren kann, zum Empfangen von Ereignisdaten gemäß verschiedenen Ausführungsformen.
    • 4 zeigt ein Ablaufdiagramm eines beispielhaften Verfahrens zum Handhaben von Aktualisierungsanforderungen an dem verteilten Speicher, das durch eine oder mehrere Komponenten des Systems von 3 ausgeführt werden kann, gemäß verschiedenen Ausführungsformen.
    • 5 zeigt ein Ablaufdiagramm eines anderen beispielhaften Verfahrens zum Erlangen und Sperren eines nicht verarbeiteten Ereignisses von dem System von 3 gemäß verschiedenen Ausführungsformen.
    • 6 zeigt ein Blockdiagramm eines beispielhaften Computers, der verwendet werden kann, einige oder sämtliche der Komponenten des Systems oder der Verfahren, die hierin offenbart werden, zu implementieren, gemäß verschiedenen Ausführungsformen.
    • 7 zeigt ein Blockdiagramm eines computerlesbaren Speichermediums, das verwendet werden kann, einige der Komponenten des Systems oder der Verfahren, die hierin offenbart werden, zu implementieren, gemäß verschiedenen Ausführungsformen.
    • 8 zeigt eine Anordnung, die Verschaltungen darstellt, die zwischen einem Netzwerk und Internet-der-Dinge- bzw. IoT-Netzwerken vorhanden sein können, gemäß verschiedenen Ausführungsformen.
    • 9 zeigt eine beispielhafte Domänentopologie gemäß verschiedenen Ausführungsformen.
    • 10 zeigt ein beispielhaftes Cloud-Computing-Netzwerk oder eine beispielhafte Cloud in Kommunikation mit einer Anzahl von IoT-Vorrichtungen gemäß verschiedenen Ausführungsformen.
    • 11 zeigt ein beispielhaftes Cloud-Computing-Netzwerk oder eine beispielhafte Cloud in Kommunikation mit einem Maschennetzwerk von IoT-Vorrichtungen oder einen IoT-Fog gemäß verschiedenen Ausführungsformen.
  • BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Datenerfassungs- bzw. DAQ-Systeme, die Datenschnappschüsse von einer relativ großen Anzahl von Datenquellen in unabhängigen Schnappschüssen, produziert bei einer Rate von mehreren MHz, erfassen können, können Daten in Quantitäten erzeugen, die vorzugsweise in einem großen Rechnerverbund verarbeitet werden. Da große Rechnerverbunde typischerweise mehrere Verarbeitungsknoten enthalten, die jeweils die Daten eines separaten Ereignisses verarbeiten können, kann ein Sperrmechanismus, der gestattet, jedes Ereignis während der Verarbeitung zu sperren, genutzt werden, um zu verhindern, dass ein einzelnes Ereignis gleichzeitig durch mehrere Verarbeitungsknoten verarbeitet wird.
  • Bekannte Mechanismen werden typischerweise unter Verwendung eines einzelnen, zentralen Speichers implementiert, der jedes Ereignis und seinen Status protokolliert. DAQ-Systeme in großem Maßstab, die konstruiert sind, Daten für Millionen von Ereignissen in schneller Folge über mehrere Sensoren zu erfassen, können eine verteilte Architektur mit einer Vielzahl von Knoten nutzen, von denen jede Daten von einem oder einer Teilmenge der mehreren Sensoren erfasst. Die verteilte Architektur erlaubt dem DAQ-System, auf eine praktisch unbegrenzte Größe skaliert zu werden. Bei zunehmender Größe des DAQ-Systems kann ein einzelner, zentralisierter Speicher unfähig sein, aufgrund einer Anzahl von möglichen Faktoren einschließlich von Datenbandbreite, Speicheranforderungen und/oder Kosten der Hardware, die benötigt wird, einen einzelnen Speicher mit ausreichender Kapazität und/oder Leistung zu implementieren, in geeigneter Weise mit der Menge und der Geschwindigkeit von eingehenden Ereignissen mitzuhalten.
  • Eine mögliche Lösung besteht in der Bereitstellung eines verteilten Zugangs- oder Sperrmechanismus, der in die Datenspeicherknoten des DAQ-Systems inkorporiert wird. Wie vorstehend diskutiert, werden für jedes Ereignis dessen Daten über möglicherweise Hunderte von Computerknoten (häufig als Ausleseeinheiten bezeichnet) verteilt, abhängig von dem Ausmaß des Systems und der Anzahl von Sensoren. Gleichermaßen können Tausende von Verarbeitungsknoten vorhanden sein, die nicht verarbeitete Ereignisse in einer parallelen Weise anfordern, um die erfassten Daten in einer zeitnahen Weise zu verarbeiten. Die offenbarten Ausführungsformen inkorporieren die Ereignissperre über die Speicherknoten des DAQ-Systems. Demzufolge wird der Sperrmechanismus zusammen mit dem DAQ-System dimensioniert und erlegt jedem Knoten nur eine minimale Speicherlast auf.
  • In der folgenden Beschreibung werden verschiedene Aspekte der veranschaulichenden Implementierungen unter Verwendung von Begriffen beschrieben, die gewöhnlich von Fachleuten im Fachgebiet verwendet werden, das Wesen ihrer Arbeit an andere Fachleute im Fachgebiet weiterzugeben. Es wird diesen Fachleuten im Fachgebiet aber offensichtlich sein, dass Ausführungsformen der vorliegenden Erfindung mit nur einigen der beschriebenen Aspekte praktiziert werden können. Zu Zwecken der Erläuterung werden spezifische Zahlen, Materialien und Konfigurationen angeführt, um ein gründliches Verständnis der veranschaulichenden Implementierungen bereitzustellen. Es wird einem Fachmann im Fachgebiet jedoch offensichtlich sein, dass Ausführungsformen der vorliegenden Offenbarung ohne die spezifischen Einzelheiten praktiziert werden können. In anderen Fällen werden gut bekannte Merkmale ausgelassen oder vereinfacht, um die veranschaulichenden Implementierungen nicht unklar zu machen.
  • In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die ein Teil hiervon bilden, in der gleiche Zahlen durchgehend gleiche Teile bezeichnen und in der durch Veranschaulichung Ausführungsformen dargestellt werden, in denen der Gegenstand der vorliegenden Offenbarung praktiziert werden kann. Es versteht sich, dass andere Ausführungsformen genutzt und strukturelle oder logische Veränderungen vorgenommen werden können, ohne den Schutzumfang der vorliegenden Offenbarung zu verlassen. Daher darf die folgende ausführliche Beschreibung nicht in einem einschränkenden Sinn verstanden werden und wird der Schutzumfang der Ausführungsformen durch die beigefügten Ansprüche und ihre Äquivalente definiert.
  • Für die Zwecke der vorliegenden Offenbarung bedeutet die Phrase „A oder B“ (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenbarung bedeutet die Phrase „A, B oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Beschreibung kann perspektivbasierte Beschreibungen wie oben/unten, innen/außen, über/unter und dergleichen verwenden. Derartige Beschreibungen werden lediglich verwendet, die Diskussion zu erleichtern, und sollen die Anwendung von hierin beschriebenen Ausführungsformen nicht auf irgendeine bestimmte Ausrichtung beschränken.
  • Die Beschreibung kann die Phrasen „in einer Ausführungsform“ oder „in Ausführungsformen“ verwenden, die sich jeweils auf eine oder mehrere derselben oder verschiedener Ausführungsformen beziehen können. Des Weiteren sind die Begriffe „umfassend“, „enthaltend“, „aufweisend“ und dergleichen, wie in Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet, synonym.
  • 1 zeigt ein Beispiel eines Datenerfassungs- bzw. DAQ-Systems 100 zum Erfassen von Daten von einer Vorrichtung von Sensoren. In der dargestellten Ausführungsform enthält das System 100 einen ersten Speicherknoten 102, einen zweiten Speicherknoten 104 und einen dritten Speicherknoten 106. Jeder Speicherknoten steht in Kommunikation mit einer oder mehreren Datenquellen wie ein oder mehrere Sensoren. Wie in der dargestellten Ausführungsform von 1 ersichtlich sein kann, empfängt der erste Speicherknoten 102 Daten von einer Datenquelle 103, empfängt der zweite Speicherknoten 104 Daten von einer Datenquelle 105 und empfängt der dritte Speicherknoten 106 Daten von einer Datenquelle 107. Wie nachstehend in weiteren Einzelheiten beschrieben werden wird, empfängt der erste Speicherknoten 102 Daten von der Datenquelle 103 und ist zusammen mit dem zweiten Speicherknoten 104 und dem dritten Speicherknoten 106 mit der Technologie der verteilten Sperre 109 der vorliegenden Offenbarung inkorporiert. Obwohl 1 drei Speicherknoten und drei Datenquellen darstellt, ist dies lediglich ein Beispiel; tatsächliche Implementierungen können Knoten und/oder Datenquellen im Zehner-, Hunderter-, Tausenderbereich und sogar noch mehr enthalten, abhängig von den spezifischen Erfordernissen, für die das System 100 eingesetzt wird.
  • Jede Datenquelle 103, 105, 107 enthält einen oder mehrere Sensoren oder ist daran gekoppelt, deren Typ von den spezifischen Anforderungen einer gegebenen Implementierung abhängen wird, wie das Wesen des Phänomens, das gemessen oder aufgezeichnet wird. In einigen Ausführungsformen können die verschiedenen Sensoren in ihrer Art analog sein, wobei ihre Signale zuerst durch einen oder mehrere Analog-zu-DigitalWandler (ADCs) digitalisiert werden und das Digitalsignal den Wert umfasst, der in dem assoziierten Speicherknoten der Datenquelle zu speichern ist. Außerdem kann jede Datenquelle 103, 105 und 107 Komponenten zum Anschalten an jeweilige Speicherknoten 102, 104 und 106 enthalten. In einigen Ausführungsformen kann eine derartige Schnittstelle konfiguriert sein, Daten von den verschiedenen Sensoren und/oder ADCs umzuwandeln und die Daten an die jeweiligen Speicherknoten der einzelnen Datenquellen zu übertragen. Ferner kann jede Datenquelle 103, 105 und/oder 107 einen Teil oder die Gesamtheit einer Computervorrichtung 500 enthalten, die programmiert sein kann, die Schnittstelle zwischen den Sensoren und einem verbundenen Speicherknoten bereitzustellen. In anderen Ausführungsformen kann die Schnittstelle ein Teil jedes Speicherknotens 102, 104 und/oder 106 sein, wobei ein oder mehrere Sensoren direkt mit jedem Speicherknoten verbunden sind.
  • In den Ausführungsformen enthält jeder Speicherknoten 102, 104 und 106 einen Datenspeicher oder steht in anderer Weise in Kommunikation damit, der geeignet ist, die Datenmenge zu erfassen, die erwartet wird, von ihrer jeweiligen Datenquelle 103, 105 und 107 empfangen zu werden. Wie beim Sensortyp werden die Einzelheiten des Datenspeichers in Abhängigkeit von den Erfordernissen einer gegebenen Implementierung des Systems 100 variieren. Obwohl 1 ein Verhältnis von Datenquellen zu Speicherknoten von 1:1 darstellt, können ferner in anderen Ausführungsformen ein oder mehrere der Speicherknoten 102, 104 oder 106 jeweils in Kommunikation mit mehreren Datenquellen sein.
  • Jeder Speicherknoten 102, 104 und 106 des Systems 100 kann insgesamt oder teilweise als eine unabhängige Computervorrichtung 500 (wie ein Desktop oder Server) implementiert sein oder kann in eine oder mehrere Komponenten der Computervorrichtung 500 integriert sein, wie die Computervorrichtung 500 als ein Laptop-Computer oder eine tragbare Vorrichtung wie ein Smartphone oder Tablet implementiert sein kann. In anderen Implementierungen kann jeder Speicherknoten 102, 104 und/oder 106 (sowie eine oder mehrere der Datenquellen 103, 105 und/oder 107) in einem System auf Chip mit einem Hardware-Beschleuniger oder als eine anwendungsspezifische integrierte Schaltung (ASIC) eingebettet sein. In noch anderen Implementierungen können einige oder sämtliche des Speicherknotens 102, 104 und/oder 106, der Datenquellen 103, 105 und/oder 107 gesamt oder teilweise in Software oder als eine Kombination von Software und Hardware implementiert sein. In noch anderen Ausführungsformen kann jeder Speicherknoten 102, 104 und/oder 106 mit einer oder mehreren Datenquellen 103, 105 und/oder 107 integriert sein, um eine einzelne Einheit bereitzustellen, die sowohl Daten erfassen als auch als ein Speicherknoten fungieren kann. Die Speicherknoten 102, 104 und/oder 106 sowie die Datenquellen 103, 105 und/oder 107 können mit einer oder mehreren Internet-der-Dinge- bzw. IoT-Vorrichtungen wie die IoT-Vorrichtung 1004 von 8 implementiert sein und können ferner in verschiedenen Netzwerktopologien wie die in den 8-11 dargestellten miteinander verknüpft sein.
  • 2 zeigt die Operationen eines beispielhaften Verfahrens 120, das insgesamt oder teilweise durch einen Teil oder der Gesamtheit von System 100 implementiert sein kann. Das Verfahren 120 zeigt ein mögliches Verfahren für Übertragung von Ereignisdaten zwischen einer oder mehreren Datenquellen, wie die Datenquellen 103, 105 und/oder 107, an eine oder mehrere verteilte Speicherknoten, die mit den Datenquellen verbunden sind, wie die Speicherknoten 102, 104 und/oder 106, und zum Bestimmen und Setzen einer Sperre für alle mit dem Ereignis assoziierten Daten. Beginnend mit Operation 122 wird eine neue Anforderung zum Einfügen von Daten von der Datenquelle in den Datenspeicher durch einen Datenspeicherknoten von einer Datenquelle empfangen. Die Einzelheiten der Anforderung, z. B. ob sie mit PUT bezeichnet ist, ihre Größe und etwaige assoziierte Felder oder andere Daten, werden von den Erfordernissen einer gegebenen Implementierung abhängen.
  • Die Datenquellen 103, 105 und 107 von 1 zeigen eine Anforderung zum Platzieren von Daten in einen Speicherknoten, hier als eine „PUT“-Anforderung bezeichnet, einer möglichen Ausführungsform. Wie ersichtlich ist, enthält jede PUT-Anforderung mindestens ein Feld event_id, ein Feld sub_id und einen Datenpunktwert. Das Feld event_id bezeichnet eine Zahl, die für ein gegebenes Ereignis eindeutig ist. In den Ausführungsformen ist ein Ereignis eine einzelne Ablesung von allen Sensoren zu einem einzelnen gemeinsamen Punkt in der Zeit, wobei alle Datenpunkte, die sich eine gemeinsame event_id teilen, im Wesentlichen gleichzeitig aufgezeichnet wurden. Wie in 1 ersichtlich, haben die Datenquellen 103, 105 und 107 jeweils identische Felder event_id von 5, wodurch angegeben wird, dass die Werte aus jeden Daten einen Schnappschuss von Ablesungen zu einem einzelnen Punkt in der Zeit umfassen. In jedem Speicherknoten 102, 104 und 106 werden vorherige Ereignisse so dargestellt, dass sie gemeinsam Werte von 1, 2, 3 und 4 über alle Knoten teilen, wobei jedes Ereignis eine eindeutige ID in einem gegebenen Speicherknoten aufweist. Das event_id kann in einigen Ausführungsformen durch jede Datenquelle 103, 105 und/oder 107 zugewiesen sein, die für gleichzeitige Ablesungen synchronisiert werden können und gleichermaßen ein eindeutiges event_id bestimmen, wie durch Inkrementieren des vorherigen event_id. In anderen Ausführungsformen können die Speicherknoten 102, 104 und 106 koordiniert werden, um jedem Ereignis ein eindeutiges event_id zuzuweisen. In derartigen Ausführungsformen können die Datenquellen 103, 105 und 107 das event_id aus der PUT-Anforderung weglassen, da der Wert in den Speicherknoten 102, 104 und 106 bestimmt und zugewiesen werden wird.
  • Das Feld sub_id kann den bestimmten Sensor oder die bestimmte Datenquelle für einen gegebenen Datenpunkt bezeichnen. In anderen Ausführungsformen wie diejenigen, in denen ein einzelner Speicherknoten mit mehreren Datenquellen in Kommunikation stehen kann, könnte das Feld sub_id stattdessen die Identität des bestimmten Speicherknotens, der den Datenpunkt speichert, angeben. In 1 weist die erste Datenquelle 103 einen Wert sub_id von 1 auf, die zweite Datenquelle 105 hat einen Wert sub_id von 2 und die dritte Datenquelle 107 hat einen Wert sub_id von 3. Entgegengesetzt zu jedem event_id und wie in 1 ersichtlich, ist jedes sub_id über alle Ereignisse auf einer Basis pro Speicherknoten gemeinsam, aber zwischen Speicherknoten eindeutig. Wie beim event_id kann das sub_id in einigen Ausführungsformen durch Datenquellen 103, 105 und 107 oder durch Speicherknoten 102, 104 und 106 zugewiesen werden, wobei die Datenquellen das Feld sub_id aus der PUT-Anforderung weglassen können.
  • Der Datenpunktwert ist die durch einen Sensor aufgezeichneten tatsächlichen Daten und kann in Abhängigkeit von den Besonderheiten einer gegebenen Implementierung unter Verwendung eines ADC digitalisiert werden, um den numerischen Wert zur Speicherung zuzuführen. Andere Ausführungsformen können verschiedene oder zusätzliche Felder in einer PUT-Anforderung aufweisen. Die jeweilige Struktur und das jeweilige Format jedes Datenpunktwerts werden von den Besonderheiten des Sensors, der den Wert produziert, abhängen.
  • In Operation 124 des Verfahrens 120 wird das Feld event_id verwendet, zu bestimmen, welcher verteilter Speicherknoten das Sperrfeld für das mit dem event_id assoziierte Ereignis halten soll, wobei jedes Sperrfeld ein Teil einer verteilten Sperre 109 ist. In der dargestellten Ausführungsform wird die Gleichung: p r i m a ¨ r e r   K n o t e n = H a s h ( e v e n t _ i d ) %   n _ n o d e s
    Figure DE102019128187A1_0001
    verwendet, die Identität des Speicherknotens zum Halten des Ereignissperrfelds aus dem event_id zu bestimmen. Die Hashfunktion bildet somit das event_id auf die feste Größe der Anzahl von verteilten Speicherknoten ab. Da die Anzahl von Ereignissen in einigen Ausführungsformen beliebig groß sein und gut bis in die Millionen reichen können, abhängig von der Menge von Ereignissen, die in der DAQ zu speichern sind, erlaubt die Hashfunktion derartige beliebig große Zahlen, um die Verteilung von Sperrfeldern über alle verteilten Speicherknoten in der DAQ bereitzustellen. Demgemäß erleichtert die Hashfunktion die Verteilung der verteilten Sperre 109. Das Ergebnis der vorstehenden Gleichung ist eine Zahl, die mit einer der verteilten Speicherknoten korrespondiert. Das Format der Zahl kann in Abhängigkeit von den Erfordernissen einer gegebenen Implementierung variieren; des Weiteren muss das Ergebnis keine Zahl sein, sondern kann jeder Wert oder jede Zeichenfolge sein, die auf einen der verteilten Speicherknoten wie die Speicherknoten 102, 104 und/oder 106 abgebildet werden oder diese in anderer Weise identifizieren kann. In einigen Ausführungsformen kann das Verfahren in einer ungefähr gleichen und zufälligen Verteilung von Sperrwerten über alle verteilten Speicherknoten über die Zeit resultieren.
  • Die vorstehende Gleichung und/oder ihre Verwendung einer Hashtabelle oder -funktion muss nicht verwendet werden, die Identität des verteilten Speicherknotens zum Halten des Ereignissperrfelds korrespondierend mit dem Ereignis event_id zu bestimmen. Jedes geeignete Verfahren, das in einer wiederholbaren Identifizierung eines Speicherknotens basierend auf einem gegebenen Eingabewert resultieren kann, kann genutzt werden. Gleichermaßen kann ein anderer Wert als event_id als die Eingabe in eine Funktion zum wiederholten Bestimmen einer Speicherknotenidentität verwendet werden, solange der Wert nützlich ist, die Identität des verteilten Speicherknotens, der den Sperrwert für ein gegebenes Ereignis hält, wiederholt zu bestimmen. Einige Ausführungsformen können eine verschiedene Funktion nutzen, die darin resultiert, dass einige Speicherknoten gegenüber anderen bevorzugt werden, Sperrwerte zu halten, abhängig von den Erfordernissen einer gegebenen Ausführungsform.
  • Zurückverweisend auf die in 1 dargestellte Ausführungsform wird gezeigt, dass die Sperrwerte für verschiedene Ereignisse in verschiedenen Speicherknoten gespeichert werden, wodurch die Ereignissperren über alle Knoten des DAQ-Systems verteilt werden. In dem dargestellten Beispiel enthält der erste Speicherknoten 102 die Sperrwerte für Ereignisse mit event_ids von 1 und 4, dargestellt als ein Wert von 1, der angibt, dass das Ereignis gesperrt ist. Der zweite Speicherknoten 104 enthält den Sperrwert für das Ereignis mit einem event_id von 2, dargestellt als ein Wert von 0, der angibt, dass das Ereignis nicht gesperrt ist. Gleichermaßen enthält der dritte Speicherknoten 106 den Sperrwert für das Ereignis mit einem event_id von 3, ebenfalls als ein Wert von 0 dargestellt, der angibt, dass das Ereignis nicht gesperrt ist. Durch die Operation 124 würden diese Sperren unter den Knoten basierend auf dem Wert event_id als Eingabe in die Hashfunktionsgleichung verteilt werden.
  • In Ausführungsformen wird die Hashfunktionsgleichung von Operation 124 zusammen mit den anderen Operationen von Verfahren 120 durch jeden verteilten Speicherknoten in dem DAQ-System durchgeführt. In Operation 126 wird das Ergebnis der Hashfunktionsgleichung durch jeden Knoten verglichen, um zu bestimmen, ob das Ergebnis gleich der Identität oder Zahl des Speicherknotens ist. Falls ja (die Verzweigung „JA“), fügt der Knoten in Operation 128 einen Sperrwert zu den als Teil der PUT-Anforderung empfangenen Daten hinzu und fährt fort, den Sperrwert zu initialisieren. In einigen Ausführungsformen weist der Sperrwert eine anfängliche Standardeinstellung von nicht gesperrt auf. Dieser Wert kann in jeder geeigneten Weise ausgedrückt werden. In einigen Beispielen gibt ein numerischer Wert von 0 (der durch viele Computersysteme als „nicht wahr“ angesehen wird) an, dass das Ereignis nicht gesperrt ist, während ein von 0 verschiedener numerischer Wert (der durch viele Computersysteme als „wahr“ angesehen wird) angibt, dass das Ereignis gesperrt ist. In der dargestellten Ausführungsform wird ein Wert von 1 ausgewählt, einen gesperrten Status anzugeben. Andere Ausführungsformen können andere Methoden verwenden, um anzugeben, dass ein gegebenes Ereignis gesperrt oder nicht gesperrt ist, abhängig von den spezifischen Anforderungen einer gegebenen Ausführungsform.
  • Es versteht sich, dass in Ausführungsformen der Wert des Sperrfelds, gespeichert in dem Speicherknoten, angegeben durch die Hashfunktionsgleichung, für das assoziierte Ereignis über alle Speicherknoten des DAQ-Systems wirksam ist. Demzufolge resultiert Setzen der Sperre auf wahr für event_id 1 von System 100 darin, dass die Daten für alle Einträge mit einem event_id von 1 über alle Speicherknoten gesperrt werden.
  • Wenn das Ergebnis von Operation 126 „NEIN“ ist, fährt das Verfahren 120 mit Operation 130 fort, in der der Speicherknoten fortfährt, die PUT-Anforderung handzuhaben. In dem Beispiel von 1 fährt jeder Speicherknoten außer dem einen, der durch die Hashfunktion zum Speichern des Sperrwerts benannt wurde, fort, einen Eintrag zu erzeugen, der das event _id, das sub_id und den Datenwert (nicht dargestellt) von der Datenquelle enthält. Andere Implementierungen können andere oder verschiedene Mengen von Feldern speichern und/oder können zusätzliche Operationen ausführen, die erforderlich sind, die Verarbeitung der Ereignisdaten abzuschließen.
  • Fortfahrend mit 3, wird ein beispielhaftes System 140 zum Handhaben von Interaktionen zwischen Datenspeicherknoten eines DAQ-Systems und einem Verarbeitungsverbund dargestellt. Wie beim System 100 enthält das System 140 einen ersten Speicherknoten 102, einen zweiten Speicherknoten 104 und einen dritten Speicherknoten 106, die dieselben Werte speichern, wie in 1 dargestellt. 3 zeigt außerdem einen Verarbeitungsverbund 108. In Abhängigkeit von der Art der in dem DAQ-System gespeicherten Daten kann der Verarbeitungsverbund 108 aus einem oder mehreren Verarbeitungsknoten oder -servern bestehen, insbesondere wenn die Daten für parallele Verarbeitung geeignet sind. Zum Beispiel kann, wenn jedes Ereignis unabhängig verarbeitet werden kann, z. B. wenn die Verarbeitung eines Ereignisses eigenständig ist und nicht von den Ergebnissen der Verarbeitung anderer Ereignisse abhängig ist, ein Verarbeitungsverbund genutzt werden, bestehend aus mehreren Verarbeitungsknoten, wobei jeder Verarbeitungsknoten für Abrufen und Verarbeiten eines einzelnen Ereignisses verantwortlich ist. Andere Ausführungsformen können möglich sein, wie Aufteilen von Ereignisdaten von verschiedenen Datenspeicherknoten auf verschiedene Verarbeitungsknoten, wobei der Sperrwert angibt, dass ein gegebenes Ereignis gegenwärtig verarbeitet wird. Wie bei den Speicherknoten 102, 104 und/oder 106 und den Datenquellen 103, 105 und/oder 107 können der Verarbeitungsverbund 108 und/oder ein oder mehrere Knoten des Verarbeitungsverbunds 108 (wenn der Verarbeitungsverbund 108 unter Verwendung mehrerer Verarbeitungsknoten implementiert ist) mit einer oder mehreren Internet-der-Dinge- bzw. IoT-Vorrichtungen wie die IoT-Vorrichtung 1004 von 8 implementiert sein und können ferner in verschiedenen Netzwerktopologien wie diejenigen in den 8-11 beschriebenen miteinander verknüpft sein.
  • 4 zeigt die Operationen eines beispielhaften Verfahrens 160 zum Abrufen und Sperren eines Ereignisses von einem DAQ-System mit einem oder mehreren verteilten Speicherknoten wie die Speicherknoten 102, 104 und 106 durch eine Verarbeitungseinrichtung wie der Verarbeitungsverbund 108. Die Operationen des Verfahrens 160 können vollständig oder teilweise durchgeführt werden. Beginnend mit Operation 162 wird eine Aktualisierungsanforderung von einer Verarbeitungseinrichtung, z. B. ein Knoten oder Knoten des Verarbeitungsverbunds 108, empfangen. Die Aktualisierungsanforderung kann eine beliebige Operation sein, die an einem oder mehreren in dem DAQ-System, z. B. die Speicherknoten 102, 104 und 106, gespeicherten Ereignissen durchzuführen ist. Zum Beispiel kann die Anforderung in einigen Ausführungsformen eine Datenbankanforderung wie ein Befehl oder eine Anforderung in einer strukturierten Abfragesprache (SQL) oder ein anderes geeignetes Verfahren, in dem Daten von dem DAQ-System abgefragt werden können, sein.
  • Im Gegensatz zum Verfahren 120, bei dem das Verfahren durch oder für jeden Datenknoten im Wesentlichen gleichzeitig durchgeführt wird, wird das Verfahren 160 nur durch oder im Auftrag jedes einzelnen Knotens zur Zeit durchgeführt, wie in 3 demonstriert. Zum Beispiel wird in 3 gezeigt, dass separate Anforderungen 110 und 116 von dem Verarbeitungsverbund 108 jeweils zu einem ersten Speicherknoten 102 bzw. einem dritten Speicherknoten 106 ausgegeben werden, während der zweite Speicherknoten 104 keine Anforderung direkt von dem Verarbeitungsverbund 108 empfängt. Nach Empfangen der Anforderung handelt nur der Speicherknoten, der die Anforderung empfängt, gemäß der Anforderung, um das beispielhafte Verfahren 160 auszuführen. Des Weiteren kann der Verarbeitungsverbund 108 aus mehreren Berechnungs- oder Verarbeitungsknoten bestehen und verschiedene Anforderungen können von verschiedenen Verarbeitungsknoten kommen. Demzufolge kann die Anforderung 110 von einem anderen Verarbeitungsknoten als die Anforderung 116 kommen.
  • In Operation 164 wird die Anforderung zergliedert, um zu bestimmen, ob die Anforderung einen spezifischen Ereignisschlüssel (als key::any in 4 angegeben) nicht spezifiziert, wobei der Ereignisschlüssel ein Feld wie event_id ist, und ob die Anforderung ferner ein Ereignis sperren soll (als options::lock in 4 angegeben). Demzufolge werden die Operationen der dargestellten Ausführungsform zu Anforderungen von einer Verarbeitungseinrichtung geleitet, die ein beliebiges nicht gesperrtes Ereignis für anschließende Sperrung suchen. Es versteht sich, dass mindestens einige dieser Schritte selbst dann befolgt werden können (wie nachstehend diskutiert), wenn eine spezifische Ereignis-ID bereitgestellt wird, bei der Setzen des Sperrwerts noch erforderlich ist (z. B. enthält die Anforderung ein options::lock oder einen ähnlichen derartigen Indikator).
  • Wenn das Ergebnis von Operation 164 NEIN ist, fährt das Verfahren 160 mit Operation 168 fort, in der die Anforderung durch den empfangenden Knoten in anderer Weise verarbeitet wird. Zum Beispiel kann eine Anforderung zum Modifizieren von Daten der Ereignis-ID 1, dargestellt als gesperrt in Speicherknoten 102, verarbeitet werden, vorausgesetzt, die Anforderung kommt von der Verarbeitungseinrichtung, die die Sperre hält.
  • Wenn das Ergebnis von Operation 164 JA ist, fährt das Verfahren 160 mit Operation 166 fort. In Operation 166 wird die ID eines verfügbaren (z. B. nicht gesperrten) Ereignisses erlangt. Dies ist dargestellt als durch eine Funktion, find_unlocked_key(), implementiert, die ein event_id korrespondierend mit einem verfügbaren, z. B. nicht gesperrten, Ereignis zurückgibt. Wie ein nicht gesperrtes Ereignis lokalisiert wird, kann von den Besonderheiten einer gegebenen Implementierung des DAQ-Systems abhängen, wie nachstehend zu diskutieren ist.
  • In einer möglichen Ausführungsform kann der Speicherknoten, der die Aktualisierungsanforderung empfängt, die Ereignisse durchsuchen, wo er den assoziierten Sperrwert speichert, um das erste Ereignis zu lokalisieren, das einen gespeicherten Sperrwert von nicht gesperrt aufweist. Fortfahrend mit Operation 170, fährt das Verfahren 160, wenn das Ergebnis der Suche der Ort eines Ereignisses mit einem Status nicht gesperrt ist (z. B. hält der Speicherknoten mindestens ein Ereignis und seinen korrespondierenden Sperrwert, wobei der Sperrwert nicht gesperrt ist), mit Operation 172 fort, in der der Speicherknoten den Sperrwert des Ereignisses auf gesperrt setzt, und gibt dann ein Schlüsselwertpaar korrespondierend mit dem event_id des Ereignisses zurück, das wiederum an die Verarbeitungseinrichtung, die die einleitende Anforderung stellte, kommuniziert wird. Definiert als ein Schlüsselwertpaar wäre das Ergebnis event_id::value, wobei value eine spezifische Zahl oder Zeichenfolge ist, die ein Ereignis definiert, wie vorstehend unter Bezugnahme auf 2 beschrieben. In einigen Ausführungsformen wird nur der Schlüssel (einleitend) zurückgegeben. In anderen Ausführungsformen werden der Schlüssel und der Wert, die lokal für den Speicherknoten sind, der auf die Anforderung reagiert, zurückgegeben; in einigen derartigen Ausführungsformen kann das sub_id zusätzlich zu dem Schlüssel und dem lokalen Wert zurückgegeben werden, der den mit dem Wert assoziierten Speicherknoten angeben kann. Demgemäß wird der Verarbeitungseinrichtung die Sperre über das Ereignis korrespondierend mit dem zurückgegebenen event_id gewährt. Die Verarbeitungseinrichtung kann fortfahren, unter Verwendung des event_id auf alle Daten von allen Speicherknoten zuzugreifen und diese zu verarbeiten.
  • Zum Beispiel kann im System 140 jeder Knoten des Verarbeitungsverbunds 108 eine Anforderung mit einer Ereignis-ID und möglichen Befehlen wie Abrufen, Aktualisieren, Löschen usw. senden, wobei die spezifizierte ID den Verarbeitungsknoten angibt, der die Sperre für die spezifizierte ID besitzt. Durch das Verfahren 160 in Operation 164 kann ein Fehlen von options::lock kombiniert mit einer spezifizierten Ereignis-ID als eine Anforderung einer Aktion an den gespeicherten Daten, die mit der Ereignis-ID assoziiert sind, für die der anfordernde Verarbeitungsknoten die Sperre hält, interpretiert werden. Wenn, in Operation 164, ein Verarbeitungsknoten eine spezifische Ereignis-ID sowie options::lock spezifiziert, kann der Speicherknoten, der die Anforderung empfängt, die Anforderung als entweder anfordernd, dass das spezifizierte Ereignis gesperrt wird (und an den anfordernden Verarbeitungsknoten übergeben wird), oder, wenn der anfordernde Verarbeitungsknoten die Sperre hält, als eine Anforderung, dass das spezifizierte Ereignis entsperrt wird (der anfordernde Verarbeitungsknoten gibt die Sperre auf), interpretieren. In einigen Ausführungsformen können die Verarbeitungseinrichtung oder der Knoten, die/der eine Ereignissperre empfängt, außerdem ein Token oder einen anderen Indikator empfangen, das/den sie/er verwenden kann, zu verifizieren, dass sie/er die mit dem gesperrten Ereignis assoziierte Sperre besitzt. In anderen Ausführungsformen kann der Speicherknoten eine ID der anforderden Verarbeitungseinrichtung oder des Knotens zusammen mit dem Sperrwert (oder in einigen Ausführungsformen als den Sperrwert zum Angeben einer Sperre) speichern, um zu gewährleisten, dass etwaige Anforderungen zum Modifizieren von Ereignisdaten von einer Verarbeitungseinrichtung kommen, die die Sperre hält.
  • Unter Bezugnahme auf 3 werden das Ergebnis der Operation 170 mit einem JA und die anschließende Operation 172 in Anforderung 116 und Antwort 118 dargestellt. Ein Knoten des Verarbeitungsverbunds 108 gibt eine Anforderung an den dritten Speicherknoten 106 aus, wobei die Ergebnisse von find -unlocked_key() ein event_id von 3 korrespondierend mit Ereignis 3, für das der Speicherknoten 106 den Sperrwert hält, gesetzt auf 0 (nicht gesperrt), zurückgibt. Als Reaktion gibt der Speicherknoten 106 in Operation 172 den event_id-Wert von 3 in Antwort 118 zurück, wodurch dem anfordernden Knoten gestattet wird, mit Anfordern und Verarbeiten von Daten für Ereignis 3 fortzufahren.
  • Erneut Bezug nehmend auf 4, fährt, wenn das Ergebnis von Operation 170 NEIN ist, z. B. wenn der Speicherknoten, der die Anforderung empfängt, keinen Sperrwert für ein Ereignis, das nicht gesperrt ist, hält, das Verfahren mit Operation 174 fort, in der die Anforderung an einen anderen (z. B. nachfolgenden) Speicherknoten weitergeleitet wird, der entweder das Verfahren 160 in Operation 162 einleitet oder in einigen Ausführungsformen direkt mit Operation 166 fortfahren kann, wenn der Speicherknoten informiert ist, dass die Entität, die die Anforderung weiterleitet, ein anderer Speicherknoten ist.
  • Diese Anordnung der Operationen 170 und 174 ist in der Ausführungsform von 3 dargestellt, mit der einleitenden Anforderung 110 von einem Knoten des Verarbeitungsverbunds 108, gesandt an den ersten Speicherknoten 102. Der erste Speicherknoten 102 führt find_unlocked_key() aus, das fehlschlägt, da der Speicherknoten 102 den Sperrwert für etwaige Ereignisse, die nicht gesperrt sind, nicht hält. Wie ersichtlich ist, hält der Speicherknoten die Sperrwerte für zwei Ereignisse, die bereits gesperrt sind (Wert von 1). Das Fehlschlagen von find_unlocked_key() resultiert in der Verzweigung NEIN und führt zu Operation 174, wo die Anforderung an den zweiten Speicherknoten 104 weiterleitet wird 112. Der zweite Speicherknoten 104 fährt dann mit dem Verfahren 160 fort und führt in Operation 170 find_unlocked_key() gegen seine gespeicherten Ereignisdaten aus. Da der Speicherknoten 104 eine Ereignis-ID 2 mit einem Sperrwert von 0 (nicht gesperrt) enthält, fährt der Speicherknoten 104 dann mit Operation 172 (die Verzweigung JA) fort, in der er die Sperre für die Ereignis-ID 2 auf 1 (gesperrt) setzt und dann mit einem Schlüsselwert von event_id::2 an den anfordernden Knoten des Verarbeitungsverbunds 108 antwortet 114. Wie in 3 dargestellt, wird die Antwort 114 direkt dem Verarbeitungsverbund 108 bereitgestellt. In anderen Ausführungsformen kann die Antwort 114 jedoch an den Speicherknoten, der die Anforderung weiterleitete, für anschließendes Antworten an die ursprüngliche Quelle der Anforderung zurückgegeben werden.
  • Es sollte ferner verstanden werden, dass, wenn der zweite Speicherknoten 104 keine Ereignisse mit Sperrwerten von 0 hält, z. B. find_unlocked_key() fehlschlagen würde, er wiederum die Anforderung an den nächsten Speicherknoten, den dritten Speicherknoten 106 und so weiter weiterleiten würde, bis ein Speicherknoten mit einem nicht gesperrten Ereignis imstande ist, zu antworten.
  • Die Komponenten der Systeme 100 und/oder 140 in Ausführungsformen enthalten, oder können unter Verwendung dieser implementiert sein, zum Beispiel einen oder mehrere Prozessoren, die in separaten Komponenten angeordnet sind, oder alternativ einen oder mehrere Verarbeitungskerne, die in einer Komponente (zum Beispiel in einer System-auf-Chip- bzw. SoC-Konfiguration) und beliebigen zu den Prozessoren in Beziehung stehenden Schaltungen (z. B. Überbrückungsschnittstellen usw.) verkörpert sind. Beispielhafte Prozessoren können verschiedene Mikroprozessoren wie Allzweckprozessoren, die für allgemeine Berechnungen verwendet werden können, und/oder Mikroprozessoren, die speziell angefertigt sind, wie spezifisch zur Verarbeitung digitaler Signale und noch spezifischer zur Verarbeitung digitaler Audiosignale, enthalten, sind aber nicht darauf beschränkt. Beispiele können Prozessoren der Familie iAPX, der Familie ARM, der Familie MIPS, der Familie SPARC, der Familie PA-RISC, der Familie POWER oder eine beliebige andere geeignete Prozessorarchitektur, die jetzt bekannt ist oder später entwickelt wird, enthalten. Noch andere Ausführungsformen können eine anwendungsspezifische integrierte Schaltung (ASIC) oder eine feldprogrammierbare Gatteranordnung (FPGA) verwenden, die zur Verwendung durch eine oder mehrere Komponenten der Systeme 100 und/oder 140 kundenspezifisch angepasst werden kann. In einigen Ausführungsformen können eine oder mehrere Komponenten der Systeme 100 und/oder 140 unter Verwendung von computerlesbaren Medien in Software implementiert sein, die durch einen der vorstehenden Prozessoren ausführbar ist. In anderen Ausführungsformen kann eine Kombination von Hardware und Software verwendet werden, eine oder mehrere Komponenten der Systeme 100 und/oder 140 zu implementieren.
  • 5 zeigt ein Ablaufdiagramm der Operationen eines anderen beispielhaften Verfahrens 200 zum Erlangen eines Schlüsselwertpaars eines nicht gesperrten Ereignisses. Das Verfahren 200 kann durch mindestens einen Anteil des Systems 140 vollständig oder teilweise ausgeführt werden. Verschiedene Operationen des Verfahrens 200 können mit Operationen des Verfahrens 160 überlappen und werden hier deshalb nicht detailliert wiederholt; der Leser wird auf die vorstehende Diskussion des Verfahrens 160 verwiesen. Das Verfahren 200 ist ein mögliches Verfahren, das ausgeführt werden kann, wenn ein anfordernder Speicherknoten eine Ereignis-ID zusammen mit einer Anforderung zum Sperren des Ereignisses liefert.
  • Beginnend in Operation 202, empfängt ein Speicherknoten, z. B. Speicherknoten 102, 104 oder 106, eine Anforderung eines Schlüsselwertpaars für ein nicht verarbeitetes und/oder nicht gesperrtes Ereignis in dem DAQ-System. Als Reaktion lokalisiert die Operation 204 ein nicht verarbeitetes Ereignis. Dies ist in der Operation ähnlich einem Speicherknoten, der die vorstehend unter Bezugnahme auf Verfahren 160 beschriebene Funktion find_unlocked_key() ausführt.
  • Wenn in Operation 206 ein Ereignis in dem Speicherknoten gefunden wird, das einen Sperrwert von nicht gesperrt enthält, fährt das Verfahren 200 mit Operation 208 (dem JA-Pfad) fort und fährt fort, auf die Anforderung mit einem Schlüsselwert korrespondierend mit dem nicht gesperrten Ereignis zu antworten. Wenn umgekehrt in Operation 206 kein Ereignis in dem Speicherknoten gefunden wird, das einen Sperrwert von nicht gesperrt enthält, fährt das Verfahren 200 mit der Operation 210 fort und leitet die Anforderung an einen anderen Knoten weiter, um ein nicht gesperrtes Ereignis zu lokalisieren.
  • Als eine andere möglich Ausführungsform kann der empfangende Speicherknoten in Operation 204, wenn der anfordernde Verarbeitungsknoten eine Ereignis-ID liefert, den Ereigniseintrag korrespondierend mit der Ereignis-ID suchen und bestimmen, ob er außerdem den assoziierten Sperrwert hält. Fortfahrend zu Operation 206, kann der empfangende Speicherknoten, wenn der Sperrwert nicht vorhanden ist (der NEIN-Pfad), die vorstehend diskutierte Hashfunktionsgleichung verwenden, um den Speicherknoten zu bestimmen, der den Sperrwert hält, und, sobald dieser bestimmt ist, die Anforderung an den durch die Hashfunktionsgleichung angegebenen Speicherknoten weiterleiten. Als eine weitere mögliche Ausführungsform, wie für Implementierungen, in denen Hashfunktionen schneller ausgeführt werden können, als durch Ereignisse zu suchen, kann der empfangende Speicherknoten die Hashfunktionsgleichung unmittelbar nach Empfangen einer Anforderung von einem Verarbeitungsknoten ausführen, um zu bestimmen, ob die Anforderung weitergeleitet werden muss (und falls ja, an welchen Knoten).
  • 6 zeigt eine beispielhafte Computervorrichtung 500, die die hierin beschriebenen Geräte, Systeme und/oder Verfahren (wie die Speicherknoten 102, 104 und 106 und die Datenquellen 103, 105 und 107 der Geräte 100 und 140) gemäß verschiedenen Ausführungsformen einsetzen kann. Wie dargestellt, kann die Computervorrichtung 500 eine Anzahl von Komponenten wie einen oder mehrere Prozessoren 504 (einer dargestellt) und mindestens einen Kommunikationschip 506 enthalten. In verschiedenen Ausführungsformen können der eine oder die mehreren Prozessoren 504 jeweils einen oder mehrere Prozessorkerne enthalten. In verschiedenen Ausführungsformen können der eine oder die mehreren Prozessoren 504 Hardwarebeschleuniger enthalten, um den einen oder die mehreren Prozessorkerne zu ergänzen. In verschiedenen Ausführungsformen kann der mindestens eine Kommunikationschip 506 an den einen oder die mehreren Prozessoren 504 physikalisch und elektrisch gekoppelt ein. In weiteren Implementierungen kann der Kommunikationschip 506 Bestandteil des einen oder der mehreren Prozessoren 504 sein. In verschiedenen Ausführungsformen kann die Computervorrichtung 500 eine gedruckte Leiterplatte (PCB) 502 enthalten. Für diese Ausführungsformen können der eine oder die mehreren Prozessoren 504 und der Kommunikationschip 506 darauf angeordnet sein. In alternativen Ausführungsformen können die verschiedenen Komponenten ohne Einsatz der PCB 502 gekoppelt sein.
  • In Abhängigkeit von ihren Anwendungen kann die Computervorrichtung 500 andere Komponenten enthalten, die physikalisch und elektrisch an die PCB 502 gekoppelt sein können. Diese anderen Komponenten können eine Speichersteuerung 526, einen flüchtigen Speicher (z. B. Direktzugriffspeicher (DRAM) 520), einen nichtflüchtigen Speicher wie einen Nur-Lese-Speicher (ROM) 524, einen Flash-Speicher 522, eine Speichervorrichtung 554 (z. B. ein Festplattenlaufwerk (HDD)), eine E/A-Steuerung 541, einen Digitalsignalprozessor (nicht dargestellt), einen Kryptoprozessor (nicht dargestellt), einen Grafikprozessor 530, eine oder mehrere Antennen 528, eine Anzeige (nicht dargestellt), eine Berührungsbildschirmanzeige 532, eine Berührungsbildschirmsteuerung 546, eine Batterie 536, einen Audiocodec (nicht dargestellt), einen Videocodec (nicht dargestellt), eine Vorrichtung eines globalen Positionierungssystems (GPS) 540, einen Kompass 542, einen Beschleunigungsmesser (nicht dargestellt), ein Gyroskop (nicht dargestellt), einen Lautsprecher 550, eine Kamera 552 und eine Massenspeichervorrichtung (wie ein Festplattenlaufwerk, ein Festkörperlaufwerk, eine Kompaktplatte (CD), eine digitale vielseitige Platte (DVD)) (nicht dargestellt) und so weiter enthalten, sind aber nicht darauf beschränkt. Wenn ein Speicherknoten 102, 104 und/oder 106 unter Verwendung einer Computervorrichtung 500 implementiert ist, können derartige Knoten insbesondere den nichtflüchtigen Speicher eines oder mehrerer vorstehend beschriebener Typen nutzen.
  • In einigen Ausführungsformen können der eine oder die mehreren Prozessoren 504, der Flash-Speicher 522 und/oder die Speichervorrichtung 554 assoziierte Firmware (nicht dargestellt) enthalten, die Programmierungsanweisungen speichert, die konfiguriert sind, die Computervorrichtung 500 als Reaktion auf Ausführung der Programmierungsanweisungen durch einen oder mehrere Prozessoren 504 in die Lage zu versetzen, ein Betriebssystem und/oder eine oder mehrere Anwendungen einschließlich einer Anwendung oder eines Datenbanksystems zu implementieren, das/die imstande sind, die Verfahren 120, 160 und/oder 200 auszuführen. In verschiedenen Ausführungsformen können diese Aspekte zusätzlich oder alternativ unter Verwendung von Hardware separat von dem einen oder den mehreren Prozessoren 504, dem Flash-Speicher 522 oder der Speichervorrichtung 554 implementiert werden.
  • Die Kommunikationschips 506 können drahtgebundene und/oder drahtlose Kommunikationen für den Transfer von Daten zu und von der Computervorrichtung 500 ermöglichen. Der Begriff „drahtlos“ und seine Ableitungen können verwendet werden, Schaltungen, Vorrichtungen, Systeme, Verfahren, Techniken, Kommunikationskanäle usw. zu beschreiben, die Daten durch die Verwendung von modulierter elektromagnetischer Strahlung durch ein nichtfeststoffliches Medium kommunizieren können. Der Begriff impliziert nicht, dass die assoziierten Vorrichtungen keine Drähte enthalten, obwohl sie diese in einigen Ausführungsformen unter Umständen nicht enthalten. Der Kommunikationschip 506 kann eine beliebige Anzahl von drahtlosen Standards oder Protokollen implementieren, einschließlich von IEEE 802.20, Langzeitevolution (LTE), LTE erweitert (LTE-A), allgemeiner Paketfunkdienst (GPRS), Entwicklungsdaten optimiert (Ev-DO), entwickelter Hochgeschwindigkeit-Paketzugriff (HSPA+), entwickelter Hochgeschwindigkeit-Abwärtsstrecken-Paketzugriff (HSDPA+), entwickelter Hochgeschwindigkeit-Aufwärtsstrecken-Paketzugriff (HSUPA+), globales System für Mobilkommunikation (GSM), erweiterte Datenraten für GSM Entwicklung (EDGE), Codeteilungsmehrfachzugriff (CDMA), Zeitteilungsmehrfachzugriff (TDMA), digitale erweiterte kabellose Telekommunikation (DECT), weltweite Interoperabilität für Mikrowellenzugriff (WiMAX), Bluetooth, Ableitungen davon sowie andere drahtlose Protokolle, die als 3G, 4G, 5G und darüber hinaus bezeichnet werden, aber nicht darauf beschränkt. Die Computervorrichtung 500 kann eine Vielzahl von Kommunikationschips 506 enthalten. Zum Beispiel kann ein erster Kommunikationschip 506 für drahtlose Kommunikationen eines kürzeren Bereichs wie Wi-Fi und Bluetooth vorgesehen sein und ein zweiter Kommunikationschip 506 kann für drahtlose Kommunikationen eines längeren Bereichs wie GPS, EDGE, GPRS, CDMA, WiMAX, LTE, Ev-DO und andere vorgesehen sein.
  • In verschiedenen Ausführungsformen kann die Computervorrichtung 500 ein Laptop, ein Netbook, ein Notebook, ein Ultrabook, ein Smartphone, ein Computertablet, ein persönlicher digitaler Assistent (PDA), ein Desktopcomputer oder ein Server sein. In weiteren Implementierungen kann die Computervorrichtung 500 eine beliebige andere elektronische Vorrichtung sein, die Daten verarbeitet.
  • Wie durch einen Fachmann im Fachgebiet anerkannt werden wird, kann die vorliegende Offenbarung die Form eines Computerprogrammprodukts oder von Daten zum Erzeugen des Computerprogramms annehmen, wobei das Computerprogramm oder die Daten in einem beliebigen materiellen oder nicht vergänglichen Ausdrucksmedium den computerverwendbaren Programmcode (oder die Daten zum Erzeugen des Computerprogramms) in dem Medium verkörpert aufweist. 7 zeigt ein beispielhaftes computerlesbares nicht vergängliches Speichermedium, das zur Verwendung zum Speichern von Anweisungen (oder Daten, die die Anweisungen erzeugen) geeignet sein kann, die bewirken, dass ein Gerät als Reaktion auf die Ausführung der Anweisungen durch das Gerät ausgewählte Aspekte der vorliegenden Offenbarung praktiziert. Wie dargestellt, kann das nicht vergängliche computerlesbare Speichermedium 602 eine Anzahl von Programmierungsanweisungen 604 (oder von Daten zum Erzeugen der Programmierungsanweisungen) enthalten. Die Programmierungsanweisungen 604 können konfiguriert sein, eine Vorrichtung, z. B. den Computer 500, als Reaktion auf die Ausführung der Programmierungsanweisungen in die Lage zu versetzen, die Speicherknoten 102, 104 und 106 (oder verschiedene Aspekte davon) und die Datenquellen 103, 105 und 107 und/oder andere Aspekte der vorliegenden Offenbarung durchzuführen, z. B. zu implementieren.
  • In alternativen Ausführungsformen können Programmierungsanweisungen 604 (oder Daten zum Erzeugen der Anweisungen) stattdessen auf mehreren computerlesbaren nicht vergänglichen Speichermedien 602 angeordnet sein. In alternativen Ausführungsformen können Programmierungsanweisungen 604 (oder Daten zum Erzeugen der Anweisungen) auf computerlesbaren vergänglichen Speichermedien 602 wie Signale angeordnet sein. Jede Kombination von einem oder mehreren computerverwendbaren oder computerlesbaren Speichermedien kann genutzt werden. Das computerverwendbare oder computerlesbare Medium kann zum Beispiel ein/eine oder mehrere elektronische, magnetische, optische, elektromagnetische, Infrarot- oder Halbleitersysteme, -geräte, -vorrichtungen oder -ausbreitungsmedien sein, ist aber nicht darauf beschränkt. Weitere spezifische Beispiele (eine nicht umfassende Liste) von computerlesbaren Medien würde die folgenden enthalten: eine elektrische Verbindung mit einem oder mehreren Drähten, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), eine optische Faser, ein tragbarer Kompaktplatten-Nur-Lese-Speicher (CD-ROM), eine optische Speichervorrichtung, ein Übertragungsmedium wie diejenigen, die das Internet oder ein Intranet unterstützen, oder eine magnetische Speichervorrichtung. Es ist zu beachten, dass das computerverwendbare oder computerlesbare Medium selbst Papier oder ein anderes geeignetes Medium sein könnte, auf dem das Programm (oder Daten zum Erzeugen des Programms) gedruckt ist, da das Programm (oder Daten zum Erzeugen des Programms) über zum Beispiel optisches Abtasten des Papiers oder anderen Mediums elektronisch erfasst, dann kompiliert, interpretiert oder auf andere Weise in einer geeigneten Weise verarbeitet, wenn erforderlich, und dann in einem Computerspeicher (ohne oder mit Arrangement in einem oder mehreren zwischenliegenden Speichermedien) gespeichert werden kann. Im Kontext dieses Dokuments kann ein computerverwendbares oder computerlesbares Medium jedes Medium sein, das das Programm (oder die Daten zum Erzeugen des Programms) zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem, dem -gerät oder der -vorrichtung enthalten, speichern, kommunizieren, verbreiten oder transportieren kann. Das computerverwendbare Medium kann ein verbreitetes Datensignal mit dem damit verkörperten computerverwendbaren Programmcode (oder den Daten zum Erzeugen des Programmcodes) enthalten, entweder im Basisband oder als Teil einer Trägerwelle. Der computerverwendbare Programmcode (oder die Daten zum Erzeugen des Programms) können unter Verwendung jedes geeigneten Mediums übertragen werden, einschließlich von drahtlosen, drahtgebundenen, optischem Faserkabel, HF usw., aber nicht darauf beschränkt.
  • In verschiedenen Ausführungsformen kann der hierin beschriebene Programmcode (oder die Daten zum Erzeugen des Programmcodes) in einem oder mehreren eines komprimierten Formats, eines verschlüsselten Formats, eines fragmentierten Formats, eines gebündelten Formats usw. gespeichert sein. Der Programmcode (oder die Daten zum Erzeugen des Programmcodes), wie hierin beschrieben, können eines oder mehrere von Installation, Modifikation, Anpassung, Aktualisierung, Kombination, Ergänzung, Konfiguration, Entschlüsselung, Dekompression, Entpackung, Verteilung, Neuzuweisung usw. erfordern, um sie durch eine Computervorrichtung und/oder eine andere Maschine direkt lesbar und/oder ausführbar zu machen. Zum Beispiel kann der Programmcode (oder die Daten zum Erzeugen des Programmcodes) in mehreren Teilen gespeichert sein, die einzeln in separaten Computervorrichtungen komprimiert, verschlüsselt und gespeichert werden, wobei die Teile, wenn sie entschlüsselt, dekomprimiert und kombiniert werden, einen Satz von ausführbaren Anweisungen bilden, die den Programmcode (die Daten zum Erzeugen des Programmcodes), wie hierin beschrieben, implementieren. In einem anderen Beispiel kann der Programmcode (oder die Daten zum Erzeugen des Programmcodes) in einem Zustand gespeichert sein, in dem er durch einen Computer gelesen werden kann, aber die Hinzufügung einer Bibliothek (z. B. eine dynamische Funktionsbibliothek), eines Software-Entwicklungskits (SDK), einer Anwendungsprogrammierungsschnittstelle (API) usw. erfordern, um die Anweisungen in einer besonderen Computervorrichtung oder anderen Vorrichtung auszuführen. In einem anderen Beispiel kann der Programmcode (oder die Daten zum Erzeugen des Programmcodes) konfiguriert werden (z. B. Einstellungen gespeichert, Daten eingegeben, Netzwerkadressen aufgezeichnet usw.), bevor der Programmcode (oder die Daten zum Erzeugen des Programmcodes) vollständig oder teilweise ausgeführt/verwendet werden kann. Demgemäß soll der offenbarte Programmcode (oder die Daten zum Erzeugen des Programmcodes) derartige maschinenlesbare Anweisungen und/oder Programme (oder Daten zum Erzeugen derartiger maschinenlesbarer Anweisungen und/oder Programme) unabhängig von dem besonderen Format oder Zustand der maschinenlesbaren Anweisungen und/oder des Programms, wenn sie gespeichert sind oder sich in anderer Weise im Ruhezustand oder im Transport befinden, einschließen.
  • Computerprogrammcode zum Ausführen von Operationen der vorliegenden Offenbarung können in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und konventionellen prozeduralen Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als ein unabhängiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. In dem letztgenannten Szenarium kann der entfernte Computer durch einen beliebigen Typ von Netzwerk einschließlich eines Nahbereichsnetzwerks (LAN) oder eines Weitbereichsnetzwerks (WAN) mit dem Computer des Benutzers verbunden sein oder kann die Verbindung mit einem externen Computer (zum Beispiel durch das Internet unter Verwendung eines Internetdienstanbieters) hergestellt sein.
  • Das Internet der Dinge (IoT) ist ein Konzept, in dem eine große Anzahl von Computervorrichtungen wie die Speicherknoten 102, 104 und/oder 106, die Datenquellen 103, 105 und/oder 107 und der Rechnerverbund 108 miteinander und mit dem Internet verschaltet sind, um Funktionalität und Datenerfassung auf sehr niedrigen Ebenen bereitzustellen. Eine IoT-Vorrichtung, wie hierin verwendet, kann eine halbautonome Vorrichtung enthalten, die eine Funktion wie Erfassung oder Steuerung unter anderen in Kommunikation mit anderen IoT-Vorrichtungen und einem größeren Netzwerk wie das Internet durchführt. IoT-Vorrichtungen sind häufig hinsichtlich von Speicher, Größe oder Funktionalität begrenzt, wodurch gestattet wird, dass größere Zahlen zu ähnlichen Kosten wie kleinere Zahlen von größeren Vorrichtungen genutzt werden. Eine IoT-Vorrichtung kann jedoch ein Smartphone, ein Laptop, ein Tablet oder PC oder eine andere größere Vorrichtung sein. Des Weiteren kann eine IoT-Vorrichtung eine virtuelle Vorrichtung sein, wie eine Anwendung in einem Smartphone oder einer anderen Computervorrichtung. IoT-Vorrichtungen können IoT-Gateways enthalten, die verwendet werden, IoT-Vorrichtungen an andere IoT-Vorrichtungen und an Cloud-Anwendungen für Datenspeicherung, Prozesssteuerung und dergleichen zu koppeln.
  • Netzwerke von IoT-Vorrichtungen enthalten gewerbliche und Heim-Automatisierungsvorrichtungen wie Wasserverteilungssysteme, Verteilungssysteme für elektrische Energie, Pipeline-Steuersysteme, Werkssteuersysteme, Lichtschalter, Thermostate, Kameras, Alarme, Bewegungssensoren und dergleichen. Die IoT-Vorrichtungen können durch entfernte Computer, Server und andere Systeme zugänglich sein, um zum Beispiel Systeme zu steuern oder auf Daten zuzugreifen.
  • Das zukünftige Wachstum des Internets kann sehr große Zahlen von IoT-Vorrichtungen enthalten. Dementsprechend spricht eine Anzahl von Innovationen für das zukünftige Internet, wie hierin beschrieben, das Erfordernis für alle diese Schichten an, unbehindert zu wachsen, verbundene Betriebsmittel zu entdecken und zugänglich zu machen und die Fähigkeit zu unterstützen, verbundene Betriebsmittel zu verstecken und zu kompartimentieren. Eine beliebige Anzahl von Netzwerkprotokollen und Kommunikationsstandards kann verwendet werden, wobei jedes Protokoll und jeder Standard vorgesehen ist, spezifische Zielsetzungen anzusprechen. Des Weiteren sind die Protokolle Bestandteil des Gewebes, das durch Menschen zugängliche Dienste unterstützt, die unabhängig von Ort, Zeit oder Raum betrieben werden. Die Innovationen enthalten Dienstlieferung und assoziierte Infrastruktur wie Hardware und Software. Die Dienste können gemäß den in Dienstniveau- und Dienstlieferungsvereinbarungen spezifizierten Dienstgüte- bzw. OoS-Bestimmungen bereitgestellt werden. Die Verwendung von IoT-Vorrichtungen und -Netzwerken präsentieren eine Anzahl von neuen Herausforderungen in einem heterogenen Konnektivitätsnetzwerk, das eine Kombination von drahtgebundenen und drahtlosen Technologien umfasst, wie in den 8-11 dargestellt.
  • 8 zeigt eine Anordnung, die Verschaltungen darstellt, die zwischen dem Internet und IoT-Netzwerken gemäß verschiedenen Ausführungsformen vorhanden sein können. Die Verschaltungen können kleinere Netzwerke 1002, bis herunter auf die einzelne IoT-Vorrichtung 1004 (wie die Datenquellen 103, 105 und 107, die Speicherknoten 102, 104 und 106 und der Rechnerverbund 108 (oder seine Knoten)), an das Faserrückgrat 1006 des Internets 1000 koppeln. Zur Vereinfachung der Zeichnung ist nicht jede Vorrichtung 1004 oder anderes Objekt gekennzeichnet.
  • In 8 sind Anbieter der oberen Ebene, die als Schicht-1-Anbieter 1008 bezeichnet werden können, durch das Faserrückgrat des Internets an andere Anbieter wie sekundäre oder Schicht-2-Anbieter 1010 gekoppelt. In einem Beispiel kann ein Schicht-2-Anbieter 1010 an einen Turm 1012 eines zellularen LTE-Netzwerks koppeln, zum Beispiel durch weitere Faserverknüpfungen, durch Mikrowellenkommunikation 1014 oder durch andere Kommunikationstechnologien. Der Turm 1012 kann an ein Maschennetzwerk, das IoT-Vorrichtungen 1004 enthält, durch eine LTE-Kommunikationsverknüpfung 1016 koppeln, zum Beispiel durch einen zentralen Knoten 1018. Die Kommunikation zwischen den einzelnen IoT-Vorrichtungen 1004 kann außerdem auf LTE- oder NR-Kommunikationsverknüpfungen 1016 basieren. In einem anderen Beispiel kann eine Hochgeschwindigkeit-Aufwärtsstrecke 1021 einen Schicht-2-Anbieter 1010 an ein Gateway (GW) 1020 koppeln. Eine Anzahl von IoT-Vorrichtungen 1004 können mit dem GW 1020 und miteinander durch das GW 1020 kommunizieren, zum Beispiel über BLE-Verknüpfungen 1022.
  • Das Faserrückgrat 1006 kann niedrigere Ebenen von Dienstanbietern wie Schicht-3-Anbieter 1024 an das Internet koppeln. Ein Schicht-3-Anbieter 1024 kann als ein allgemeiner Internetdienstanbieter (ISP) betrachtet werden, der zum Beispiel Zugang zum Faserrückgrat 1010 von einem Schicht-2-Anbieter 1010 erwirbt und Zugang zeinem gemeinsamen GW 1026 und anderen Kunden bereitstellt. Von dem gemeinsamen GW 1026 kann ein drahtloses Nahbereichsnetzwerk (WLAN) verwendet werden, mit IoT-Vorrichtungen 1004 durch Wi-Fi®-Verknüpfungen 1028 zu kommunizieren. Eine Wi-Fi-Verknüpfung 1028 kann ebenfalls verwendet werden, an ein Niederleistung-Weitbereich- bzw. LPWA-GW 1030 zu koppeln, das mit IoT-Vorrichtungen 1004 über zum Beispiel LPWA-Verknüpfungen 1032, die mit der durch die LoRa-Allianz veröffentlichten LoRaWan-Spezifikation kompatibel ist, kommunizieren kann.
  • Der Schicht-3-Anbieter 1024 kann außerdem Zugang zu einem Maschennetzwerk 1034 durch eine Koordinatorvorrichtung 1036 bereitstellen, die mit dem Schicht-3-Anbieter 1024 unter Verwendung einer beliebigen Anzahl von Kommunikationsverknüpfungen wie eine zellulare LTE-Verknüpfung, eine LPWA-Verknüpfung oder eine auf dem Standard IEEE 802.15.4 basierende Verknüpfung 1038 wie Zigbee® kommuniziert. Andere Koordinatorvorrichtungen 1036 können eine Kette von Verknüpfungen bereitstellen, die einen Clusterbaum verknüpfter Vorrichtungen bildet.
  • IoT-Vorrichtungen 1004 können jedes Objekt, jede Vorrichtung, jeder Sensor oder jedes „Ding“ sein, der/die/das mit Hardware- und/oder Softwarekomponenten eingebettet ist, die das Objekt, die Vorrichtung, den Sensor oder das „Ding“ in die Lage versetzen, mit einem Ereignis assoziierte Daten zu erfassen und/oder aufzuzeichnen und derartige Daten mit einer oder mehreren anderen Vorrichtungen über ein Netzwerk mit geringer oder keiner Benutzerintervention zu kommunizieren. Zum Beispiel können IoT-Vorrichtungen 1004 in verschiedenen Ausführungsformen abiotische Vorrichtungen wie autonome Sensoren, Messvorrichtungen, Meter, Bilderfassungsvorrichtungen, Mikrofone, Vorrichtungen für Maschinentypkommunikationen (MTC), Maschine-zu-Maschine- bzw. M2M-Vorrichtungen, Lichtabgabevorrichtungen, Tonabgabevorrichtungen, Audio- und/oder Videowiedergabevorrichtungen, elektromechanische Vorrichtungen (z. B. Schalter, Betätigungsglied usw.) und dergleichen sein. In einigen Ausführungsformen können IoT-Vorrichtungen 1004 biotische Vorrichtungen wie Überwachung von Implantaten, Biosensoren, Biochips und dergleichen sein. In anderen Ausführungsformen kann eine IoT-Vorrichtung 1004 eine Computervorrichtung sein, die in einem Computersystem eingebettet und mit Kommunikationsschaltungen des Computersystems gekoppelt ist. In derartigen Ausführungsformen bezieht sich die IoT-Vorrichtung 1004 auf ein System auf Chip (SoC), eine universelle integrierte Schaltungskarte (UICC), eine eingebettete UICC (eUICC) und dergleichen, und das Computersystem kann eine Mobilstation (z. B. ein Smartphone) oder eine Benutzerausrüstung, ein Laptop-PC, eine tragbare Vorrichtung (z. B. Smartwatch, ein Fitness-Tracker usw.), ein „intelligentes“ Gerät (z. B. ein Fernsehgerät, ein Kühlschrank, ein Sicherheitssystem usw.) und dergleichen sein.
  • Jede der IoT-Vorrichtungen 1004 kann eine oder mehrere Speichervorrichtungen und einen oder mehrere Prozessoren zum Erfassen und Speichern/Aufzeichnen von Daten enthalten. Jede der IoT-Vorrichtungen 1004 kann geeignete Kommunikationsschaltungen (z. B. Sender/Empfänger, Modem, Antennenelemente usw.) zum Kommunizieren (z. B. Übertragen und Empfangen) erfasster und gespeicherter/aufgezeichneter Daten enthalten. Des Weiteren kann jede IoT-Vorrichtung 1004 andere Sender/Empfänger für Kommunikationen unter Verwendung zusätzlicher Protokolle und Frequenzen enthalten. Die drahtlosen Kommunikationsprotokolle können jeder geeignete Satz von standardisierten Regeln oder Anweisungen sein, implementiert durch die IoT-Vorrichtungen 1004 zum Kommunizieren mit anderen Vorrichtungen, einschließlich von Anweisungen zum Paketieren/Entpaketieren von Daten, Anweisungen zum Modulieren/Demodulieren von Signalen, Anweisungen zum Implementieren von Protokollstapeln und dergleichen. Zum Beispiel können die IoT-Vorrichtungen 1004 Kommunikationsschaltungen enthalten, die konfigurierbar sind, gemäß einem oder mehreren Person-zu-Person- bzw. P2P- oder Kurzstreckennetzwerk- bzw. PAN-Protokollen (z. B. auf IEEE 802.15.4 basierte Protokolle einschließlich von ZigBee, IPv6 über drahtlose Niederleistung-Kurzstreckennetzwerke (6LoWPAN), WirelessHART, MiWi, Thread, usw.; WiFi-direct, Bluetooth-/BLE-Protokolle; ANT-Protokolle; Z-Wave; LTE D2D oder ProSe; UPnP und dergleichen) zu kommunizieren; die konfigurierbar sind, um unter Verwendung eines oder mehrerer LAN- und/oder WLAN-Protokolle (z. B. Wi-Fibasierte Protokolle oder IEEE-802.11-Protokolle wie IEEE-802.16-Protokolle); ein oder mehrere zellulare Kommunikationsprotokolle (z. B. LTE/LTE-A, UMTS, GSM, EDGE, Wi-MAX usw.) und dergleichen zu kommunizieren. In Ausführungsformen können eine oder mehrere der IoT-Vorrichtungen 1004, des Turms 1012, des GW 1020, 1026 und 1030, der Koordinatorvorrichtung 1036 und so weiter auch mit den hierin, insbesondere unter Bezug auf die 1 und 3, beschriebenen Ausführungsformen inkorporiert sein. Insbesondere können die IoT-Vorrichtungen 1004, der Turm 1012, das GW 1020, 1026 und 1030, die Koordinatorvorrichtung 1036 und so weiter mit den vorstehend unter Bezug auf die 1-7 diskutierten Berechnungsvorrichtungen/-systemen korrespondieren.
  • Die Technologien und Netzwerke können das exponentielle Wachstum von Vorrichtungen und Netzwerken ermöglichen. Während die Technologien wachsen, kann das Netzwerk für Selbstverwaltung, funktionelle Evolution und Kollaboration entwickelt sein, ohne das direkte menschliche Intervention erforderlich ist. Demgemäß werden die Technologien ermöglichen, dass Netzwerke ohne zentralisierte gesteuerte Systeme funktionieren. Die hierin beschriebenen Technologien können die Netzwerkverwaltung und Operationsfunktionen über gegenwärtige Fähigkeiten hinaus automatisieren.
  • 9 zeigt eine beispielhafte Domänentopologie 1100, die für eine Anzahl von IoT-Netzwerken, gekoppelt durch Rückgratverknüpfungen 1102 an GWs 1154, gemäß verschiedenen Ausführungsformen verwendet werden können. Zum Vereinfachen der Zeichnung ist nicht jede Vorrichtung 1104 oder Kommunikationsverknüpfung 1116, 1122, 1128 oder 1132 gekennzeichnet. Die Rückgratverknüpfungen 1102 können eine beliebige Anzahl von drahtgebundenen oder drahtlosen Technologien enthalten und können Bestandteil eines Nahbereichsnetzwerks (LAN), eines Weitbereichsnetzwerks (WAN) oder des Internets sein. Ähnlich 8 können in Ausführungsformen eine oder mehrere IoT-Vorrichtungen 1104 (die die gleichen wie die IoT-Vorrichtungen 1004 von 10 oder ihnen ähnlich sein können), GWs 1154 und so weiter mit hierin beschriebenen Ausführungsformen inkorporiert sein. Insbesondere können die durch 9 dargestellten verschiedenen Vorrichtungen mit den Datenquellen 103, 105 und 107, den Speicherknoten 102, 104 und 106, dem Rechnerverbund 108 usw., die vorstehend unter Bezugnahme auf die 1-7 diskutiert wurden, korrespondieren.
  • Die Netzwerktopologie 1100 kann eine beliebige Anzahl von Typen von IoT-Netzwerken wie ein Maschennetzwerk 1156 unter Verwendung von BLE-Verknüpfungen 1122 enthalten. Andere IoT-Netzwerke, die vorhanden sein können, enthalten ein WLAN-Netzwerk 1158 unter Verwendung von WiFi-Verknüpfungen 1128, ein zellulares Netzwerk 1160 unter Verwendung von zellularen Verknüpfungen 1116 und ein LPWA-Netzwerk 1162 unter Verwendung von LPWA-Verknüpfungen 1132. Jedes dieser IoT-Netzwerke kann Möglichkeiten für neue Entwicklungen bereitstellen, wie hierin beschrieben. Zum Beispiel können Kommunikationen zwischen IoT-Vorrichtungen 1104, wie über die Rückgratverknüpfungen 1102, durch ein dezentralisiertes System für Authentifizierung, Autorisierung und Abrechnung (AAA) geschützt sein. In einem dezentralisierten AAA-System können verteilte Bezahlungs-, Kredit-, Audit-, Autorisierungs- und Authentifizierungssysteme über eine verschaltete heterogene Infrastruktur implementiert sein. Dies gestattet Systemen und Netzwerken, sich hin zu autonomen Operationen zu bewegen.
  • In diesen Typen von autonomen Operationen können Maschinen Humanressourcen vertraglich binden oder Partnerschaften mit anderen Maschinennetzwerken aushandeln. Dies kann das Erreichen von wechselseitigen Zielsetzungen und ausgeglichener Dienstlieferung gegen festgelegte geplante Dienstniveauvereinbarungen gestatten sowie Lösungen ergeben, die Zählung, Messungen und Nachvollziehbarkeit und Verfolgbarkeit bereitstellen. Die Erschaffung neuer Versorgungskettenstrukturen und -verfahren kann ermöglichen, dass ohne irgendeine menschliche Beteiligung eine Vielfalt von Diensten erschaffen, ihre Werte abgeschöpft und sie abgebaut werden.
  • Die IoT-Netzwerke können ferner durch die Integration von Erfassungstechnologien wie Ton, Licht, elektronischer Verkehr, Gesichts- und Mustererkennung, Geruch, Vibration in die autonomen Organisationen erweitert werden. Die Integration von Erfassungssystemen kann systematische und autonome Kommunikation und Koordination von Dienstlieferung gegen vertragliche Dienstzielsetzungen, Orchestrierung und Dienstgüte- bzw. QoS-basiertes Ausschwärmen und Verschmelzen von Betriebsmitteln gestatten.
  • Das Maschennetzwerk 1106 kann durch Systeme erweitert werden, die Inline-Daten-in-Informationen-Umwandlungen durchführen. Zum Beispiel können sich selbst bildende Ketten von Verarbeitungsbetriebsmitteln, die ein Netzwerk mit mehreren Verknüpfungen umfassen, die Umwandlung von Rohdaten in Informationen und die Fähigkeit, zwischen Assets und Betriebsmittel zu unterscheiden, und die assoziierte Verwaltung von beiden in einer effizienten Weise verteilen. Des Weiteren können die geeigneten Komponenten von Infrastruktur- und Betriebsmittelbasierten Vertrauens- und Dienstindizes eingefügt werden, um die Datenintegrität, -qualität, -sicherheit zu verbessern und eine Metrik der Datenkonfidenz zu liefern.
  • Das WLAN-Netzwerk 1158 verwendet Systeme, die Umwandlung von Standards durchführen, um Mehrstandard-Konnektivität bereitzustellen, wodurch IoT-Vorrichtungen 1104, die verschiedene Protokolle verwenden, in die Lage versetzt werden, zu kommunizieren. Weitere Systeme können nahtlose Interkonnektivität über eine Mehrstandard-Infrastruktur, die sichtbare Internetquellen und versteckte Internetquellen umfasst, bereitstellen. Kommunikationen in dem zellularen Netzwerk 1160 können durch Systeme verbessert werden, die Daten abladen, Kommunikationen auf weitere entfernte Vorrichtungen ausdehnen oder beides. Das LPWA-Netzwerk 1162 kann Systeme enthalten, die Nicht-Internetprotokoll- bzw. -IP- zu IP-Verschaltungen, -Adressierung und -Weiterleitung durchführen.
  • 10 zeigt eine Anordnung 1200 eines beispielhaften Cloud-Computing-Netzwerks oder einer Cloud 1201 in Kommunikation mit einer Anzahl von Internet-der-Dinge- bzw. IoT-Vorrichtungen gemäß verschiedenen Ausführungsformen. Die Cloud 1201 kann das Internet, ein oder mehrere zellulare Netzwerk, ein Nahbereichsnetzwerk (LAN) oder ein Weitbereichsnetzwerk (WAN) einschließlich von proprietären und/oder Unternehmensnetzwerken für eine Firma oder eine Organisation oder Kombinationen davon repräsentieren. Die Cloud 1201 kann mit Verbindungen zwischen den verschiedenen Speicherknoten 102, 104 und 106, zwischen den Speicherknoten 102, 104, 106 und dem Rechnerverbund 108 und der Cloud 1001 von 8 korrespondieren. Die für ein derartiges Kommunikationssystem verwendeten Komponenten können mindestens teilweise von dem ausgewählten Typ von Netzwerk und/oder Umgebung abhängig sein. Protokolle und Komponenten zum Kommunizieren über derartige Netzwerke sind gut bekannt und werden hierin nicht ausführlich diskutiert. Es sollte jedoch anerkannt werden, dass die Cloud 1201 mit einem Netzwerkbetreiber assoziiert sein kann, der Ausrüstung und andere Elemente besitzt oder steuert, die erforderlich sind, netzwerkbezogene Dienste bereitzustellen, wie eine oder mehrere Basisstationen oder Zugangspunkte und einen oder mehrere Server zum Leiten von Digitaldaten oder Telefonanrufen (zum Beispiel ein Kernnetzwerk oder ein Rückgratnetzwerk).
  • Die IoT-Vorrichtungen in 10 können die gleichen wie die in Bezug auf die 8-9 diskutierten IoT-Vorrichtungen 1004 oder ihnen ähnlich sein. Insbesondere können die IoT-Vorrichtungen in 10 mit den Speicherknoten 102, 104 und 106, den Datenquellen 103, 105 und 107 usw., die vorstehend unter Bezug auf die 1-7 diskutiert wurden, korrespondieren. Die IoT-Vorrichtungen können eine beliebige Anzahl von verschiedenen Typen von Vorrichtungen enthalten, gruppiert in verschiedenen Kombinationen, wie die IoT-Gruppe 1206, die IoT-Vorrichtungen enthalten kann, die einen oder mehrere Dienste für einen besonderen Benutzer, Kunden, Organisationen usw. bereitstellen. Ein Dienstanbieter kann die IoT-Vorrichtungen in der IoT-Gruppe 1206 in einem bestimmten Bereich (z. B. ein Geostandort, ein Gebäude usw.) stationieren, um den einen oder die mehreren Dienste bereitzustellen. In einem Beispiel kann die IoT-Gruppe 1206 eine Verkehrssteuerungsgruppe sein, wobei die IoT-Vorrichtungen in der IoT-Gruppe 1206 Ampeln, Verkehrsfluss-Überwachungsvorrichtungen, Kameras, Wettersensoren und dergleichen enthalten können, um Verkehrssteuerung und Verkehrsanalysedienste für eine bestimmte Kommunalverwaltung oder einer anderen ähnlichen Entität bereitzustellen. Ähnlich den 8-9 können in Ausführungsformen eine oder mehrere der IoT-Vorrichtungen 1214-1224, des GW 1210 und so weiter mit den hierin beschriebenen verschiedenen Ausführungsformen inkorporiert sein, insbesondere unter Bezugnahme auf die 1-7. Zum Beispiel kann in einigen Ausführungsformen die IoT-Gruppe 1206 oder eine der hierin diskutierten IoT-Gruppen die in Bezug auf die 1-7 diskutierten Komponenten, Vorrichtungen, Systeme enthalten.
  • Die IoT-Gruppe 1206 oder andere Teilgruppen können durch drahtlose Verknüpfungen 1208 wie LPWA-Verknüpfungen und dergleichen mit der Cloud 1201 in Kommunikation stehen. Des Weiteren kann ein drahtgebundenes oder drahtloses Teilnetzwerk 1212 den IoT-Vorrichtungen gestatten, miteinander zu kommunizieren, wie durch ein Nahbereichsnetzwerk, ein drahtloses Nahbereichsnetzwerk und dergleichen. Die IoT-Vorrichtungen können eine andere Vorrichtung wie ein GW 1210 verwenden, um mit der Cloud 1201 zu kommunizieren. Andere Gruppen von IoT-Vorrichtungen können entfernte Wetterstationen 1214, lokale Informationsendgeräte 1216, Alarmsysteme 1218, Geldautomaten 1220, Alarmtafeln 1222 oder sich bewegende Fahrzeuge wie Notfallfahrzeuge 1224 oder andere Fahrzeuge 1226 unter vielen anderen enthalten. Jede dieser IoT-Vorrichtungen kann mit anderen IoT-Vorrichtungen, mit Servern 1204 oder mit beiden in Kommunikation stehen. In einigen Ausführungsformen korrespondieren die Server 1204 mit einem oder mehreren Speicherknoten 102, 104 und 106 und/oder Knoten des Rechnerverbunds 108, die vorstehend diskutiert wurden.
  • Wie aus 10 ersichtlich, kann eine große Anzahl von IoT-Vorrichtungen durch die Cloud 1201 kommunizieren. Dies kann gestatten, dass verschiedene IoT-Vorrichtungen autonom Informationen von anderen Vorrichtungen anfordern oder ihnen diese bereitstellen. Zum Beispiel kann die IoT-Gruppe 1206 eine gegenwärtige Wettervorhersage von einer Gruppe von entfernten Wetterstationen 1214 anfordern, die die Vorhersage ohne menschliche Intervention bereitstellen können. Des Weiteren kann ein Notfallfahrzeug 1224 durch einen Geldautomaten 1220 gewarnt werden, dass ein Einbruchdiebstahl stattfindet. Während sich das Notfallfahrzeug 1224 hin zu dem Geldautomaten 1220 bewegt, kann es auf die Verkehrssteuerungsgruppe 1206 zugreifen, um freie Fahr zu dem Ort anzufordern, zum Beispiel indem Ampeln auf rot geschaltet werden, um den Querverkehr an einer Kreuzung rechtzeitig zu blockieren, damit das Notfallfahrzeug 1224 ungehinderten Zugang zu der Kreuzung hat.
  • In einem anderen Beispiel kann die IoT-Gruppe 1206 eine industrielle Steuerungsgruppe sein (auch als eine „verbundene Fabrik“, eine „Industrie-4.0“-Gruppe und dergleichen bezeichnet), wobei die IoT-Vorrichtungen in der IoT-Gruppe 1206 Maschinen oder Geräte mit eingebetteten IoT-Vorrichtungen, Funkfrequenzidentifizierung- bzw. RFID-Leser, Kameras, Client-Computervorrichtungen in einem Fertigungswerk und dergleichen enthalten können, um Produktionssteuerung, selbstoptimierte oder dezentralisierte Aufgabenverwaltungsdienste, Analysedienste usw. für einen bestimmten Hersteller oder Werksbetreiber bereitzustellen. Zum Beispiel kann die IoT-Gruppe 1206 die Datenquellen 103, 105 und 107 umfassen. In diesem Beispiel kann die IoT-Gruppe 1206 mit den Servern 1204 über das GW 1210, den/die Server 1230 und die Cloud 1201 kommunizieren, um erfasste Daten bereitzustellen, die verwendet werden können, dem Hersteller oder Werksbetreiber Leistungsüberwachung und -analyse bereitzustellen. Außerdem kann, wenn das GW 1210 oder einer oder mehrere des oder der Server 1230 die Speicherknoten 102, 104 und 106 und/oder den Rechnerverbund 108 der 1-7, die vorstehend diskutiert wurden, ist oder diese enthält, die IoT-Gruppe 1206 mit dem GW 1210 und/oder einem oder mehreren der Server 1230 zur Aufzeichnung und Verarbeitung von Ereignissen und Ereignisdaten von der DAQ 100 gemäß den hierin diskutierten verschiedenen Ausführungsformen kommunizieren. Des Weiteren können die IoT-Vorrichtungen in der IoT-Gruppe 1206 untereinander und/oder mit anderen IoT-Vorrichtungen von anderen IoT-Gruppen kommunizieren, um selbständig Entscheidungen zu fällen und ihre Aufgaben so autonom wie möglich durchzuführen.
  • Cluster von IoT-Vorrichtungen wie die durch 10 dargestellten IoT-Gruppen können ausgerüstet sein, mit anderen IoT-Vorrichtungen sowie mit der Cloud 1201 zu kommunizieren. Dies kann den IoT-Vorrichtungen gestatten, ein Ad-hoc-Netzwerk zwischen den Vorrichtungen zu bilden, um ihnen zu gestatten, als eine einzelne Vorrichtung zu fungieren, die als eine Fog-Vorrichtung bezeichnet werden kann. Dies wird weiter unter Bezug auf 10 diskutiert werden.
  • 11 zeigt eine Anordnung 1300 eines Cloud-Computing-Netzwerks oder einer Cloud 1301 in Kommunikation mit einem Maschennetzwerk von IoT-Vorrichtungen, die als eine Fog-Vorrichtung 1320 oder ein Nebel 1320 bezeichnet werden kann, die/der am Rand der Cloud 1301 betrieben wird, gemäß verschiedenen Ausführungsformen. Die Cloud 1301 kann die gleiche wie die Cloud 1001 von 8 und die Cloud 1201 von 10 oder ihnen ähnlich sein. In diesem Beispiel ist der Fog 1320 eine Gruppe von IoT-Vorrichtungen an einem Schnittpunkt (z. B. und kann eine oder mehrere IoT-Gruppen 1206 von 10 enthalten). Der Fog 1320 kann gemäß Spezifikationen eingerichtet werden, die unter anderem durch das OpenFog Consortium (OFC), die Open Connectivity Foundation™ (OCF) veröffentlicht wurden. In einigen Ausführungsformen kann der Fog 1320 ein Tangle sein, wie durch die IOTA-Foundation definiert. Zusätzlich kann jede der IoT-Vorrichtungen in dem Fog 1320 mit den Speicherknoten 102, 104, 106 und den Datenquellen 103, 105, 107, die vorstehend unter Bezug auf die 1-7 diskutiert wurden, korrespondieren.
  • In Ausführungsformen können Fog-Computing-Systeme wie der Fog 1320 Mechanismen sein, um die Cloud-Computing-Funktionalität näher an Datenerzeuger und Kunden zu bringen, wobei verschiedene Netzwerkvorrichtungen Cloud-Anwendungslogik auf ihrer nativen Architektur ausführen. Fog-Computing ist eine horizontale Architektur auf Systemebene, die Betriebsmittel und Dienste der Berechnung, Speicherung, Steuerung und Vernetzung irgendwo entlang dem Kontinuum von der Cloud 1301 zu den Dingen (z. B. IoT-Vorrichtungen 1304) verteilt.
  • Fog-Computing-Systeme können verwendet werden, Berechnungen/Aggregation niedriger Latenz an den Daten durchzuführen, während sie zu einem randständigen Cloud-Computing-Dienst und/oder einem zentralen Cloud-Computing-Dienst (z. B. Speicherknoten 102, 104, 106 und/oder Datenquellen 103, 105, 107 in 1) zum Durchführen massiver Berechnungen oder rechentechnisch belastender Aufgaben geleitet werden. Dagegen konsolidiert randständige Cloud-Computing von Menschen betriebene, fakultative Betriebsmittel als eine Cloud. Diese fakultativen Betriebsmittel können unter anderem die Speicherknoten 102, 104, 106 und/oder die Datenquellen 103, 105, 107, Desktop-PCs, Tablets, Smartphones, Nano-Datenzentren und dergleichen enthalten. In verschiedenen Implementierungen können Betriebsmittel in der randständigen Cloud in einer Einbis Zwei-Sprung-Nähe zu den IoT-Vorrichtungen 1304 sein, was darin resultieren kann, den Overhead in Bezug auf die Verarbeitung von Daten zu reduzieren, und Netzwerkverzögerung reduzieren kann.
  • In einigen Ausführungsformen kann der Fog 1320 eine Konsolidierung von IoT-Vorrichtungen 1304 und/oder Vernetzungsvorrichtungen wie Router und Vermittlungseinrichtungen mit hohem Berechnungsvermögen und der Fähigkeit, Cloud-Anwendungslogik auf seiner nativen Architektur auszuführen, sein. Fog-Betriebsmittel können von Cloud-Anbietern hergestellt, verwaltet und eingesetzt werden und können mit zuverlässigen Verknüpfungen hoher Geschwindigkeit verschaltet sein. Des Weiteren sind Fog-Betriebsmittel im Vergleich mit Edge-Systemen weiter von dem Rand des Netzwerks entfernt angesiedelt, aber näher als eine zentrale Cloud-Infrastruktur. Fog-Vorrichtungen werden verwendet, rechentechnisch intensive Aufgaben, die von Edge-Betriebsmitteln abgeladen werden, effektiv handzuhaben.
  • In Ausführungsformen kann der Fog 1320 am Rand der Cloud 1301 betrieben werden. Der Fog 1320, der am Rand der Cloud 1301 betrieben wird, kann ein Edge-Netzwerk der Cloud 1301 überlappen oder darunter subsummiert sein. Das Edge-Netzwerk der Cloud 1301 kann mit dem Fog 1320 überlappen oder ein Teil des Fog 1320 werden. Des Weiteren kann der Fog 1320 ein Edge-Fog-Netzwerk sein, das eine Edge-Schicht und eine Fog-Schicht enthält. Die Edge-Schicht des Edge-Fog-Netzwerks enthält eine Zusammenstellung von lose gekoppelten, fakultativen und von Menschen betriebenen Betriebsmitteln (z. B. die vorstehend erwähnten Edge-Betriebsmittel). Die Fog-Schicht residiert auf der Edge-Schicht und ist eine Konsolidierung von Vernetzungsvorrichtungen wie die Speicherknoten 102, 104, 106 und/oder die Datenquellen 103, 105, 107 der 1-7.
  • Daten können erfasst, gespeichert/aufgezeichnet und unter den IoT-Vorrichtungen 1304 (oder zum Beispiel unter den Speicherknoten 102, 104 und 106, die direkte Verknüpfungen miteinander haben, wie durch die 1 und 3 dargestellt) kommuniziert werden. Eine Analyse des Verkehrsflusses und der Steuerungsschemata kann durch Aggregatoren 1326, die mit den IoT-Vorrichtungen 1304 und miteinander durch ein Maschennetzwerk stehen, implementiert werden. Die Aggregatoren 1326 können ein Typ von IoT-Vorrichtung 1304 und/oder Netzwerkgerät sein. In einigen Beispielen können die Aggregatoren stationäre Infrastrukturausrüstung wie der Rechnerverbund 108 sein. Daten können über den Aggregator zu der Cloud 1301 (z. B. die Speicherknoten 102, 104 und 106 in 1) hochgeladen werden und Befehle können von der Cloud 1301 durch die GWs 1324, die mit den IoT-Vorrichtungen 1304 und den Aggregatoren 1326 durch das Maschennetzwerk in Kommunikation stehen, empfangen werden. Anders als beim herkömmlichen Modell des Cloud-Computing kann die Cloud 1301 in einigen Implementierungen über geringe oder keine Berechnungsfähigkeiten verfügen und nur als ein Aufbewahrungsort zum Archivieren von Daten, die durch den Fog 1320 aufgezeichnet und verarbeitet wurden, dienen. In diesen Implementierungen zentralisiert die Cloud 1301 das Datenspeichersystem und stellt Zuverlässigkeit und Zugang zu Daten durch die Berechnungsbetriebsmittel in dem Fog 1320 und/oder die Edge-Betriebsmittel bereit. Da sich der Datenspeicher der Cloud 1301 am Kern der Architektur befindet, ist er durch sowohl Edge- als auch Fog-Schichten des vorstehend erwähnten Edge-Fog-Netzwerks zugänglich.
  • Ähnlich den 8-11 können in Ausführungsformen eines oder mehrere von IoT-Vorrichtungen 1304, Aggregatoren 1326 und so weiter mit den hierin beschriebenen verschiedenen Ausführungsformen inkorporiert sein, insbesondere unter Bezug auf die 1-7. Zum Beispiel, und unter Bezugnahme auf die 1 und 3, können die Speicherknoten 102, 104 und 106 (und andere Speicherknoten) ein Cloud-Netzwerk oder einen Fog 1320 zum Erzeugen eines Teils oder des gesamten DAQ-Systems 100 gemäß den hierin diskutierten Ausführungsformen bilden.
  • Eine beliebige Anzahl von Kommunikationsverknüpfungen kann in dem Nebel 1320 verwendet werden. Verknüpfungen kürzeren Bereichs 1322, die zum Beispiel mit IEEE 802.15.4 kompatibel sind, können lokale Kommunikation zwischen IoT-Vorrichtungen, die nahe zueinander oder zu anderen Vorrichtungen sind, bereitstellen. Verknüpfungen längeren Bereichs 1322, die zum Beispiel mit LPWA-Standards kompatibel sind, können Kommunikation zwischen den IoT-Vorrichtungen und den GWs 1324 bereitstellen. Zur Vereinfachung des Diagramms ist nicht jede Kommunikationsverknüpfung 1322 mit einer Referenzzahl gekennzeichnet.
  • Der Fog 1320 kann als ein massiv verschaltetes Netzwerk betrachtet werden, in dem eine Anzahl von IoT-Vorrichtungen in Kommunikation zueinander steht, zum Beispiel durch die Kommunikationsverknüpfungen 1322. Das Netzwerk kann unter Verwendung der Standard-Spezifikation 1.0 des Open Interconnect Consortium (OIC), veröffentlicht durch die Open Connectivity Foundation™ (OCF) am 23. Dezember 2015, eingerichtet werden. Dieser Standard gestattet Vorrichtungen, einander zu entdecken und Kommunikation für Verschaltungen einzurichten. Andere Verschaltungsprotokolle können ebenfalls verwendet werden, einschließlich zum Beispiel des Protokolls AllJoyn von der AllSeen-Allianz, des Protokolls Optimized Link State Routing (OLSR) oder des Better Approach To Mobile Ad-hoc Networking (B.A.T.M.A.N.) unter vielen anderen.
  • Kommunikation von einer IoT-Vorrichtung kann entlang dem günstigsten Weg zwischen einer der IoT-Vorrichtungen geleitet werden, um die GWs 1324 zu erreichen. In diesen Netzwerken kann die Anzahl der Verschaltungen eine beträchtliche Redundanz bereitstellen, die die Aufrechterhaltung von Kommunikation selbst beim Verlust einer Anzahl von IoT-Vorrichtungen gestattet.
  • Nicht alle der IoT-Vorrichtungen müssen dauerhafte Mitglieder des Fogs 1320 sein. In dem Beispiel von 11 sind drei transiente IoT-Vorrichtungen, eine erste Mobilvorrichtung 1312, eine zweite Mobilvorrichtung 1314 und eine dritte Mobilvorrichtung 1316, dem Fog 1320 beigetreten. Der Fog 1320 kann Clients in der Cloud 1301, wie der Server 1334, als eine einzelne Vorrichtung präsentiert werden, die am Rand der Cloud 1301 angeordnet ist. In diesem Beispiel kann die Steuerung von Kommunikation zum Spezifizieren von Betriebsmitteln in dem Fog 1320 erfolgen, ohne irgendwelche spezifischen IoT-Vorrichtungen 1304 in dem Fog 1320 zu identifizieren. Dementsprechend können, falls eine IoT-Vorrichtung 1304 ausfällt, andere IoT-Vorrichtungen 1304 imstande sein, ein Betriebsmittel zu entdecken und zu steuern. Zum Beispiel können die IoT-Vorrichtungen 1304 verdrahtet sein, irgendeiner der IoT-Vorrichtungen 1304 zu gestatten, Messungen, Eingänge, Ausgänge usw. für die anderen IoT-Vorrichtungen 1304 zu steuern. Die Aggregatoren 1326 können ebenfalls Redundanz bei der Steuerung der IoT-Vorrichtungen 1304 und anderer Funktionen in dem Fog 1320 bereitstellen.
  • In einigen Beispielen können die IoT-Vorrichtungen unter Verwendung eines zwingenden Programmierungsstils konfiguriert sein, wobei z. B. jede IoT-Vorrichtung eine spezifische Funktion und spezifische Kommunikationspartner aufweist. Die IoT-Vorrichtungen, die den Fog 1320 bilden, können jedoch in einem deklarativen Programmierungsstil konfiguriert sein, der den IoT-Vorrichtungen gestattet, ihre Operationen und Kommunikationen neu zu konfigurieren, wie um benötigte Betriebsmittel als Reaktion auf Bedingungen, Anfragen und Vorrichtungsausfällen zu bestimmen. Dies kann durchgeführt werden, während transiente IoT-Vorrichtungen wie die Mobilvorrichtungen 1312, 1314, 1316 dem Fog 1320 beitreten. Während transiente oder mobile IoT-Vorrichtungen in den Fog 1320 eintreten oder diesen verlassen, kann der Fog 1320 sich selbst neu konfigurieren, um diese Vorrichtungen einzubeziehen. Dies kann durch Bilden einer temporären Gruppe der Mobilvorrichtungen 1312 und 1314 und der dritten Mobilvorrichtung 1316 durchgeführt werden, um die IoT-Vorrichtungen 1304 zu steuern oder in anderer Weise mit ihnen zu kommunizieren. Wenn eine oder beide der Vorrichtungen 1312, 1314 autonom sind, kann die temporäre Gruppe den Vorrichtungen 1312, 1314 Anweisungen bereitstellen. Während die transienten Vorrichtungen 1312, 1314 und 1316 den Umkreis des Fogs 1320 verlassen, kann dieser sich selbst neu konfigurieren, um diese IoT-Vorrichtungen 1304 aus dem Netzwerk zu eliminieren. Der Fog 1320 kann sich außerdem selbst in funktionelle Einheiten aufteilen, wie die IoT-Vorrichtungen 1304 und andere IoT-Vorrichtungen nahe einem besonderen Gebiet oder geografischen Merkmal oder andere IoT-Vorrichtungen, die eine besondere Funktion durchführen. Dieser Typ von Kombination kann die Bildung größerer IoT-Konstrukte unter Verwendung von Betriebsmitteln aus dem Fog 1320 ermöglichen.
  • Wie durch den Fog 1320 veranschaulicht, ist die organische Evolution von IoT-Netzwerken wesentlich zum Maximieren des Nutzens, der Verfügbarkeit und der Resilienz von IoT-Implementierungen. Des Weiteren zeigt das Beispiel die Nützlichkeit von Strategien zur Verbesserung von Vertrauen und damit Sicherheit auf. Die lokale Identifizierung von Vorrichtungen kann in Implementierungen wichtig sein, da die Dezentralisierung von Identität gewährleistet, dass eine zentrale Autorität nicht ausgenutzt werden kann, Nachahmung von Objekten zu gestatten, die innerhalb der IoT-Netzwerke vorkommen können. Des Weiteren senkt lokale Identifizierung den Kommunikationsoverhead und die Latenz.
  • Die vorliegende Offenbarung wird unter Bezugnahme auf Ablaufdiagrammdarstellungen und/oder Blockdiagrammen von Verfahren, Geräten (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der Ablaufdiagrammdarstellungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Ablaufdiagrammdarstellungen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Allzweckcomputers, Spezialcomputers oder eines anderen programmierbaren Datenverarbeitungsgeräts bereitgestellt werden, um eine Maschine zu produzierbar, derart dass die Anweisungen, die über den Prozessor des Computers oder des anderen programmierbaren Datenverarbeitungsgeräts ausgeführt werden, Mittel zum Implementieren der in dem/den Ablaufdiagramm- und/oder dem Blockdiagrammblock oder -blöcken spezifizierten Funktionen/Maßnahmen erzeugen.
  • Diese Computerprogrammanweisungen können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer oder ein anderes programmierbares Datenverarbeitungsgerät anweisen kann, in einer besonderen Weise derart zu funktionieren, dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Fertigungsartikel produzieren, der Anweisungsmittel enthält, die die in dem/den Ablaufdiagramm- und/oder Blockdiagrammblock oder -blöcken spezifizierte Funktion/Maßnahme implementieren.
  • Die Computerprogrammanweisungen können außerdem in einen Computer oder ein anderes programmierbares Datenverarbeitungsgerät geladen werden, um zu bewirken, dass eine Reihe von Operationsschritten in dem Computer oder anderen programmierbaren Gerät durchgeführt wird, um einen computerimplementierten Prozess derart zu produzieren, dass die Anweisungen, die in dem Computer oder anderen programmierbaren Gerät ausgeführt werden, Prozesse zum Implementieren der in dem/den Ablaufdiagramm- und/oder Blockdiagrammblock oder -blöcken spezifizierten Funktionen/Maßnahmen bereitstellen.
  • BEISPIELE
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist ein nicht vergängliches computerlesbares Medium (CRM), das Anweisungen umfasst, die, wenn sie durch einen ersten Knoten eines verteilten Datenspeichers ausgeführt werden, bewirken, dass der erste Knoten eine Anforderung eines Datenerfassungsereignisses empfängt; von einer Vielzahl von nicht verarbeiteten Datenerfassungsereignissen, die in dem verteilten Datenspeicher gespeichert sind, ein Ereignis mit einer Sperre in einem nicht gesperrten Status abruft; bestimmt, ob die Sperre für das nicht gesperrte Ereignis in dem ersten Knoten gespeichert ist; und mit einer Ereignis-ID korrespondierend mit dem nicht gesperrten Ereignis antwortet, wenn der erste Knoten die Sperre speichert, oder die Anforderung an einen zweiten Knoten des verteilten Datenspeichers, der die Sperre speichert, weiterleitet.
  • Beispiel 2 enthält den Gegenstand von Beispiel 1 oder eines anderen Beispiels hierin, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten die Sperre in einen gesperrten Status versetzt.
  • Beispiel 3 enthält den Gegenstand von Beispiel 2 oder eines anderen Beispiels hierin, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten die Sperre durch Setzen eines Sperren-Metadatenfelds, das in dem Datenerfassungsereignis eingebettet ist, in einen gesperrten Status versetzt.
  • Beispiel 4 enthält den Gegenstand von einem der Beispiele 1-3 oder eines anderen Beispiels hierin, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten eine Hashfunktion in Kombination mit dem Ereignis-ID verwendet, zu bestimmen, dass der zweite Knoten die Anforderung weiterleitet.
  • Beispiel 5 ist ein Verfahren zum Verwalten von Ereignissperren in einem verteilten Datenspeicher, wobei der verteilte Datenspeicher angepasst ist, eine Vielzahl von Datenerfassungsereignissen zu speichern, umfassend Empfangen, an einem ersten Knoten in dem verteilten Datenspeicher, einer Anforderung eines Schlüsselwertpaars für ein nicht verarbeitetes Datenerfassungsereignis aus der Vielzahl von Datenerfassungsereignissen; Lokalisieren, durch den ersten Knoten, in dem verteilten Datenspeicher, eines nicht gesperrten Ereignisses; Bestimmen, durch den ersten Knoten, ob eine Sperre für das nicht gesperrte Ereignis in dem ersten Knoten gespeichert ist; und Antworten, durch den ersten Knoten, auf die Anforderung mit einem Schlüsselwert korrespondierend mit dem nicht gesperrten Ereignis, wenn der erste Knoten die Sperre speichert, oder Weiterleiten, durch den ersten Knoten, wenn der erste Knoten die Sperre nicht speichert, der Anforderung an einen zweiten Knoten des verteilten Datenspeichers, der die Sperre speichert.
  • Beispiel 6 enthält den Gegenstand von Beispiel 5 oder eines anderen Beispiels hierin, umfassend Abrufen, durch den ersten Knoten, einer Ereignis-ID korrespondierend mit dem nicht gesperrten Ereignis.
  • Beispiel 7 enthält den Gegenstand von Beispiel 6 oder eines anderen Beispiels hierin, ferner umfassend Bestimmen der Identität des zweiten Knotens durch Verarbeiten der Ereignis-ID durch eine Hashfunktion.
  • Beispiel 8 enthält den Gegenstand eines der Beispiele 5-7 oder eines anderen Beispiels hierin, ferner umfassend Initialisieren der Sperre, durch den ersten Knoten, wobei der ersten Knoten die Sperre speichert.
  • Beispiel 9 enthält den Gegenstand von Beispiel 8 oder eines anderen Beispiels hierin, wobei Initialisieren der Sperre umfasst, einen in dem ersten Knoten gespeicherten Sperrwert zu setzen, um anzugeben, dass das Ereignis gesperrt ist.
  • Beispiel 10 ist ein System für verteilte Sperrverwaltung für Datenerfassung, umfassend einen ersten Knoten eines verteilten Schlüsselwertspeichers (KVS), wobei der KVS aus einer Vielzahl von Knoten besteht; und einen zweiten Knoten des verteilten KVS, kommunikativ an den ersten Knoten gekoppelt; wobei nach Empfang einer Anforderung eines Ereignisses an einem des ersten oder des zweiten Knotens der Knoten, der die Anforderung empfing, bestimmen soll, ob er eine mit dem Ereignis assoziierte Sperre speichert, und wenn der Knoten, der die Anforderung empfing, die Sperre speichert, der Knoten, der die Anforderung empfing, auf die Anforderung mit einer Ereignis-ID, die mit dem Ereignis assoziiert ist, antworten soll, oder wenn der Knoten, der die Anforderung empfing, die Sperre nicht speichert, der Knoten, der die Anforderung empfing, die Anforderung an den Knoten, der die Anforderung nicht empfing, weiterleiten soll.
  • Beispiel 11 enthält den Gegenstand von Beispiel 10 oder eines anderen Beispiels hierin, wobei jeder des ersten und des zweiten Knotens einen Anteil von Daten, die mit dem Ereignis assoziiert sind, speichert.
  • Beispiel 12 enthält den Gegenstand von Beispiel 10 oder 11 oder eines anderen Beispiels hierin, wobei die Ereignis-ID über sämtliche der Vielzahl von Knoten des verteilten KVS eindeutig ist.
  • Beispiel 13 enthält den Gegenstand eines der Beispiele 10-12 oder eines anderen Beispiels hierin, wobei, wenn der Knoten, der die Anforderung empfing, die Sperre speichert, der Knoten ferner einen Sperrwert initialisieren soll, um anzugeben, dass das Ereignis gesperrt ist.
  • Beispiel 14 enthält den Gegenstand eines der Beispiele 10-13 oder eines anderen Beispiels hierin, wobei der verteilte KVS angepasst ist, eine Vielzahl von Ereignissen zu speichern, und wobei nach Empfang einer Anforderung eines Ereignisses der Knoten, der die Anforderung empfing, ein nicht gesperrtes Ereignis aus der Vielzahl von Ereignissen lokalisieren soll.
  • Beispiel 15 ist ein nicht vergängliches computerlesbares Medium (CRM), umfassend Anweisungen, die, wenn sie durch einen ersten Knoten eines verteilten Datenspeichers ausgeführt werden, bewirken, dass der erste Knoten Folgendes durchführt: Empfangen einer Anforderung eines Datenerfassungsereignisses; Bestimmen, aus einer Vielzahl von Datenerfassungsereignissen, die in dem verteilten Datenspeicher gespeichert sind, ob der erste Knoten eine Sperre für ein nicht gesperrtes Ereignis speichert; und wenn der erste Knoten die Sperre für ein nicht gesperrtes Ereignis speichert, Setzen der Sperre in einen gesperrten Status und Antworten mit einer Ereignis-ID korrespondierend mit dem Ereignis, oder Weiterleiten der Anforderung an einen zweiten Knoten des verteilten Datenspeichers, der die Sperre speichert.
  • Beispiel 16 enthält den Gegenstand von Beispiel 15 oder eines anderen Beispiels hierin, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten mit einem Schlüsselwertpaar korrespondierend mit der Ereignis-ID antwortet.
  • Beispiel 17 enthält den Gegenstand von Beispiel 15 oder 16 oder eines anderen Beispiels hierin, wobei die Anweisungen bewirken sollen, dass der erste Knoten die Sperre durch Setzen eines Sperren-Metadatenfelds, das in dem Datenerfassungsereignis eingebettet ist, in einen gesperrten Status versetzt.
  • Beispiel 18 enthält den Gegenstand eines der Beispiele 15-17 oder eines anderen Beispiels hierin, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten eine Hashfunktion in Kombination mit der Ereignis-ID verwendet, zu bestimmen, dass der zweite Knoten die Anforderung weiterleitet.
  • Beispiel 19 enthält den Gegenstand eines der Beispiele 15-18 oder eines anderen Beispiels hierin, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten eine Kennung eines Anfordernden mit der Anforderung des Datenerfassungsereignisses empfängt und die Kennung in der Sperre speichert.
  • Beispiel 20 enthält den Gegenstand eines der Beispiele 15-19, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten mit einem Token antwortet, der angibt, dass ein Anfordernder die Sperre des Ereignisses korrespondierend mit der Ereignis-ID hält.

Claims (20)

  1. Nicht vergängliches computerlesbares Medium (CRM), umfassend Anweisungen, die, wenn sie durch einen ersten Knoten eines verteilten Datenspeichers ausgeführt werden, bewirken, dass der erste Knoten Folgendes ausführt: Empfangen einer Anforderung eines Datenerfassungsereignisses; Abrufen, aus einer Vielzahl von nicht verarbeiteten Datenerfassungsereignissen, die in dem verteilten Datenspeicher gespeichert sind, eines Ereignisses mit einer Sperre in einem nicht gesperrten Status; Bestimmen, ob die Sperre für das nicht gesperrte Ereignis in dem ersten Knoten gespeichert ist; und Antworten mit einer Ereignis-ID korrespondierend mit dem nicht gesperrten Ereignis, wenn der erste Knoten die Sperre speichert, oder Weiterleiten der Anforderung an einen zweiten Knoten des verteilten Datenspeichers, der die Sperre speichert.
  2. CRM nach Anspruch 1, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten die Sperre in einen gesperrten Status versetzt.
  3. CRM nach Anspruch 2, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten die Sperre durch Setzen eines Sperren-Metadatenfelds, das in dem Datenerfassungsereignis eingebettet ist, in einen gesperrten Status versetzt.
  4. CRM nach einem der Ansprüche 1-3, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten eine Hashfunktion in Kombination mit der Ereignis-ID verwendet, zu bestimmen, dass der zweite Knoten die Anforderung weiterleitet.
  5. Verfahren zum Verwalten von Ereignissperren in einem verteilten Datenspeicher, wobei der verteilte Datenspeicher angepasst ist, eine Vielzahl von Datenerfassungsereignissen zu speichern, umfassend: Empfangen, an einem ersten Knoten in dem verteilten Datenspeicher, einer Anforderung eines Schlüsselwertpaars für ein nicht verarbeitetes Datenerfassungsereignis aus der Vielzahl von Datenerfassungsereignissen; Lokalisieren, durch den ersten Knoten, in dem verteilten Datenspeicher, eines nicht gesperrten Ereignisses; Bestimmen, durch den ersten Knoten, ob eine Sperre für das nicht gesperrte Ereignis in dem ersten Knoten gespeichert ist; und Antworten, durch den ersten Knoten, auf die Anforderung mit einem Schlüsselwert korrespondierend mit dem nicht gesperrten Ereignis, wenn der erste Knoten die Sperre speichert, oder Weiterleiten, durch den ersten Knoten, wenn der erste Knoten die Sperre nicht speichert, der Anforderung an einen zweiten Knoten des verteilten Datenspeichers, der die Sperre speichert.
  6. Verfahren nach Anspruch 5, umfassend Abrufen, durch den ersten Knoten, einer Ereignis-ID korrespondierend mit dem nicht gesperrten Ereignis.
  7. Verfahren nach Anspruch 6, ferner umfassend Bestimmen der Identität des zweiten Knotens durch Verarbeiten der Ereignis-ID durch eine Hashfunktion.
  8. Verfahren nach einem der Ansprüche 5-7, ferner umfassend Initialisieren der Sperre durch den ersten Knoten, wobei der erste Knoten die Sperre speichert.
  9. Verfahren nach Anspruch 8, wobei Initialisieren der Sperre umfasst, einen in dem ersten Knoten gespeicherten Sperrwert zu setzen, um anzugeben, dass das Ereignis gesperrt ist.
  10. System für verteilte Sperrverwaltung für Datenerfassung, umfassend: einen ersten Knoten eines verteilten Schlüsselwertspeichers (KVS), wobei der KVS aus einer Vielzahl von Knoten besteht; und einen zweiten Knoten des verteilten KVS, kommunikativ an den ersten Knoten gekoppelt; wobei nach Empfang einer Anforderung eines Ereignisses an einem des ersten oder des zweiten Knotens: der Knoten, der die Anforderung empfing, bestimmen soll, ob er eine mit dem Ereignis assoziierte Sperre speichert, und wenn der Knoten, der die Anforderung empfing, die Sperre speichert, der Knoten, der die Anforderung empfing, auf die Anforderung mit einer Ereignis-ID, die mit dem Ereignis assoziiert ist, antworten soll, oder wenn der Knoten, der die Anforderung empfing, die Sperre nicht speichert, der Knoten, der die Anforderung empfing, die Anforderung an den Knoten, der die Anforderung nicht empfing, weiterleiten soll.
  11. System nach Anspruch 10, wobei jeder des ersten und des zweiten Knotens einen Anteil von Daten, die mit dem Ereignis assoziiert sind, speichert.
  12. System nach Anspruch 10 oder 11, wobei die Ereignis-ID über sämtliche der Vielzahl von Knoten des verteilten KVS eindeutig ist.
  13. System nach einem der Ansprüche 10-12, wobei, wenn der Knoten, der die Anforderung empfing, die Sperre speichert, der Knoten ferner einen Sperrwert initialisieren soll, um anzugeben, dass das Ereignis gesperrt ist.
  14. System nach einem der Ansprüche 10-13, wobei der verteilte KVS angepasst ist, eine Vielzahl von Ereignissen zu speichern, und wobei nach Empfang einer Anforderung eines Ereignisses der Knoten, der die Anforderung empfing, ein nicht gesperrtes Ereignis aus der Vielzahl von Ereignissen lokalisieren soll.
  15. Nicht vergängliches computerlesbares Medium (CRM), umfassend Anweisungen, die, wenn sie durch einen ersten Knoten eines verteilten Datenspeichers ausgeführt werden, bewirken, dass der erste Knoten Folgendes durchführt: Empfangen einer Anforderung eines Datenerfassungsereignisses; Bestimmen, aus einer Vielzahl von Datenerfassungsereignissen, die in dem verteilten Datenspeicher gespeichert sind, ob der erste Knoten eine Sperre für ein nicht gesperrtes Ereignis speichert; und wenn der erste Knoten die Sperre für ein nicht gesperrtes Ereignis speichert, Setzen der Sperre in einen gesperrten Status und Antworten mit einer Ereignis-ID korrespondierend mit dem Ereignis, oder Weiterleiten der Anforderung an einen zweiten Knoten des verteilten Datenspeichers, der die Sperre speichert.
  16. CRM nach Anspruch 15, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten mit einem Schlüsselwertpaar korrespondierend mit der Ereignis-ID antwortet.
  17. CRM nach Anspruch 15 oder 16, wobei die Anweisungen bewirken sollen, dass der erste Knoten die Sperre durch Setzen eines Sperren-Metadatenfelds, das in dem Datenerfassungsereignis eingebettet ist, in einen gesperrten Status versetzt.
  18. CRM nach einem der Ansprüche 15-17, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten eine Hashfunktion in Kombination mit der Ereignis-ID verwendet, zu bestimmen, dass der zweite Knoten die Anforderung weiterleitet.
  19. CRM nach einem der Ansprüche 15-18, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten eine Kennung eines Anfordernden mit der Anforderung des Datenerfassungsereignisses empfängt und die Kennung in der Sperre speichert.
  20. CRM nach einem der Ansprüche 15-19, wobei die Anweisungen ferner bewirken sollen, dass der erste Knoten mit einem Token antwortet, der angibt, dass ein Anfordernder die Sperre des Ereignisses korrespondierend mit der Ereignis-ID hält.
DE102019128187.3A 2018-12-28 2019-10-18 Verteilte Sperre für Datenerfassungssysteme Pending DE102019128187A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/236,162 US10691506B2 (en) 2018-12-28 2018-12-28 Distributed lock for data acquisition systems
US16/236,162 2018-12-28

Publications (1)

Publication Number Publication Date
DE102019128187A1 true DE102019128187A1 (de) 2020-07-02

Family

ID=66328621

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019128187.3A Pending DE102019128187A1 (de) 2018-12-28 2019-10-18 Verteilte Sperre für Datenerfassungssysteme

Country Status (2)

Country Link
US (1) US10691506B2 (de)
DE (1) DE102019128187A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7142641B2 (ja) * 2017-03-17 2022-09-27 コンヴィーダ ワイヤレス, エルエルシー ネットワークサービス層における分散トランザクション管理
CN113064584B (zh) * 2021-04-22 2024-05-07 中国平安财产保险股份有限公司 幂等的实现方法、装置、设备及介质
EP4404062A1 (de) * 2023-01-23 2024-07-24 Aptiv Technologies AG Eingabedatenverwaltung in einem datenverarbeitungssystem

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7896807B2 (en) * 2004-10-29 2011-03-01 Worcester Polytechnic Institute Multi-channel electrophysiologic signal data acquisition system on an integrated circuit
US7644207B2 (en) * 2006-08-21 2010-01-05 National Instruments Corporation High speed bus for isolated data acquisition applications
KR101050478B1 (ko) * 2009-04-22 2011-07-20 한국표준과학연구원 다채널 신호의 데이터 획득 시스템
US8949566B2 (en) * 2010-12-02 2015-02-03 International Business Machines Corporation Locking access to data storage shared by a plurality of compute nodes
US11474874B2 (en) * 2014-08-14 2022-10-18 Qubole, Inc. Systems and methods for auto-scaling a big data system
US9208167B1 (en) * 2014-09-04 2015-12-08 Edifire LLC Distributed data synchronization and conflict resolution
US9529923B1 (en) * 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
CN107977376B (zh) * 2016-10-24 2020-07-07 腾讯科技(深圳)有限公司 分布式数据库系统及事务处理方法

Also Published As

Publication number Publication date
US20190138368A1 (en) 2019-05-09
US10691506B2 (en) 2020-06-23

Similar Documents

Publication Publication Date Title
DE102019217367A1 (de) VERWALTUNG DER DIENSTQUALITÄT (QoS) IN EDGE-COMPUTING-UMGEBUNGEN
DE102020201015A1 (de) Technologien zum verteilen iterativer berechnungen in heterogenen computerumgebungen
DE102022200847A1 (de) Bestärkendes lernen für mehrfachzugriffsverkehrsverwaltung
DE102020131613A1 (de) Verfahren, system und produkt zum implementieren von deterministischem on-boarding und planen virtualisierter arbeitslasten für edge-computing.
DE112020003766T5 (de) Linkleistungsprognose und Medienstreaming-Technologien
DE112018007463T5 (de) Flexibler Mehrfachzugriffs-Edge-Computing-Dienstverbrauch (Mec-Dienstverbrauch) durch Hostzoning
DE112020001183T5 (de) Multi-slice-unterstützung für mec-fähige 5g-implementierungen
DE102020202398A1 (de) Edge-server-cpu mit dynamischer deterministischer skalierung
DE112018005693T5 (de) Multi-access edge computing (mec)-basierte mehrbetreiberunterstützung für cellular vehicle-to-everything (c-v2x) systeme
DE112017004996T5 (de) Gatewaykoordination für das Internet der Dinge
DE112016007050T5 (de) Intelligente gateway-konfiguration für internet-der-dinge-netzwerke
DE112018007052T5 (de) Konfiguration und Onboarding von vertrauenswürdigen IOT-Vorrichtungen
DE102020100079A1 (de) Verbesserte hochauflösende karten für ein fahrzeug
DE112017006515T5 (de) Adaptive netztopologie
DE112018006701T5 (de) Multihardware-beschleunigte inferenz auf der basis von dienstgütevereinbarungen
DE102019128187A1 (de) Verteilte Sperre für Datenerfassungssysteme
DE102019123244A1 (de) Verbesserungen der verfolgung von multi-access-edgecomputing (mec)-gebührenerfassung und -abrechnung
DE112019004943T5 (de) Automatisierte Erzeugung neuronaler Netze
DE112016001075T5 (de) Verteiltes speichern und abrufen von datensätzen
DE112020007003T5 (de) Multi-funkzugangstechnologie-verkehrsverwaltung
DE112019003316T5 (de) Verteiltes berechnungsverfahren, vorrichtung und system
DE102021210882A1 (de) Erweitertes peer-to-peer (p2p) mit edge-vernetzung
DE102022203249A1 (de) Mehrfachzugriff-edge-computing- (mec-) fahrzeug-zu-alles-(v2x-) interoperabilitätsunterstützung für mehrere v2x-nachrichtenbroker
DE112018006935T5 (de) Sicherheitsprofile für OCF-Vorrichtungen und vertrauenswürdige Plattformen
DE112020007229T5 (de) Föderiertes mec-framework für kraftfahrzeugdienste