Query Microservice
Sie können Query Microservice verwenden, um den ThingWorx Server auszulagern, indem die Ausführung der Abfrage in einem separaten Prozess auf demselben oder auf einem anderen physischen Rechner zugelassen wird. Query Microservice wird in den folgenden Fällen empfohlen:
• Ihr System verwendet Abfragen, die eine sehr große Menge an Daten in den Arbeitsspeicher laden und aus diesem abrufen, wodurch das System langsam ist oder abstürzt.
• Ihr System ist aufgrund einer hohen Anzahl von Abfragen, die im Rahmen der Verarbeitung ausgeführt werden, langsam und reagiert nicht.
|
Zwar reduziert Query Microservice die Systemverarbeitung auf dem ThingWorx Server, es besteht jedoch trotzdem die Möglichkeit, dass die Ausführung von Abfragen aufgrund einer sehr großen Menge an verarbeiteten Daten zu einem Absturz des Diensts führt.
|
Funktionen
• Query Microservice unterstützt PostgreSQL-, MSSQL- und InfluxDB-Datenanbieter in ThingWorx 8.4.0 und höher.
• Query Microservice unterstützt nur Wert-Streams.
• Query Microservice kann auf demselben Rechner wie ThingWorx oder auf einem anderen Rechner ausgeführt werden.
• Datenbank-Cursor-Unterstützung: Kann über die Option <queryservice.serialisation PageSize> aktiviert werden. Bei Aktivierung werden die Abfrageergebnisse aus der Datenbank in Segmenten dieser Größe anstatt alle gleichzeitig zurückgegeben. Dadurch wird der Serverspeicher weniger belastet, und es ist weniger wahrscheinlich, dass der Dienst abstürzt. Die Standardeinstellung ist 0, d.h. kein Cursor.
Ort
Installation und Konfiguration
Um
Query Microservice zu verwenden, müssen Sicherheitsanmeldeinformationen eingerichtet sein, die die Kommunikation zwischen ThingWorx und
Query Microservice ermöglichen. Dies erfordert die Verwendung des
ThingWorx Sicherheitsmanagement-Tools.
Query Microservice muss mithilfe der Skripts im Verteilungspaket installiert werden. Die folgenden Schritte sind zum Installieren und Konfigurieren von
Query Microservice zu befolgen:
2. Führen Sie das Installationsprogramm für Query Microservice (.qms-1.0-windows-installer.exe für Windows oder qms-1.0-linux-x64-installer.run für Linux) aus. Der Bildschirm für den Setup des Installationsprogramms wird angezeigt. Klicken Sie auf Weiter.
|
Wenn Sie Linux verwenden, enthält das Installationsprogramm eine .run-Datei, die Ausführungsberechtigungen erfordert. Um diese festzulegen, führen Sie den folgenden Code aus:
chmod +x qms-installer-file-name.run
|
|
Wenn Sie das Installationsprogramm als ./qms-installer-file-name.run ausführen, wird es im grafischen Modus ausgeführt. Um es im Textmodus auszuführen, führen Sie den folgenden Code aus:
./qms-installer-file-name.run --mode text
|
3. Geben Sie im Feld für das Installationsverzeichnis den Ort der Installation an. Klicken Sie auf Weiter.
4. Fügen Sie den Speicherort des ThingWorx Servers und des Anwendungsschlüssels für die Verbindung hinzu. Klicken Sie auf Weiter.
5. Klicken Sie auf Fertig stellen.
6. Erstellen Sie eine Query Microservice-Konfigurationsdatei mit den folgenden Parametern, und geben Sie einen Namen für die Datei an. In diesem Beispiel wird die Datei qms-security.props genannt. Aktualisieren Sie die Werte für password-file-path und path.
| Diese Speicherorte können jedes beliebige Verzeichnis sein, sie müssen jedoch den Werten in der Datei application.properties für Query Microservice entsprechen. Die Datei keystore.jks sollte sich unter dem Verzeichnis path und die Datei keystore-password unter dem Verzeichnis password-file-path befinden. Wenn diese nicht vorhanden sind, werden sie erstellt. |
| Berechtigungsanforderungen: • Verzeichnisse müssen vorhanden und für den Benutzer, der das Sicherheitsmanagement-Tool ausführt, beschreibbar sein. • Der Benutzer, der Query Microservice ausführt, muss Lesezugriff haben. |
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/QmsPasswordDir"
password-file-name = "qms-keystore-password"
path = "/QmsKeysotreDir"
name = "qmskeystore.jks"
}
}
}
8. Führen Sie die Befehlszeile für das Sicherheits-Tool mit einer ThingWorx Konfigurationsdatei aus, um den Schlüssel zu generieren.
| In diesem Beispiel heißt der Schlüssel qmsAesEncryptionKey. |
./security-common-cli qms-security.props generate-key qmsAesEncryptionKey
9. Rufen Sie den generierten Schlüssel qmsAesEncryptionKey ab, indem Sie security-common-cli ausführen. Kopieren und speichern Sie ihn. Er wird in den folgenden Schritten in den ThingWorx Schlüsselspeicher eingefügt:
./security-common-cli qms-security.props get qmsAesEncryptionKey
Loading config from file qms-security.props
7qT1lf6adY+UvV8hq/xxxx==
10. Erstellen Sie eine Konfigurationsdatei für das Sicherheitsmanagement-Tool, und geben Sie einen Namen für die Datei an (in diesem Beispiel wird sie twx-security.props genannt). Aktualisieren Sie die Werte für password-file-path und path.
| Die Datei keystore.jks sollte sich unter dem Verzeichnis path und die Datei keystore-password unter dem Verzeichnis password-file-path befinden. |
| Berechtigungsanforderungen: • Diese Verzeichnisse müssen vorhanden und für den Benutzer, mit dem Sie das Sicherheitsmanagement-Tool ausführen, beschreibbar sein. |
{
security {
secret-provider = "com.thingworx.security.provider.keystore.KeyStoreProvider"
default-encryption-key-length = 128
keystore {
password-file-path = "/ThingworxPlatform"
password-file-name = "keystore-password"
path = "/ThingworxStorage"
name = "keystore.jks"
}
}
}
11. Fügen Sie qmsAesEncryptionKey in den ThingWorx Schlüsselspeicher ein:
./security-common-cli twx-security.props set qmsAesEncryptionKey OBTAINED_KEY_ABOVE
12. Überprüfen Sie, ob die Konfiguration in der Datei application.properties für Query Microservice mit der Konfiguration in der Konfigurationsdatei des Sicherheits-Tools übereinstimmt.
13. Fügen Sie den neu generierten Anwendungsschlüssel zu
application.properties hinzu, oder fügen Sie ihn mit dem Befehlszeilenschnittstellen-Tool zum Keystore für
Query Microservice hinzu. Weitere Informationen finden Sie weiter unten unter
Konfigurationsparameter. Zum Beispiel:
./security-common-cli qms-security.props set qmsThingworxAppKey <Application key>
14. Führen Sie Query Microservice im Verzeichnis query-micro-service-1.0.0 aus, indem Sie Folgendes ausführen:
| Stellen Sie sicher, dass Ausführungsberechtigungen bestehen. |
◦ Linux:
./bin/query-micro-service.sh
◦ Windows:
bin\query-micro-service
15. Überprüfen Sie bei Bedarf, ob Query Microservice erfolgreich installiert wurde.
| Der Dienst erstellt ein neues Ding in Composer namens remoteQueryService. Solange das remoteQueryService-Ding auf der Plattform vorhanden ist und den Status Aktiv aufweist, werden Abfragen nicht auf dem ThingWorx Server ausgeführt. Um Abfragen auf dem ThingWorx Server auszuführen, müssen Sie das remoteQueryService-Ding manuell löschen. |
| Um zu überprüfen, ob das remoteQueryService-Ding aktiv ist, sehen Sie sich das Symbol neben dem Entitätsnamen in Composer an. In der folgenden Abbildung ist der Dienst verbunden: In der folgenden Abbildung zeigt das rote Symbol, dass er nicht verbunden ist. |
Konfigurationsparameter
Query Microservice enthält eine Datei application.properties, die sich unter dem Verzeichnis config befindet, nachdem Sie die bereitgestellte TAR- oder ZIP-Datei extrahiert haben. Wenn Sie nicht die Standardwerte verwenden, werden die Konfigurationsparameter für Query Microservice unten aufgelistet und müssen vor Ausführung des Diensts konfiguriert werden:
Parameter | Beschreibung | Standardwert |
---|
queryserviceMinthread | Mindestanzahl von Threads, die der Client (Query Microservice) zum Verarbeiten eingehender Nachrichten verwendet. Wenn alle Threads durch die Verarbeitung von Nachrichten ausgelastet sind, werden weitere eingehende Nachrichten bis zu der Anzahl, die durch queryservice.queuesize angegeben ist, in die Warteschlange gestellt. Sobald die Warteschlange voll ist, werden zusätzliche Threads bis zu dem für queryservice.maxthread definierten Wert aufgenommen. | 4 |
queryserviceMaxthread | Maximale Anzahl von Threads, die der Client (Query Microservice) zum Verarbeiten eingehender Nachrichten verwendet. | 10 |
queryserviceQueuesize | QueueSize ist die Anzahl der eingehenden Nachrichten, die die Warteschlange aufnehmen kann, bevor weitere Threads dem Thread-Pool hinzugefügt werden. Wenn die maximale Anzahl von Threads bereits erreicht ist, werden neu eingehende Nachrichten abgelehnt. | 1000 |
queryserviceSerialisationPageSize | Größe für den Datenbank-Cursor-Abruf. Standardmäßig ist das Paging deaktiviert. Die empfohlene Größe ist 5000. | 0 |
thingworxUri | Host-URI und -Port des ThingWorx Servers. | ws://localhost:8080/Thingworx/WS |
qmsThingworxAppKey | Der Anwendungsschlüssel für die Herstellung einer Verbindung zum ThingWorx Server. Er muss vor der Ausführung des Microservice in ThingWorx erstellt werden. | |
Sicherheitsparameter
Parameter | Beschreibung |
---|
default-encryption-key-length | Die für Verschlüsselungsschlüssel verwendete Standardlänge. |
password-file-path | Der absolute Pfad zur Keystore-Passwortdatei für Query Microservice. |
password-file-name | Der Name der Schlüsselspeicher-Passwortdatei. |
path | Der absolute Pfad zur Keystore-Datei für Query Microservice. |
name | Der Name der Schlüsselspeicherdatei. |