Distribuzione del server per prestazioni elevate

0

Ho sviluppato un'applicazione Socket su TCP in .NET C #, che consente a molti client di inviare file gli uni dagli altri tramite un VPS che sto usando. La maggior parte dei trasferimenti di file avverrà tra persone nella stessa regione, ad esempio, anche nello stesso quartiere.

Quindi, se 300 client sono connessi, alcuni di questi saranno collegati da Europa, altri da, diciamo Stati Uniti, ecc ... Coloro che sono collegati dall'Europa non cercheranno mai di inviare file a quelli negli Stati Uniti.

Ciò che più conta per me è la scalabilità (si spera, avrò migliaia di utenti che si connettono contemporaneamente) e bassa latenza (reattività) quando si tratta di caricare / scaricare le velocità di trasferimento.

Qualcosa mi dice che se voglio che i file (fino a 2MB) vengano trasferiti rapidamente tra i miei clienti, dovrei ottenere un VPS in Europa, USA, Asia ecc. In questo modo, gli utenti otterranno velocità di trasferimento più elevate, e nel caso in cui uno dei server fallisce, sarà in grado di utilizzare l'altro (i). Inoltre, dovrei avere un database separato per le informazioni utente / statistiche a cui tutti i server si connettono quando necessario.

La mia domanda è, qual è la pratica comune per tale utilizzo e requisiti? Ogni tipo di indizio / terminologia che dovrei iniziare a familiarizzare sarà molto apprezzato. Grazie

    
posta Daniel 19.03.2013 - 12:27
fonte

1 risposta

0

La migliore pratica in un tale problema sarebbe quella di cambiare il tuo server solo per me meta-server, mentre il trasferimento dei file sarebbe peer-to-peer. Questo è ad esempio come funziona Skype.

Se non si desidera riscrivere tutta la logica dell'applicazione, è possibile utilizzare CDN. Basta tenere a mente che molti CDN sono progettati per contenuti statici. Assicurati di usarne uno, che funziona effettivamente per contenuti dinamici. Amazon CloudFront è un esempio, CloudFlare CDN è un altro. In questo caso, sia il caricamento sia il download dei client andrebbero ai rispettivi endpoint CDN (i più vicini alla loro posizione Internet), quindi attraverso la rete del provider CDN interno al server. In combinazione con un server scalabile automaticamente otterrai una scalabilità praticamente illimitata. Comunque sarà piuttosto costoso.

    
risposta data 19.03.2013 - 12:30
fonte

Leggi altre domande sui tag