<page>
    <title>Calcul distribué</title>
    <id>764</id>
    <revision>
      <id>31394485</id>
      <timestamp>2008-07-08T05:14:21Z</timestamp>
      <contributor>
        <username>TomoFR</username>
        <id>323597</id>
      </contributor>
      <minor />
      <comment>/* Projets */ à</comment>
      <text xml:space="preserve">Le '''calcul distribué''' ou '''réparti''', aussi connu sous le nom de '''système distribué''', consiste à répartir un calcul ou un système sur plusieurs [[ordinateur]]s distincts. Le calcul distribué est une forme de [[Calcul parallèle]], par contre il diffère des ''[[Grappe de serveurs|grappes de serveurs]]'' (''cluster computing''), en ce que les [[ordinateur]]s qui réalisent le calcul ne sont pas typiquement dédiés au calcul distribué et ne possèdent pas toujours les mêmes matériels et systèmes de fichiers, alors que les ''grappes'' (''clusters'') comprennent la plupart du temps du matériel spécifique et dédié à une tâche précise.

== Système distribué == 
[[Image:ModeldesystemeDistribue.JPG|thumb|Modèle d'un système distribué]]

Un système informatique distribué est une collection de postes ou calculateurs autonomes qui sont connectés à l'aide d'un réseau de communication. Chaque poste exécute des composantes, par exemple des séquences de calculs, issues du découpage d'un projet de calcul global, et utilise un [[intergiciel]], qui s'occupe d'activer les composantes et de coordonner leurs activités de telle sorte qu'un utilisateur perçoive le système comme un unique système intégré.&lt;ref&gt;W. Emmerich (2000). Engineering distributed objets. John Wiley &amp; Sons. Ltd.&lt;/ref&gt;

Une propriété importante des systèmes distribués est que la distribution est généralement cachée pour l’utilisateur et les programmeurs de l’application. Il préfère de voir le système comme un seul et unique système et ainsi cacher la complexité de la distribution le plus possible et augmenter la [[transparence (Informatique)|transparence]] du système distribué. Cela permet de développer le plus possible les applications de la même façon que les [[Serveur central|systèmes centralisés]].
 
Un système distribué est généralement séparable en plusieurs composantes entièrement autonomes. Il n’existe pas de composante maître qui gère les autres et chacune est donc responsable de son propre fonctionnement. Cela permet, entre autres, d’avoir une hétérogénéité dans la technologie utilisée pour chaque composante, ils peuvent être écrits dans différents [[langages de programmation]] (Java, Cobol, C++, etc.) et s'exécuter sur différents [[systèmes d'exploitation]] (Mac OS X, Linux, Windows, etc.). L’autonomie des composantes fait que les systèmes sont exécutés simultanément ([[programmation concurrente]]). De plus, contrairement au système centralisé, les systèmes distribués possèdent plusieurs points de défaillances (problème de composantes, réseau, trafics, etc.).

== Exigences des systèmes distribués ==

Le besoin d'utiliser un système distribué est souvent dérivé d'exigences non fonctionnelles soit : 

* ''Extensibilité'' (&quot;scalability&quot;) - les systèmes distribués permettent facilement une expansion si nécessaire.
* ''Ouverture'' - les composantes des systèmes distribués possèdent des interfaces bien définies ce qui leur permet d'être facilement extensibles et modifiables. Les [[Service Web|services web]] sont un exemple de système distribué qui possède une grande ouverture.
* ''Hétérogénéité'' – les composantes peuvent être écrites en différents langages sur différentes machines. Par exemple, les éléments d’un serveur peuvent être programmés en C++ et s'exécuter sous Unix, alors que le client peut être en Java et s'exécuter sous Windows.
* ''Accès aux ressources et partage'' -  les systèmes distribués fournissent un moyen de partager les ressources, c'est-à-dire à la fois le matériel, le logiciel et les données.
* ''Tolérance aux pannes'' -  Les systèmes distribués permettent d’être plus [[Tolérance aux pannes|tolérant aux pannes]] que les systèmes centralisés, car il permet de répliquer facilement les composantes.

== Projets ==

Le projet « pionnier », dans l'emploi du calcul distribué est le [[SETI@Home]], développé par l'[[Université de Berkeley]], en [[Californie]] ([[États-Unis]]). Ce projet, développé en collaboration avec le programme [[Search for Extraterrestrial Intelligence|SETI]] (''Search for Extraterrestrial Intelligence''), vise la détection d'une possible trace d'activité [[Vie extraterrestre|extraterrestre]] dans l'[[espace (cosmologie)|espace]].

Cependant, le besoin croissant de [[puissance de calcul]] informatique dans la recherche médicale et autres domaines est surtout ce qui a suscité l'emploi de plus en plus important de cette technologie. Le coût des [[supercalculateur]]s étant trop élevé, il est ainsi envisagé d'utiliser la puissance de calcul « disponible » d'ordinateurs au repos (ou sous-utilisés). Le procédé consiste souvent en l'installation d'un logiciel qui télécharge des données brutes à partir d'un serveur, les retravaille (les « traite ») de façon transparente pour l'utilisateur (en n'utilisant que la puissance de calcul non utilisée par les autres applications), puis renvoie les résultats aux serveurs. 

