ThingWorx a disponibilità elevata > Gestione delle estensioni di ThingWorx in ThingWorx a disponibilità elevata
Gestione delle estensioni di ThingWorx in ThingWorx a disponibilità elevata
In una configurazione a disponibilità elevata di ThingWorx le estensioni ThingWorx vengono memorizzate nel database e nella cache nel file system locale. Ciò garantisce che un nuovo leader ThingWorx possa riprendere le operazioni utilizzando le estensioni più recenti memorizzate nel database.
Durante l'avvio, il leader ThingWorx controlla il database per verificare la presenza di aggiornamenti alle estensioni e li applica in locale. Se esiste una discrepanza tra le estensioni nel database e quelle nella directory ThingworxStorage/Extensions locale, ThingWorx considera la versione del database come più recente e la versione nella directory ThingworxStorage/Extensions locale come obsoleta.
Processo di importazione delle estensioni
Quando vengono importate le estensioni, il sistema esegue le operazioni descritte di seguito.
1. Esegue un checksum nel file zip dell'estensione e lo salva nella directory ThingworxStorage/extensions/<nome estensione> come file <nome estensione>.chk file.
2. Decomprime il file zip nella directory ThingworxStorage/extensions/<nome estensione>.
3. Crea, distribuisce e rende persistente un'entità ExtensionPackage (e qualsiasi altra entità) nel database.
4. Rende persistente il file zip e il checksum nel database.
Se durante questi passi si verifica un errore, il sistema tenta di uscire dall'importazione. Il file zip viene mantenuto per ultimo in modo che, se non si riesce a distribuire l'estensione, l'estensione non viene distribuita nel database per essere prelevata dagli altri nodi di standby e questa situazione genera errore.
Processo di analisi delle estensioni del leader ThingWorx
Quando viene avviato un leader ThingWorx, per ciascuna estensione vengono eseguiti i passi descritti di seguito.
1. La distribuzione dell'estensione viene annullata.
2. Il rispettivo valore di checksum viene letto dal file di checksum denominato ThingworxStorage/extensions/<nome estensione>/<nome estensione>.chk.
3. Il valore di checksum dell'estensione viene letto dal livello di persistenza.
4. Questi due valori di checksum vengono confrontati.
a. Se i valori di checksum sono uguali
a. ThingWorx considera il database e le estensioni locali come corrispondenti
b. Non viene apportata alcuna modifica.
b. Se i valori di checksum non corrispondono
a. La copia del file zip dell'estensione viene letta dal livello di persistenza.
b. Viene estratta in una directory temporanea, ad esempio ThingworxStorage/extensions/temp/<nome estensione><casuale>
c. La versione precedente dell'estensione viene eliminata da ThingworxStorage/extensions/<nome estensione>
d. La copia del file zip estratto viene copiata nella directory dell'estensione precedente ThingworxStorage/extensions/<nome estensione>
e. Viene creato un nuovo file di checksum nella directory dell'estensione ThingworxStorage/extensions/<nome estensione>/<nome estensione>.chk
f. L'estensione viene distribuita.
Se durante uno dei passi precedenti si verifica un errore, il sistema tenta di eseguire il cleanup del contenuto. Se non è possibile sostituire la copia precedente dell'estensione con la copia dal livello di persistenza, viene caricata la copia precedente.
Processo di rimozione dell'estensione
Quando le estensioni vengono eliminate, si verifica quanto descritto di seguito.
1. La distribuzione dell'estensione viene annullata.
2. Il file zip viene eliminato dal database.
3. L'entità ExtensionPackage viene eliminata dal database.
4. La directory ThingworxStorage/extensions/<nome estensione> viene eliminata, incluso il checksum.