Ho difficoltà a pianificare la struttura del mio flusso di lavoro lato server e le tecnologie che dovrei usare.
La struttura di base e le attività sono:
Ora,aspettidaconsiderare:
1.ilserverascoltacontemporaneamentepiù"cartelle" nel DB.
-
il server deve elaborare molte modifiche al db - circa 1000 al secondo per tutte le cartelle nel DB (non per ciascuna cartella, in totale). Le modifiche possono venire da molti utenti, il server non ha bisogno di tracciare (per ora) da dove proviene ogni cambiamento.
-
Il processo per ottenere i dati relativi al cambiamento può essere costoso - comporta la ricerca di file di grandi dimensioni per una determinata espressione al loro interno. Tuttavia, i dati che vengono memorizzati nell'Ogg per quanto riguarda il cambiamento non sono così grandi. La dimensione della modifica Obj non è grande - JSON Obj con circa 20 linee corte ciascuna, in alto.
-
L'ordine di creare la modifica Obj e inviarlo all'interfaccia utente può essere qualsiasi ordine, perché un indicatore orario è parte dei dati memorizzati nell'Ogg, e farò in modo che l'UI ordini tutto (o forse dovrei farlo sul lato server? dove vorresti mettere questo compito?). Perciò sto facendo le modifiche al caricamento e inviando l'Obj ai processi dell'interfaccia utente asincrona.
-
L'interfaccia utente e le sue comunicazioni con il server nodo devono essere compatibili con Microsoft Explorer (la versione può essere determinata da me). Le librerie esterne possono essere utilizzate per raggiungere questo, se necessario. Il server riceverà messaggi dall'interfaccia utente, come "start" e "stop", non continua quelli.
Quello che voglio evitare è:
-
rallentamento del server dovuto all'ascolto di più cartelle e alla gestione di così tante modifiche contemporaneamente.
-
intasare la connessione tra il server e l'interfaccia utente inviando così tanti cambiamenti Objs.
Quando ho cercato informazioni su questo problema, ho trovato molte tecnologie utili:
-
Librerie Websocket: ws, socket.io, ecc.
-
Cluster di nodi.
-
Emittore di eventi del server.
-
Pacchetti e librerie di nodi per la funzionalità "ascolta" - fs, chokidar, ecc.
Quindi mi stavo chiedendo:
Qual è la struttura e le tecnologie migliori da utilizzare per ciascuna parte del flusso di lavoro in questo caso?
Dovrei usare websockets? VEDERE? o semplice API REST HTTP (con res.write in express)?
I Nodi Cluster possono aiutare l'ascolto parallelo e il recupero dei dati ogni volta che la cartella cambia?
Qual è il modo più efficiente per gestire così tante modifiche e inviarle all'interfaccia utente?
Sto cercando consigli su ogni passaggio, ad esempio:
Passaggio 1: l'ascolto di più cartelle viene eseguito in modo più efficiente utilizzando la tecnologia X, perché ...
Passaggio 2: ....
Grazie mille!
Yishai