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
Query Microservice ist im PTC Support-Portal verfügbar.
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:
* 
Dieser Prozess setzt voraus, dass ThingWorx installiert ist. Lesen Sie bei Bedarf ThingWorx installieren.
1. Sie können Query Microservice aus dem PTC Support-Portal beziehen.
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"
}
}
}
7. Laden Sie das Sicherheitsmanagement-Befehlszeilentool von der PTC Support Website herunter.
* 
Weitere Informationen über das Tool finden Sie unter Sicherheitsmanagement-Tool.
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.