Quali sistemi operativi stai considerando per questo?
Se si utilizza un sistema operativo Windows e si utilizza qualcosa più tardi di Vista, non si dovrebbe avere un problema con molte migliaia di connessioni su una singola macchina. Ho eseguito test (qui: http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html) con una macchina Windows Server 2003 di bassa specifica e ho ottenuto facilmente più di 70.000 connessioni TCP attive. Alcuni dei limiti di risorse che influiscono sul numero di connessioni possibili sono stati notevolmente migliorati su Vista (vedi qui: http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html) e quindi potresti probabilmente raggiungere il tuo obiettivo con un piccolo gruppo di macchine. Non so di cosa avresti bisogno di fronte a quelli per instradare le connessioni.
Windows fornisce una funzionalità chiamata I/O Completion Ports (vedere: http://msdn.microsoft.com/en-us/magazine/cc302334.aspx) che consente di eseguire il servizio di molte migliaia di connessioni simultanee con pochi thread (stavo facendo dei test ieri con 5000 connessioni che saturano un collegamento a un server con 2 discussioni per elaborare l'I/O ...). Pertanto l'architettura di base è molto scalabile.
Se si desidera eseguire alcuni test poi ho alcuni strumenti disponibili gratuitamente sul mio blog che consentono di thrash un server semplice eco con molte migliaia di connessioni (1) e (2) e un codice gratuito che è possibile utilizzare per iniziare (3)
La seconda parte della tua domanda, dai tuoi commenti, è più complicata. Se l'indirizzo IP del client continua a cambiare e non c'è nulla tra te e loro che sta fornendo NAT per darti un indirizzo IP coerente, le loro connessioni saranno, senza dubbio, terminate e dovranno essere ristabilite. Se i client rilevano che questa connessione si interrompe quando il loro indirizzo IP cambia, allora possono riconnettersi al server, se non possono, allora suggerirei che i client devono eseguire il polling del server ogni tanto in modo che possano rilevare la perdita della connessione e ricollegare. Non c'è nulla che il server possa fare qui in quanto non può prevedere il nuovo indirizzo IP e scoprirà che la vecchia connessione non è riuscita quando tenta di inviare dati.
E ricordate, i vostri problemi sono solo all'inizio, una volta che si ottiene il vostro sistema di scalare a questo livello ...
fonte
2010-05-14 05:48:24
Deve essere TCP? Se il traffico è scarso, il costo del tracciamento di tutte le connessioni potrebbe essere irragionevolmente alto. E potresti approfondire un po 'cosa farà il server? Milioni di connessioni attive non utilizzate attivamente mi sembrano sospette. – VladV