Sincronizzazione dei processi su Internet

1

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.

    
posta Parv Sharma 02.03.2016 - 08:18
fonte

1 risposta

1

q1. How can I ensure the cloud server knows which state the hub is in before issuing commands?

Poiché non vuoi eseguire il blocco sulla rete, invece, emetti un comando più grande, che include una condizione di qualifica, che il dispositivo dovrebbe testare e quindi eseguirà solo il resto del comando se la condizione è vera .

q2. If we can allow the cloud server to issue arbitrary commands without knowing the current state of the HUB, then what should be the logic of conflict resolution?

In generale, è auspicabile assegnare al dispositivo un obiettivo di livello superiore anziché un singolo comando. Ad esempio, se si tratta di un riscaldatore, sarebbe meglio fornire al dispositivo un setpoint di temperatura anziché un comando "on". Idealmente, dovresti assegnare al dispositivo una serie di set point per diverse ore del giorno e in questo modo il dispositivo potrebbe funzionare per un po 'se la rete si interrompe. È possibile ri-emettere la serie ogni volta che si dispone dell'accesso alla rete e si desidera cambiarla.

    
risposta data 02.03.2016 - 16:53
fonte

Leggi altre domande sui tag