O que é programação distribuída?
A programação distribuída é uma forma de programação paralela ou computação paralela. A programação paralela envolve computadores e unidades de computação dentro de computadores trabalhando simultaneamente em um problema específico, como prever o tempo de amanhã. As unidades de computação podem estar muito próximas e coordenadas ou podem ser localizadas separadamente. Quando as unidades de computação estão separadas, isso é chamado de programação distribuída. Nesse cenário, muitas vezes as unidades de computação diferem umas das outras e a configuração do sistema operacional e da rede também difere, tornando a programação da atividade de computação particularmente desafiadora.
Ao resolver um problema de maneira distribuída, o programa precisa ser dividido para que partes do programa possam ser executadas nas diferentes unidades de computação; essas partes são freqüentemente chamadas de "processos". Os processos são executados simultaneamente, mas precisam comunicar entradas e resultados entre si. Se os processos estiverem sendo executados em hardware diferente, como uma parte executada na Intel e outra executada no SUN, os programas deverão ser compilados e otimizados de forma diferente.
Uma maneira de resolver um problema suficientemente difícil é dividir as partes de entrada e fazer com que as diferentes unidades de computação trabalhem nas diferentes partes usando o mesmo algoritmo, o conjunto de regras ou etapas para a solução de problemas. Por exemplo, para decifrar um genoma de 10.000 pares, os primeiros 1.000 pares podem ser atribuídos à primeira unidade de computação, os segundos 1.000 pares atribuídos à segunda unidade de computação e assim por diante, todos usando o mesmo algoritmo. Com a programação distribuída, uma vantagem é que as diferentes unidades de computação podem executar algoritmos diferentes para resolver o mesmo problema, levando a uma solução significativamente melhor. É como resolver um quebra-cabeça com algumas pessoas montando a borda, enquanto outras montam peças de uma cor específica.
A coordenação dos processos de computação distribuída pode ser uma tarefa particularmente difícil. Algumas unidades de computação podem falhar ou podem ser interrompidas para lidar com outros trabalhos. Mensagens que contenham as entradas ou os resultados da computação podem não atingir seus destinos. Se os programas forem gravados de maneira ingênua, a perda de uma unidade de computação ou de algumas mensagens poderá causar a interrupção de todo o conjunto de computadores.
Na programação distribuída, um processo pode ser o processo de controle, essencialmente fazendo o trabalho pelos outros processos, ou todos os processos podem funcionar de maneira ponto a ponto, sem que o processo seja o "mestre". Alguns exemplos de problemas tentados com a programação distribuída incluem a análise de dados geológicos para recursos como petróleo, modelagem de proteínas e moléculas biológicas, quebra de mensagens codificadas e simulações militares. O projeto SETI para procurar vida extraterrestre inteligente a partir das mensagens de rádio recebidas pela Terra é talvez um dos exemplos mais conhecidos.