Sto provando a creare un hub IOT che può essere controllato localmente (Intranet) o da Internet. Il problema che sto affrontando è la sincronizzazione dello stato. I seguenti punti descrivono cosa succede nel mio server locale e nel cloud.
- Diciamo per un esempio sul mio mio connesso
- Il dispositivo è allo stato A.
- Server locale Mostra allo stato A
- Cloud Server lo mostra allo stato A
- Cloud Server richiede lo stato da modificare in B
- Stato del dispositivo ora è B
- Problema di rete
- Server locale Mostra allo stato B
- Cloud Server lo mostra allo stato A
- Problema di rete risolto
- Cloud Server vuole che sia allo stato C. Pensando che sia allo stato B ( che non è e questo è il problema da risolvere )
q1. Come posso garantire che il server cloud sappia in quale stato si trova l'hub prima di emettere i comandi?
- Ho cercato meccanismi di blocco (concorrenza pessimistica). ma dal momento che questo sta accadendo su una rete. Possono essere molto costosi.
q2. Se è possibile consentire al server cloud di emettere comandi arbitrari senza conoscere lo stato corrente dell'HUB. Allora quale dovrebbe essere la logica della risoluzione dei conflitti?
- Se vogliamo mantenere un semplice meccanismo di risoluzione dei conflitti del primo arrivato primo server, dovremo sincronizzare il tempo sui due server che di per sé è un problema.