È questo il modo corretto di pensare alla relazione socket client / server?

0

Sto progettando un'applicazione distribuita, per ora molto semplice. L'idea è che una volta che l'applicazione è attiva su tutte le macchine (circa 5 vms), puoi iniziare una grep su tutti i file di log da tutte le macchine da qualsiasi macchina.

Generalmente, i passaggi sarebbero:

  • Avvia l'applicazione su tutte le macchine
  • Tutte le applicazioni si fermano in una condizione di attesa di Press [Enter] to continue...
  • Una volta premuto [Enter] , quella particolare macchina è l'emittente di comandi, per così dire
  • Digiti il modello desiderato e invia i comandi a tutte le macchine, tirando verso il basso i risultati

In un primo momento, il mio piano era di fare il setup delle connessioni dopo che l'utente ha premuto [Enter] , impostando una connessione client per l'host che ha emesso i comandi e server connessioni sul resto; ma questo sembra non molto scalabile. La mia idea ora è quella di iniziare tutte le connessioni dall'inizio, sia una client che una server , e solo sempre il polling server per le query in entrata.

Questa pratica standard o dovrei guardare un modo diverso per monitorare / configurare le connessioni? Esistono principi di progettazione di base o best practice per la creazione di connessioni distribuite?

    
posta ctote 08.09.2015 - 17:44
fonte

1 risposta

1

Avere un numero di connessioni client a numerosi nodi remoti non è così intenso, quindi non dovrebbe essere un problema a tale riguardo. Per la velocità dati che ci si può aspettare da un terminale, è possibile considerare l'I / O non bloccante con callback e un singolo server con un thread per client o un pool di thread per elaborare i messaggi di risposta. Questo dovrebbe ridursi fino a quando non sarai elaborato con le tue connessioni.

Potresti quindi configurare le tue connessioni in anticipo o secondo necessità. Lavorare su una base necessaria eviterà un successo all'avvio se non ci sono requisiti di tempo stretti per ottenere l'elenco dei file all'incirca nello stesso momento. Se vuoi maggiori dettagli, fornisci uno schema e possiamo discutere.

    
risposta data 08.09.2015 - 18:45
fonte