La computación distribuida es un campo de la informática que estudia los sistemas distribuidos. Un sistema distribuido es un sistema cuyos componentes están ubicados en diferentes computadoras en red , que se comunican y coordinan sus acciones pasándose mensajes entre sí desde cualquier sistema. [1] Los componentes interactúan entre sí para lograr un objetivo común. Tres características importantes de los sistemas distribuidos son: concurrencia de componentes, falta de un reloj global y falla independiente de componentes. [1] Se trata de un desafío central que, cuando fallan los componentes de un sistema, no implica que todo el sistema falle. [2]Los ejemplos de sistemas distribuidos varían desde sistemas basados en SOA hasta juegos en línea multijugador masivo y aplicaciones peer-to-peer .
Un programa de computadora que se ejecuta dentro de un sistema distribuido se denomina programa distribuido (y la programación distribuida es el proceso de escribir dichos programas). [3] Hay muchos tipos diferentes de implementaciones para el mecanismo de paso de mensajes, incluyendo HTTP puro, conectores tipo RPC y colas de mensajes . [4]
La computación distribuida también se refiere al uso de sistemas distribuidos para resolver problemas computacionales. En la computación distribuida , un problema se divide en muchas tareas, cada una de las cuales es resuelta por una o más computadoras, [5] que se comunican entre sí a través del paso de mensajes. [6]
La palabra distribuida en términos como "sistema distribuido", "programación distribuida" y " algoritmo distribuido " se refería originalmente a las redes de computadoras donde las computadoras individuales se distribuían físicamente dentro de un área geográfica. [7] Los términos se utilizan hoy en día en un sentido mucho más amplio, incluso refiriéndose a procesos autónomos que se ejecutan en la misma computadora física e interactúan entre sí mediante el paso de mensajes. [6]
Si bien no existe una definición única de un sistema distribuido, [8] las siguientes propiedades definitorias se utilizan comúnmente como:
Un sistema distribuido puede tener un objetivo común, como resolver un gran problema computacional; [11] el usuario entonces percibe la colección de procesadores autónomos como una unidad. Alternativamente, cada computadora puede tener su propio usuario con necesidades individuales, y el propósito del sistema distribuido es coordinar el uso de recursos compartidos o proporcionar servicios de comunicación a los usuarios. [12]