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.
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.
la source
À 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é.
la source
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:
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.
la source
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
la source
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:
(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.
la source
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"
la source