Qu'est-ce que l'informatique distribuée exactement? [fermé]

14

En quoi consiste exactement l'informatique distribuée et en quoi diffère-t-elle de l'informatique parallélisée / simultanée?

L'utilisation de mutex et de sémaphores dans plusieurs threads parallèles essayant de se synchroniser pour accéder à une ressource constitue-t-elle un problème dans le domaine de l'informatique distribuée?

rdasxy
la source

Réponses:

8

En quoi consiste exactement l'informatique distribuée?

L'informatique distribuée est une collection intrinsèquement parallèle d'éléments de traitement qui communiquent entre eux pour résoudre un ou plusieurs problèmes. Ces éléments de traitement sont suffisamment séparés les uns des autres pour qu'il ne soit pas pratique de construire entre eux un tissu de messagerie fiable et rapide, et il devient donc impossible qu'il y ait une connaissance globale de l'état du système. Les caractéristiques particulières de la messagerie avec les systèmes distribués sont que les messages vont se perdre, se faire brouillées, va se retardée - des solutions dans cet espace doivent tenir compte de cela. Ainsi, la programmation distribuée concerne le traitement des réseaux et des messages, le parallélisme et le manque d'informations globales.

La méthode la plus simple pour contourner les problèmes consiste à rendre un élément de traitement unique spécial, c'est-à-dire faisant autorité pour une information particulière. Ensuite, les autres éléments peuvent y faire référence à chaque fois, ou mettre en cache les informations et espérer qu'elles ne soient pas périmées (car elles ne peuvent pas compter être informées des changements). Il s'agit de l'architecture client / serveur classique.

L'informatique Internet est de l' informatique distribuée, mais sans la possibilité de contrôler ce que font réellement la plupart des nœuds distribués.

Est-ce que plusieurs threads parallèles essayant de se synchroniser pour accéder à une ressource constituent un problème dans le domaine de l'informatique distribuée?

Ils constituent une solution possible qui est utile lors de la construction du modèle client / serveur, mais au prix d'une augmentation potentiellement dramatique des conflits de ressources. Pour les lectures, ce n'est pas un gros problème (à condition qu'il y ait suffisamment de matériel) mais pour les écritures, c'est un gros problème en effet.

Ce que vous essayez d'éviter cependant, ce sont les verrous distribués. Le manque de messagerie fiable et opportune tue absolument les protocoles de décision distribués, à moins que vous n'utilisiez quelque chose comme le protocole Paxos , mais cela comporte de nombreuses mises en garde. Le problème fondamental de l'informatique distribuée est que "les mauvaises choses arrivent aux messages". Les protocoles de niveau relativement bas, comme TCP, atténuent les problèmes, mais vous pouvez toujours mal vous décoller.

Associés Donal
la source
6

Est-ce que plusieurs threads parallèles essayant de se synchroniser pour accéder à une ressource constituent un problème dans le domaine de l'informatique distribuée?

Ils le font si ces threads peuvent s'exécuter sur différentes machines, ou même s'ils s'exécutent sur la même machine mais dans des processus différents.

Caleb
la source
1
Les threads s'exécutant sur différentes machines ne peuvent pas être synchronisés de la manière traditionnelle des mutex et des sémaphores.
Jan Hudec
@JanHudec Je pense que c'était le point de la question de l'intervieweur. Sans instructions atomiques de test et de configuration ou de comparaison et d'échange ou mémoire partagée, l'informatique distribuée doit s'appuyer sur la messagerie entre les machines pour la synchronisation. Heureusement, il existe des algorithmes qui accomplissent cela.
Caleb
Je ne suis pas d'accord avec le "heureusement". Les algorithmes sont compliqués et ne tolèrent pas les pannes, ils doivent donc être évités.
Jan Hudec
5

L'informatique distribuée est un système informatique dont le traitement se produit sur différents ordinateurs (c'est-à-dire sur un système distribué). Les programmes individuels communiquent entre eux via une série de canaux de communication. Ces canaux sont généralement des connexions réseau (sockets TCP, par exemple), mais utilisent souvent d'autres protocoles et appareils de communication (tels que DeviceNET, BACNet, SECS-2, Modbus, etc.) ou même des protocoles qui sont personnalisés pour un appareil spécifique.

Les systèmes distribués sont généralement beaucoup plus compliqués que les systèmes conçus pour fonctionner sur un seul ordinateur. Outre les problèmes de concurrence et de verrouillage des ressources auxquels les applications multithread doivent faire face, les systèmes distribués doivent gérer les échecs de communication et le traitement des échecs de nœud. Les transactions (et annulations) qui nécessitent plusieurs processeurs pour être menées peuvent également être délicates.

Les systèmes distribués prennent de nombreuses formes et sont actuellement utilisés dans de nombreuses applications. Les applications Web sont des systèmes distribués. Un système à plusieurs niveaux comprend généralement au moins N processeurs différents (avec différentes applications). Les systèmes distribués sont également utilisés dans de nombreux systèmes d'automatisation d'usine.

L'article sur l'informatique distribuée dans Wikipedia vaut la peine d'être lu.

En réponse à votre question sur la question de savoir si une application multithread constitue une application distribuée - si les threads s'exécutent sur un seul ordinateur, le système n'est pas distribué. Il doit résoudre certains des problèmes inhérents aux systèmes distribués, mais pas tous.

