¿Qué es la programación distribuida?
La programación distribuida es una forma de programación paralela o computación paralela. La programación paralela involucra computadoras y unidades de computación dentro de las computadoras que trabajan simultáneamente en un problema particular, como predecir el clima del mañana. Las unidades informáticas pueden estar muy ubicadas y coordinadas o pueden ubicarse. Cuando las unidades informáticas están separadas, se llama programación distribuida. En tal escenario, muy a menudo las unidades informáticas difieren entre sí, y el sistema operativo y la configuración de la red también difieren, lo que hace que la programación de la actividad informática sea particularmente desafiante.
Al resolver un problema de manera distribuida, el programa debe dividirse para que las partes del programa puedan ejecutarse en las diferentes unidades de computación; Estas partes a menudo se llaman "procesos". Los procesos se ejecutan simultáneamente, pero necesitan comunicar entradas y resultados entre sí. Si los procesos se ejecutan en diferentes hardware, como una parte que se ejecuta en Intel y AnotSu ejecución en Sun, luego los programas deben ser compilados y optimizados de manera diferente.
Una forma de resolver un problema suficientemente difícil es romper las partes de entrada y hacer que las diferentes unidades informáticas funcionen en las diferentes partes utilizando el mismo algoritmo, el conjunto de reglas o pasos para la resolución de problemas. Por ejemplo, para descifrar un genoma de 10,000 pares, los primeros 1,000 pares podrían asignarse a la primera unidad de computación, los segundos 1,000 pares asignados a la segunda unidad informática, y así sucesivamente, todos utilizando el mismo algoritmo. Con la programación distribuida, una ventaja es que las diferentes unidades informáticas podrían ejecutar diferentes algoritmos para resolver el mismo problema, lo que lleva a una solución significativamente mejor. Esto es similar a resolver un rompecabezas con algunas personas uniendo el borde, mientras que otras juntan piezas de un color particular.
Coordinación de la computación distribuidaLos procesos pueden ser una tarea particularmente difícil. Algunas unidades informáticas pueden fallar o pueden interrumpirse para manejar otro trabajo. Los mensajes que contienen las entradas o los resultados del cálculo pueden no alcanzar sus destinos. Si los programas se escriben de manera ingenua, entonces la pérdida de una unidad informática o algunos mensajes puede hacer que todo el conjunto de computadoras se cuelgue.
En la programación distribuida, un proceso podría ser el proceso de control, esencialmente el trabajo realizado por los otros procesos, o todos los procesos podrían funcionar de manera igual, sin que el "maestro" sea el "maestro". Algunos ejemplos de problemas intentados con la programación distribuida incluyen el análisis de datos geológicos para recursos como el petróleo, el modelado de proteínas y moléculas biológicas, el agrietamiento de mensajes codificados y simulaciones militares. El proyecto SETI para buscar una vida extraterrestre inteligente de los mensajes de radio recibidos por la Tierra es quizás uno de los ejemplos más conocidos.