Modellausführung für verschiedene Geräte
Modelle werden unabhängig voneinander ausgeführt. Das heißt, die Modelle für spezifische Geräte können parallel ausgeführt werden, wenn möglich unter Verwendung von Hardware-Parallelität, wenn die Modelle Daten (wie zum Beispiel Measurement-, Event- oder Operation-Objekte) für ein anderes Set von Geräten verarbeiten. Wenn Sie ein Modell definieren, dann können Sie es so konfigurieren, dass Daten von einem Set von spezifischen Geräten oder von einer Gruppe von Geräten verwendet werden, wobei jedes Gerät unabhängig behandelt wird.
Jedes Modell muss entweder:
Eingaben von einer Reihe von spezifischen Geräten empfangen und Ausgaben an eine Reihe von spezifischen Geräten senden, oder
Eingaben vom jedem Gerät innerhalb von Gerätegruppen empfangen und Ausgaben an das Trigger-Gerät senden.
Eine Gerätegruppe ist ein Mittel zum Organisieren von Geräten. Eine Gerätegruppe kann beliebig viele Geräte oder auch weitere Gerätegruppen enthalten. Wenn ein Modell eine Gerätegruppe verwendet, dann wirkt sich das Modell auf alle Geräte in dieser Gerätegruppe aus, entweder direkt oder indirekt über Mitglieder der Gerätegruppe, die selbst Gerätegruppen sind und Gerätemitglieder haben (oder sogar "Enkelkinder"-Gerätegruppenmitglieder). Ein Gerät kann Mitglied von keiner, einer oder mehreren Gerätegruppen sein. Siehe auch die Informationen zur Device Management-Anwendung und dem Gruppieren von Geräten im
User guide (hiervon gibt es auch eine deutsche Version) unter
https://www.cumulocity.com/guides/.
Anmerkung:
Ein Modell ermittelt die Mitglieder einer Gerätegruppe nur beim Aktivieren des Modells. Wenn sich die Mitglieder einer Gerätegruppe während der Ausführung des Modells ändern, dann hat dies keinen Einfluss auf das Modellverhalten; neu hinzugefügte oder entfernte Mitglieder werden bei der Ausführung nicht berücksichtigt. Wenn Sie die Mitglieder einer Gerätegruppe ändern, dann sollten Sie alle Modelle, die diese Gerätegruppe benutzen, deaktivieren und anschließend wieder aktivieren.
Es ist nicht möglich, die beiden oben genannten Eingabeblocktypen zu kombinieren (siehe jedoch
Broadcast-Geräte). Daten von einem Modell, das spezifische Geräte verarbeitet, können jedoch an andere Modelle gesendet und von diesen empfangen werden, einschließlich Modellen für Gerätegruppen, und umgekehrt (siehe
Verbindungen zwischen Modellen).
Wenn ein Modell Daten aus Gerätegruppen verwendet, dann verhält sich das Modell so, als würden mehrere Instanzen dieses Modells ausgeführt (wie unten veranschaulicht), wobei jede Instanz die Daten von jedem Gerät unabhängig verarbeitet. Jede Instanz verarbeitet Daten für ein anderes Gerät, aber alle haben die gleichen Blöcke und Blockparameter. Die Werte auf den Verbindungen sind bei den verschiedenen Instanzen unabhängig. Alle zustandsorientierten Blöcke, wie zum Beispiel der Durchschnitt (Mittelwert)-Block, arbeiten unabhängig von den Daten anderer Geräte. Wenn ein Block (wie bei Modellen mit spezifischen Geräten) einen Laufzeitfehler oder eine Ausnahme verursacht, dann wird das gesamte Modell in einen fehlerhaften Zustand versetzt und die Verarbeitung der Daten wird für alle Geräte gestoppt.
Wenn für die Eingaben Gerätegruppen verwendet werden, dann benutzen alle Eingabeblöcke normalerweise dieselbe Gruppe. Es ist möglich, verschiedene Gerätegruppen zu verwenden. Wenn sich Geräte in einer Gruppe befinden, jedoch nicht in einer anderen, dann generieren diese Blöcke niemals ein Signal für die Geräte, die nicht in dieser Gruppe sind. Bei einigen Blöcken, wie zum Beispiel dem Ausdruck-Block, ist dies nicht hilfreich. Ein Ausdruck-Block generiert nur dann eine Ausgabe, wenn alle erforderlichen Eingänge einen Wert erhalten haben. Für die pulse-Eingänge eines Gate-Blocks kann dies jedoch hilfreich sein.
Wenn ein Modell Eingänge hat, die Daten von spezifischen Geräten verwenden, dann können die Ausgabeblöcke, welche die Ausgaben erzeugen, dasselbe Gerät oder verschiedene spezifische Geräte angeben.
Wenn ein Modell Eingänge hat, die Daten aus einer Gerätegruppe verwenden, dann müssen alle synchronen Ausgabeblöcke das Trigger-Gerät angeben. Dies ist ein spezieller Block, den Sie in der Ausgabe-Kategorie der Palette finden. Das Trigger-Gerät generiert Daten (Measurement, Event oder Operation) für jedes Gerät, für das die Instanz gilt - oder für jedes Gerät, das die Daten gesendet hat, um diese Instanz auszulösen. Asynchrone Ausgabeblöcke in solchen Modellen können das Trigger-Gerät oder ein spezielles Gerät angeben.
Wenn ein Vorlagenparameter für einen Ausgabeblock verwendet wird und wenn der Wert dieses Parameters eine Gerätegruppe benennt, dann wird dies so behandelt, als ob sich der Parameter auf das Trigger-Gerät bezieht. Die Ausgabe geht an das Gerät, das die Auswertung des Modells ausgelöst hat, wobei jedes Gerät innerhalb einer Gruppe unabhängig behandelt wird. In der Regel wird derselbe Vorlagenparameter sowohl für die Eingabe als auch für die Ausgabe verwendet; so beziehen sie sich auf dieselbe Gruppe und jedes Gerät wird unabhängig verarbeitet.
Mit dem Modelleditor können Sie die Geräte oder Gerätegruppen in den Eingabe- und Ausgabeblöcken durch andere ersetzen. Wenn Sie eine Gerätegruppe durch ein Gerät ersetzen, dann schalten die Ausgabeblöcke zwischen dem Trigger-Gerät und dem angegebenen Gerät um, sodass das Modell in einem einsatzfähigen Zustand bleibt. Siehe auch
Geräte, Gerätegruppen und Assets ersetzen.
Die Test- und Simulationsmodi sind nur für Modelle mit spezifischen Geräten zulässig. Wenn Sie ein Modell mit einer Gerätegruppe testen oder simulieren möchten, dann sollten Sie es mit dem Modelleditor so abändern, dass es für ein einzelnes Gerät innerhalb der Gerätegruppe gilt und aktivieren Sie das Modell anschließend im Test- oder Simulationsmodus. Weitere Informationen zu diesen Modi finden Sie unter
Ein Modell aktivieren.
Den Gleichzeitigkeitsgrad definieren
Standardmäßig verwendet die
Analytics Builder-Laufzeit 1 CPU-Kern zur Ausführung von Modellen. Sie können die Anzahl der CPU-Kerne ändern, indem Sie eine
POST-Anfrage an
Cumulocity IoT senden, die den Wert des Keys
numWorkerThreads ändert. Ausführliche Informationen finden Sie unter
Konfiguration.
Normalerweise wird dieser Konfigurationswert auf die Anzahl der für das System verfügbaren CPU-Kerne gesetzt. Es kann jedoch nützlich sein, diesen Wert je nach den verfügbaren Ressourcen höher oder niedriger zu konfigurieren. Er muss nicht auf die Anzahl der Geräte skaliert werden (das heißt, es ist durchaus sinnvoll, 4 Worker-Threads mit Hunderten von Geräten zu haben, wenn man von einer moderaten Ereignisrate pro Gerät ausgeht).
Mit einem Gleichzeitigkeitsgrad von 1 ist es immer noch möglich, Modelle zu erstellen, die Gerätegruppen als Eingaben verwenden. Diese funktionieren jedoch weiterhin unabhängig für jedes Gerät innerhalb der Gerätegruppe, und es ist noch immer nicht möglich, die Eingaben oder Ausgaben von Gerätegruppen und einzelnen Geräten zu kombinieren.
Anmerkung:
Die Verwendung mehrerer spezifischer Geräte in einem Modell mit einem Gleichzeitigkeitsgrad von mehr als 1 kann zu Verbindungen zwischen Modellen führen, die bei mehreren Workers eingesetzt werden. Modellketten, die mehrere spezifische Geräte mit hohem Durchsatz verwenden, skalieren normalerweise weniger gut als Modellketten, die alle ein einziges spezifisches Gerät verwenden.
Die Unterstützung mehrerer Geräte in einem einzigen Modell mit einem Gleichzeitigkeitsgrad von mehr als 1 ist deaktiviert, wenn Ein- oder Ausgabeblöcke, die mit der API-Version 1 des
Analytics Builder Block SDK geschrieben wurden, als Extensionen hinzugefügt werden. Informationen zur Migration der Blöcke auf die API-Version 2 finden Sie in der Dokumentation unter
https://github.com/SoftwareAG/apama-analytics-builder-block-sdk.