Al lavoro, stiamo discutendo di due modelli di sistema:
Il primo con un server centralizzato:
Secondounosenzaunservercentralizzato:
L'obiettivo del sistema è di consentire ai client di accedere alle informazioni, tramite browser, servite da alcuni Raspberry-pis remoti che saranno connessi con diversi tipi di sensori.
Come mostrano le immagini, nel primo caso ci sarà un server che lavora come middleware (Node + Express, ad esempio) per gestire le richieste dei clienti e ottenere / settare correttamente le informazioni dai sensori (comunicazione socket) che desiderano ispezionare . Nel secondo caso, anche i raspberry-pis funzioneranno come server Web, consentendo ai client di connettersi direttamente ai sensori che desiderano.
Quindi ecco quello che penso : il primo caso è il modo predefinito di come i sistemi web sono generalmente costruiti. Il secondo caso, dal mio punto di vista, è un modo strano per rendere questo processo di comunicazione molto problematico.
Ciò che voglio con questa domanda è di sollevare alcuni aspetti positivi e negativi da ciascun caso.
Ecco cosa ho già sollevato, per favore correggimi se ho detto qualcosa di sbagliato.
- Deploy . Nel primo caso è facile dare manutenzione / implementazione al codice del server centrale, poiché c'è solo un posto per farlo, nel secondo caso, dovrei cambiare ogni raspberry-pi nella rete. Per evitare questo difficile compito, potrei creare una distribuzione automatica che farebbe questo per me per ogni raspberry-pi. Al di là del duro lavoro, ci sarebbero ulteriori problemi nel fare questo?
- Monitoraggio . Nel primo caso, tenere traccia di raspberry-pis è facile dato che, per quanto si collegano, riempirebbero un elenco di dispositivi connessi, allora i clienti sarebbero in grado di vedere quale sensore si desidera ispezionare in questa lista. Nel secondo caso, sarebbe più complesso da trovare tutti i lamponi perché non c'è un posto dove archiviare un elenco di quelli connessi. Tutti i lamponi dovranno avere una lista di tutti dispositivi collegati (molte informazioni ripetute) e questo elenco sempre necessario essere coerenti in tutti i dispositivi. I clienti devono essere in grado per connettersi ad altri Raspberry-pis semplicemente collegandoti ad uno solo. Per evitare CORS in questo caso, i lamponi devono intercomunicarsi. io Non so se questa intercomunicazione è bella, ma forse questo può essere più veloce del caso del server centralizzato, poiché le informazioni possono accedere direttamente: raspbarry-pi a raspberry-pi.
- Velocità . In teoria, la comunicazione diretta a lampone-pis nel secondo caso è più veloce del primo caso. Ma a causa dell'hardware limitazioni, penso che il secondo caso possa facilmente sovraccaricare qualsiasi raspberry-pi. L'applicazione potrebbe richiedere lo streaming di dati o un più veloce processo di invio del pacchetto.
- Autenticazione e sicurezza . Nel secondo caso, sarebbe un inferno. Diffondi i token, ad esempio, lungo tutta la necessità dei client di lampone-pis accedere sarebbe molto difficile da implementare.
(Per favore dimmi se non ero chiaro su nulla)