Nel mio server, ho 1000 thread che ascoltano 1000 socket UDP diversi. Quando un thread riceve un pacchetto, mette i pacchetti UDP su una coda thread-safe. Il codice è come questo.
while(true)
{
......
socket.receive(packet);
packetQueue.add(packet);
.....
}
In un secondo in media un thread (socket UDP) riceve 50 pacchetti che in media il server riceve
1000 * 50 = 50K
Pacchetti UDP. Il server funziona più o meno bene.
Ma ora voglio cambiare il design un po 'adesso. Ora sto pensando di usare 1 thread che ascolterà su 1 socket e dopo aver ricevuto quei pacchetti quel thread metterà quel pacchetto nella coda come prima.
Quindi ora in media 50K pacchetti UDP arriveranno al server su quella porta.
Questa nuova architettura sarà in grado di gestire questo carico? Dal punto di vista della rete Java, fa alcuna differenza se tutti i pacchetti arrivano a una porta oa porte diverse?