Olá a todos, tenho um problema sério aqui, e queria a opinião da galera aqui. Normalmente as pessoas dão ótimas opiniões, e decisões de arquitetura tem sérias conseqüências no projeto, então; desde já agradeço a ajuda. 
Tenho o seguinte cenário:
Minha aplicação possui duas entidades principais: uma Central de Processamentos de Dados (CPD) e um Produtor de Dados (PD).
As duas são aplicações distintas estão a grosso modo em Java (porque o produtor de dados possui boa parte implementada em C).
Bem, a questão principal é a seguinte:
A aplicação CPD, possui um ou mais Sockets que colhem dados da PD; onde esses dados podem ser dados propriamente ditos, vídeos e audios. O x da questão é: eu preciso de uma solução tal que na CPD, eu possa, aumentando o número de máquinas, conseguir aumentar o números de PD’s que podem aumentar consideravelmente de forma, digamos, inesperada.
Imaginem que eu posso ter 3 PD’sem um determinado momento, e em um outro possuir 20 PD’s. Com esse aumento de dispositivos, a quantidade de informações que vou receber na minha CPD é muito grande, ela poderá não suportar, e vai chegar num ponto onde uma máquina apenas não conseguirá processar a quantidade elevada de informações; solução: dividir em mais máquinas. Só que estou meio sem rumos sobre a como fazer isso no Java.
Desde já agradeço a ajuda de vocês,
até 