Il miglior approccio per il messaggio quasi in tempo reale che passa dal server al client attraverso il router?

1

Sto sviluppando un'applicazione che deve essere eseguita su un massimo di migliaia di sistemi client che controllo (Linux) e che sono connessi a dispositivi Internet NAT pubblici. Ciascuno di questi dispositivi client deve ricevere messaggi non frequenti da un servizio cloud (1 o 2 al giorno) e, in media, deve ricevere questi messaggi in meno di 500 ms.

Ho il pieno controllo dei sistemi sia server che client per installare qualsiasi sistema operativo, linguaggi di programmazione o applicazioni. Tuttavia non avrò il controllo del router e della rete in mezzo. Altrimenti, potrei semplicemente chiamare un servizio web in esecuzione sui dispositivi "client" per inviare i messaggi.

Ho preso in considerazione l'esecuzione di Node.js sul servizio cloud, con i socket javascript sul client mantenuti aperti 24x7. Da quello che mi è stato detto, Node può gestire decine di migliaia di connessioni aperte, rendendolo un server ideale per questo.

I dispositivi NAT interrompono le connessioni aperte, quindi è possibile inviare dati permanenti manichino. E se la connessione viene interrotta, il client si limita a rinnovare il socket.

Altre opzioni includono Erlang o anche un semplice socket c con polling lungo.

Tuttavia sto attraversando un momento difficile per cercare questo problema per altri approcci.

Quale sarebbe l'approccio migliore? Non ci sono restrizioni sulla lingua o programmazione.

    
posta user1724280 08.07.2013 - 02:29
fonte

1 risposta

1

Un modo per gestirlo è utilizzare PubNub . È un servizio a pagamento, ma ne vale la pena dato che sostanzialmente gestisce l'intera porzione di messaggistica di ciò che descrivi e non avrebbe problemi di scalabilità.

È molto facile da implementare. I client si connetterebbero al servizio utilizzando il polling lungo (se si esegue il rollover) o una delle loro librerie client. I messaggi vengono passati come JSON.

Ho usato PubNub per un progetto software commerciale, e funziona molto bene.

    
risposta data 08.07.2013 - 08:50
fonte

Leggi altre domande sui tag