Certains systèmes de calcul distribué sont ouverts au public via internet (cf. [[#Quelques projets de calcul partagé|Quelques projets de calcul partagé]]) et attirent facilement les utilisateurs. On peut voir l'évolution du projet depuis ses débuts, le classement des utilisateurs, le temps de calcul réalisé par les possesseurs d'une architecture donnée, ou par tel ou tel système d'exploitation ([[Linux]], [[Microsoft Windows|Windows]], [[Macintosh]]...). Plusieurs de ces projets utilisent la plate-forme [[Logiciel libre|libre]] [[Berkeley Open Infrastructure for Network Computing|BOINC]] (''Berkeley Open Infrastructure for Network Computing''), une évolution du SETI@Home original.

Le calcul distribué est aussi un thème actif de recherche, avec une abondante littérature. Les plus connues des conférences sur le calcul distribué sont « The International Conference on Dependable Systems and Networks &lt;ref&gt;{{Lien web |url=http://www.dsn.org/ |titre=The International Conference on Dependable Systems and Networks |consulté le={{date|22|janvier|2008}} }}&lt;/ref&gt; » et « ACM Symposium on Principles of Distributed Computing &lt;ref&gt;{{Lien web |url=http://www.podc.org |titre=ACM Symposium on Principles of Distributed Computing |consulté le={{date|22|janvier|2008}} }}&lt;/ref&gt; ». Il existe également la revue « Journal of Parallel and Distributed Computing &lt;ref&gt;{{Lien web |url=http://www.academicpress.com/jpdc |titre=Journal of Parallel and Distributed Computing |consulté le={{date|22|janvier|2008}} }}&lt;/ref&gt; » .

Une part importante du génome humain a ainsi pu être décryptée par les internautes du programme « [[Decrypthon]] » de l'AFM &lt;ref&gt;{{Lien web |url=http://www.afm-france.org/ |titre=AFM France |consulté le={{date|22|janvier|2008}} }}&lt;/ref&gt; en collaboration avec le CNRS et IBM&lt;ref&gt;{{Lien web |url=http://www.decrypthon.fr/ewb_pages/p/partenaires_fondateurs.php |titre=Les trois partenaires fondateurs du Décrypthon |consulté le={{date|22|janvier|2008}} }}&lt;/ref&gt;. Des projets sont également en cours, centralisés par le [[World Community Grid]] visant à l'analyse des protéines et à l'élaboration de solutions contre le sida.

La grande majorité des projets de ce type sont fait par des universités et/ou des professeurs très sérieux diffusants leurs résultats, le Décrypthon a par exemple contribué au décodage du génome humain qui est maintenant disponible sur internet sans brevet déposé &lt;ref&gt;{{Lien web |url=http://www.ncbi.nlm.nih.gov/ |titre=National Center of Biotechnology Iinformation |consulté le={{date|22|janvier|2008}} }}&lt;/ref&gt;.

== Notes et références de l'article ==
&lt;references/&gt;

== Voir aussi ==
* Réseaux [[Peer-to-peer|P2P]]
* [[Intelligence distribuée]]
* [[Berkeley Open Infrastructure for Network Computing|BOINC]] ainsi que [[Liste des projets BOINC]]
* [[Ferme de rendu]]

===Quelques projets de calcul partagé===
* [[Distributed.net]] : héberge de nombreux projets, dont l'un est la recherche des [[Règle de Golomb|règles de Golomb]] optimales ;
* [[SETI@home]] :  recherche des signes d'une intelligence extra-terrestre ;
* [[GIMPS]] : rechercher les [[nombre premier de Mersenne|nombres premiers de Mersenne]] ;
* [[:en:Genome@Home]] : [[séquençage]] de [[protéine]]s dans le [[génome]] humain, ce projet est achevé puisque la fin du séquençage du génome humain a été annoncée le 14 avril 2003. L'université de Stanford l'a remplacé par [[Folding@Home]] ;
* [[Folding@Home]] : simulations de la manière dont les [[protéine]]s se replient et se déplient sur elles-mêmes ;
* [[Seventeen or Bust]] : Projet pour résoudre le [[Nombre de Sierpinski|problème de Sierpinski]] ;
* [[Africa@Home]] : Projet de lutte contre le [[Paludisme]] ;

== Ressources externes ==
* {{fr}} [http://fgouget.free.fr/distributed/ Le calcul distribué sur Internet]
* {{fr}} [http://systeme.developpez.com/cours/#C5 Cours sur les systèmes répartis]

{{Portail informatique}}

[[Catégorie:Calcul distribué|*]]
[[Catégorie:Calcul parallèle|*]]
[[Catégorie:Programmation concurrente]]

[[ca:Computació distribuïda]]
[[cs:Distribuovaný výpočet]]
[[da:Distribuerede beregninger]]
[[de:Verteiltes Rechnen]]
[[el:Κατανεμημένο σύστημα]]
[[en:Distributed computing]]
[[es:Computación distribuida]]
[[fa:محاسبات توزیع‌شده]]
[[fi:Hajautetut järjestelmät]]
[[he:חישוב מבוזר]]
[[hu:Elosztott számítások]]
[[id:Komputasi terdistribusi]]
[[it:Calcolo distribuito]]
[[ja:分散コンピューティング]]
[[ko:분산 컴퓨팅]]
[[lt:Paskirstytasis skaičiavimas]]
[[nl:Distributed computing]]
[[nn:Distribuert databehandling]]
[[pl:Obliczenia rozproszone]]
[[pt:Computação distribuída]]
[[ru:Распределённые вычисления]]
[[simple:Distributed computing]]
[[sv:Distributed computing]]
[[vi:Tính toán phân tán]]
[[zh:分布式计算]]</text>
    </revision>
  </page>