Jay Elston
la source
3

À proprement parler, "l'informatique distribuée" est toute solution qui implique le traitement d'une transaction / demande / calcul unique sur plusieurs ordinateurs.

Vous rencontrerez également le terme «systèmes distribués» qui est un terme fourre-tout pour les serveurs Windows, Unix et autres petits systèmes qui auraient initialement été déployés en dehors du centre de données central. Bien qu'il soit plus normal que ces systèmes soient déployés à l'intérieur du centre de données de nos jours, le terme est resté.

James Anderson
la source
3

Pour répondre à votre question générale sur ce qui constitue l'informatique distribuée, je recommanderais l'étude A Note on Distributed Computing par Ann Wollrath, Geoff Wyant, Jim Waldo et Samuel C. Kendall . Il couvre l'histoire récente des systèmes distribués et de ses défaillances, et propose que l'informatique distribuée nécessite une réflexion différente sur les problèmes impliqués.

Bien que ni les mutex ni les sémaphores ne soient mentionnés dans l'article, il fournit des informations précieuses sur la bonne ingénierie d'un système logiciel distribué.

Quant à savoir pourquoi votre intervieweur a posé des questions sur les mutex et les sémaphores, je suis d'accord avec @Caleb:

Ils le font si ces threads peuvent s'exécuter sur différentes machines, ou même s'ils s'exécutent sur la même machine mais dans des processus différents.

La seule chose que j'ajouterais, c'est que les mutex et les sémaphores sont des primitives de verrouillage de bas niveau qui vous permettent de répartir le travail sur plusieurs périphériques informatiques, et leur fonctionnement est (généralement) vital pour le succès de l'application. Évidemment, cela dépend du langage et de la technologie utilisés. Si vous utilisez Erlang ou Scala, vous utiliserez probablement la concurrence basée sur le modèle Actor plutôt que la concurrence traditionnelle basée sur un verrou.

Matthew Rodatus
la source
2

Le mot dit tout. Vous devez faire une opération de calcul et si vous pouviez distribuer des parties de ce calcul de telle sorte que chaque calcul fonctionne indépendamment de l'autre calcul et puis quand tout est fait, vous combinez le résultat de chaque calcul pour obtenir la réponse du calcul principal. Exemple: Map-Reduce

Ankur
la source
1

Nous avions un cours sur les "systèmes distribués" et bien que je ne me souvienne pas exactement de la définition, c'était dans le sens de:

  1. peut s'exécuter sur plusieurs nœuds distincts qui communiquent via des messages (ne peut pas partager la mémoire)
  2. les objets peuvent être migrés entre les nœuds
  3. les objets conservent leur identité lors de la migration et peuvent être traités de manière transparente lors de la migration
  4. les objets ne dépendent pas du nœud qui les a créés
  5. le système peut gérer l'ajout et la suppression de nœuds

(Je crois qu'il y en avait d'autres et je ne suis pas certain du dernier point)

Maintenant, dans le cours, nous avons appris à implémenter une transaction distribuée et un verrou distribué. La leçon est que le verrou distribué est essentiellement implémenté à l'aide d'une transaction distribuée, ce qui est l'inverse par rapport à ce que vous faites localement, et qu'il n'est intrinsèquement pas tolérant aux pannes, ce qui va plutôt à l'encontre du but d'avoir un système distribué en premier lieu.

Edit: Cette définition est pour "système distribué" au sens étroit de système d'exploitation ou système de base de données et par opposition à simplement système client-serveur. Tout ce qui satisfait à la première condition peut être appelé distribué dans certains contextes.

Par coïncidence, la définition correspond à la différence entre les systèmes de contrôle de version distribués et traditionnels, qui sont tous au moins client-serveur et souvent également répliqués.

Jan Hudec
la source
C'est vraiment un style particulier de l'informatique distribuée. Il y en a d'autres, et la seule chose qu'ils partagent vraiment est le premier point. La messagerie est critique, les autres… pas tellement.
Donal Fellows
1
@DonalFellows: Eh bien, c'est un système distribué , dans un sens de système d'exploitation ou de base de données. Là, la migration et la tolérance aux pannes sont les principaux points pour les faire. L '«informatique» distribuée est tout ce qui s'exécute sur plusieurs nœuds.
Jan Hudec
Eh bien, dans ce cas, cela aurait dû couvrir les affaires de la prise de décision. C'est difficile dans un système distribué. (De plus, la plupart des articles académiques que j'ai vus sur le sujet émettent des hypothèses totalement irréalistes sur la topologie du graphique sous-jacent, donnant des conclusions valides mais inutiles.)
Donal Fellows
@DonalFellows: Le cours couvrait bien sûr les affaires de la prise de décision et tout cet arbitrage et ce truc de cerveau divisé (pas trop profondément, c'était uniquement au niveau introductif). Mais cela ne définit pas la propriété d'un système distribué. C'est simplement un obstacle que vous devez franchir si vous voulez en créer un.
Jan Hudec
0

L'informatique distribuée est le terme «non-marketing» pour l'informatique d'entreprise que vous pouvez entendre beaucoup plus dans la vie réelle. Cependant, l'idée générale, comme l'ont souligné d'autres, est "vous utilisez plus d'un ordinateur pour travailler"

Archimedes Trajano
la source