Un cálculo distribuido , o distribuido o incluso compartido , es un cálculo o un procesamiento distribuido en varios microprocesadores y, más generalmente, en varias unidades informáticas centrales , y luego se habla de una arquitectura distribuida o de un sistema distribuido. La computación distribuida se realiza a menudo en clústeres de computación especializados, pero también se puede realizar en estaciones de computación de múltiples núcleos individuales . La distribución de un cálculo es un campo de investigación en ciencias matemáticas e informáticas. En particular, implica la noción de cálculo paralelo .
La computación distribuida es un concepto que apareció en la década de 1970 , cuando la red francesa Cyclades , impulsada por la CII y su Arquitectura de Sistema Distribuido , basada en el Datagrama , intentó poner en común los recursos informáticos de centros universitarios y grandes empresas en fuerte crecimiento como EDF o la Comisión de Energía Atómica . En los Estados Unidos, IBM y Digital Equipment Corporation están creando las arquitecturas SNA y DECnet , aprovechando la digitalización de la red telefónica de AT&T (consulte Red telefónica conmutada ) y sus conexiones dedicadas de velocidad media. A partir de ahí, el diseño de un gran sistema se ve desafiado por miniordenadores en red, como Mitra 15 y Mini 6 , que complementan y modifican su arquitectura.
Un sistema informático distribuido es una colección de estaciones de trabajo autónomas u ordenadores que están conectados mediante una red de comunicación . Cada estación ejecuta componentes, por ejemplo secuencias de cálculos , resultantes del desglose de un proyecto de cálculo global, y utiliza un middleware , que se encarga de activar los componentes y coordinar sus actividades para que un usuario perciba el sistema como un solo sistema integrado.
Una propiedad importante de los sistemas distribuidos es que la distribución generalmente está oculta al usuario y a los programadores de aplicaciones. Prefieren ver el conjunto como un solo sistema, lo que oculta la complejidad de la distribución tanto como sea posible y aumenta la transparencia del sistema distribuido. Esto permite que las aplicaciones se desarrollen tanto como sea posible de la misma manera que los sistemas centralizados .
Un sistema distribuido generalmente se puede separar en varios componentes completamente autónomos. No existe un componente maestro que gestione a los demás y, por tanto, cada uno es responsable de su propio funcionamiento. Esto permite, en particular, tener heterogeneidad en la tecnología utilizada para cada componente, que se puede escribir en diferentes lenguajes de programación ( Java , Cobol , C ++ , etc.) y ejecutar en diferentes sistemas operativos ( Mac OS X , Linux , Windows , etc.). La autonomía de los componentes hace que los sistemas se ejecuten simultáneamente ( programación concurrente ). Además, a diferencia de los sistemas centralizados, los sistemas distribuidos tienen varios puntos de falla (problema de componentes, red , tráfico, etc.).
La necesidad de utilizar un sistema distribuido a menudo se deriva de requisitos no funcionales como:
El proyecto "pionero" en el uso de la informática distribuida es SETI @ home , desarrollado por la Universidad de Berkeley , California ( Estados Unidos ). Este proyecto, desarrollado en colaboración con el programa SETI ( Búsqueda de Inteligencia Extraterrestre ), tiene como objetivo detectar un posible rastro de actividad extraterrestre en el espacio .
Sin embargo, la creciente necesidad de poder informático en la investigación médica y otros campos es sobre todo lo que ha impulsado el uso cada vez mayor de esta tecnología. Dado que el costo de las supercomputadoras es demasiado elevado, se prevé utilizar la potencia informática "disponible" de las computadoras en reposo (o infrautilizadas). El proceso a menudo implica la instalación de software que descarga datos sin procesar de un servidor, los vuelve a trabajar (los "procesa") de forma transparente para el usuario (utilizando solo potencia no informática utilizada por otras aplicaciones) y luego envía los resultados a los servidores.
Ciertos sistemas informáticos distribuidos están abiertos al público a través de Internet (cf. Algunos proyectos informáticos compartidos ) y atraen fácilmente a los usuarios. Podemos ver la evolución del proyecto desde sus inicios, la clasificación de usuarios, el tiempo de cómputo realizado por los propietarios de una determinada arquitectura, o por un determinado sistema operativo ( Linux , Windows , Macintosh , etc.). Muchos de estos proyectos utilizan la plataforma gratuita BOINC ( Berkeley Open Infrastructure for Network Computing ), una evolución del SETI @ home original.
La computación distribuida es también un tema de investigación activo, con abundante literatura. Las conferencias más conocidas sobre computación distribuida son “ La Conferencia Internacional sobre Redes y Sistemas Confiables ” y el “ Simposio ACM sobre Principios de Computación Distribuida ”. También está el Journal of Parallel and Distributed Computing .
De esta manera, una gran parte del genoma humano pudo ser descifrado por los usuarios de Internet del programa AFM “ Décrypthon ” en colaboración con el CNRS e IBM. También se están llevando a cabo proyectos, centralizados por World Community Grid, destinados a analizar proteínas y desarrollar soluciones contra el sida.
La gran mayoría de proyectos de este tipo son realizados por universidades y / o profesores muy serios que difunden sus resultados. El Decrypthon, por ejemplo, contribuyó a la decodificación del genoma humano que ahora está disponible en Internet sin una patente pendiente.