Systèmes distribués : définition, fonctionnalités et principes de base

Table des matières:

Systèmes distribués : définition, fonctionnalités et principes de base
Systèmes distribués : définition, fonctionnalités et principes de base
Anonim

Un système distribué dans sa définition la plus simple est un groupe d'ordinateurs travaillant ensemble et apparaissant comme un seul pour l'utilisateur final. Les machines partagent un état commun, s'exécutent simultanément et peuvent fonctionner indépendamment sans affecter la disponibilité de l'ensemble du système. La vérité est que la gestion de tels systèmes est un sujet complexe rempli d'embûches.

Vue d'ensemble du système

Systèmes distribués
Systèmes distribués

Le système distribué permet le partage de ressources (y compris les logiciels) connectées au réseau en même temps.

Exemples de distribution système:

  1. Pile traditionnelle. Ces bases de données sont stockées sur le système de fichiers d'une machine. Chaque fois que l'utilisateur souhaite recevoir des informations, il communique directement avec cette machine. Pour distribuer ce système de base de données, vous devez l'exécuter sur plusieurs PC en même temps.
  2. Architecture distribuée.

Système distribuévous permet de mettre à l'échelle horizontalement et verticalement. Par exemple, la seule façon de gérer plus de trafic serait de mettre à niveau le matériel qui exécute la base de données. C'est ce qu'on appelle la mise à l'échelle verticale. La mise à l'échelle verticale est bonne jusqu'à une certaine limite, après quoi même le meilleur équipement ne peut pas fournir le trafic requis.

La mise à l'échelle horizontale signifie ajouter plus d'ordinateurs, pas mettre à niveau le matériel sur un. La mise à l'échelle verticale augmente les performances jusqu'aux dernières capacités matérielles des systèmes distribués. Ces opportunités ne suffisent pas pour les entreprises technologiques ayant des charges de travail modérées à lourdes. La meilleure chose à propos de la mise à l'échelle horizontale est qu'il n'y a pas de limite de taille. Lorsque les performances se dégradent, une autre machine est simplement ajoutée, ce qui, en principe, peut être fait indéfiniment.

Au niveau de l'entreprise, un système de contrôle distribué implique souvent plusieurs étapes. Dans les processus métier aux endroits les plus efficaces du réseau informatique de l'entreprise. Par exemple, dans une distribution typique utilisant un modèle de système distribué à trois niveaux, le traitement des données est effectué sur un PC à l'emplacement de l'utilisateur, le traitement commercial est effectué sur un ordinateur distant et l'accès à la base de données et le traitement des données sont effectués sur un ordinateur complètement différent. qui fournit un accès centralisé pour de nombreuses entreprises. Généralement, ce type de calcul distribuéutilise le modèle d'interaction client-serveur.

Tâches principales

Tâches principales
Tâches principales

Les tâches principales d'un système de contrôle distribué incluent:

  1. Transparence - Obtenez une image système unique sans masquer l'emplacement, l'accès, la migration, la simultanéité, le basculement, la relocalisation, la persistance et les détails des ressources pour les utilisateurs.
  2. Ouverture - simplifie la configuration et les modifications du réseau.
  3. Fiabilité - Par rapport à un système de contrôle unique, il doit être fiable, cohérent et avoir une forte probabilité de masquer les erreurs.
  4. Performance - Par rapport à d'autres modèles, les modèles distribués améliorent les performances.
  5. Scalable - Ces systèmes de contrôle distribués doivent être évolutifs en termes de territoire, d'administration ou de taille.

Les tâches des systèmes de distribution comprennent:

  1. La sécurité est un gros problème dans un environnement distribué, en particulier lors de l'utilisation de réseaux publics.
  2. Tolérance aux pannes - peut être difficile lorsque le modèle est construit avec des composants peu fiables.
  3. La coordination et la distribution des ressources - peuvent être difficiles s'il n'y a pas de protocoles appropriés ou de politiques requises.

Environnement informatique distribué

Environnement informatique distribué
Environnement informatique distribué

(DCE) est une norme industrielle largement utilisée prenant en charge ce type d'informatique distribuée. Sur Internet, des fournisseurs tiers proposent certains services génériques,qui correspondent à ce modèle.

Grid computing est un modèle informatique avec une architecture distribuée d'un grand nombre d'ordinateurs associés à la résolution d'un problème complexe. Dans le modèle de grille informatique, les serveurs ou les ordinateurs personnels effectuent des tâches indépendantes et sont vaguement connectés les uns aux autres par Internet ou des réseaux à faible vitesse.

Le plus grand projet d'informatique en grille est SETI@home, dans lequel des propriétaires d'ordinateurs individuels se portent volontaires pour effectuer certains de leurs cycles de traitement multitâches à l'aide de leur ordinateur pour le projet Search for Extraterrestrial Intelligence (SETI). Ce problème informatique utilise des milliers d'ordinateurs pour télécharger et rechercher des données de radiotélescope.

L'une des premières utilisations de l'informatique en grille a été de casser le code cryptographique par un groupe désormais connu sous le nom de distributed.net. Ce groupe décrit également son modèle comme étant de l'informatique distribuée.

Mise à l'échelle de la base de données

Mise à l'échelle de la base de données
Mise à l'échelle de la base de données

La diffusion de nouvelles informations du maître à l'esclave ne se fait pas instantanément. En fait, il existe une fenêtre temporelle dans laquelle vous pouvez obtenir des informations obsolètes. Si ce n'était pas le cas, les performances d'écriture en souffriraient, car les systèmes distribués devraient attendre de manière synchrone que les données se propagent. Ils viennent avec quelques compromis.

En utilisant une approche de base de données esclave, il est possible d'augmenter le trafic de lecture dans une certaine mesure. Il existe de nombreuses options ici. Mais il vous suffit de diviser le trafic d'écriture en plusieursserveurs car il ne peut pas le gérer. Une façon consiste à utiliser une stratégie de réplication multimaître. Là, au lieu d'esclaves, il y a plusieurs nœuds principaux qui prennent en charge la lecture et l'écriture.

Une autre méthode est appelée sharding. Avec lui, le serveur est divisé en plusieurs serveurs plus petits, appelés fragments. Ces fragments ont des entrées différentes, des règles sont créées pour déterminer quelles entrées vont dans quel fragment. Il est très important de créer une règle telle que les données soient réparties uniformément. Une approche possible consiste à définir des plages en fonction de certaines informations d'enregistrement.

Cette clé de partition doit être choisie très soigneusement, car la charge n'est pas toujours égale aux bases de colonnes arbitraires. Le seul fragment qui reçoit plus de demandes que les autres s'appelle un hotspot, et ils essaient de l'empêcher de se former. Une fois fractionnées, les données de recalibrage deviennent extrêmement coûteuses et peuvent entraîner des temps d'arrêt importants.

Algorithmes de consensus de base de données

Algorithmes de consensus de base de données
Algorithmes de consensus de base de données

Les bases de données sont difficiles à implémenter dans les systèmes de sécurité distribués car elles nécessitent que chaque nœud négocie la bonne action d'interruption ou de validation. Cette qualité est connue sous le nom de consensus et est un problème fondamental dans la construction d'un système de distribution. La réalisation du type d'accord nécessaire pour le problème de "commit" est simple si les processus impliqués et le réseau sont complètement fiables. Cependant, les systèmes réels sont soumis à un certain nombre deéchecs possibles des processus de mise en réseau, messages perdus, corrompus ou dupliqués.

Cela pose problème et il n'est pas possible de garantir que le consensus correct sera atteint dans un laps de temps limité sur un réseau peu fiable. En pratique, il existe des algorithmes qui font consensus assez rapidement dans un réseau peu fiable. Cassandra fournit en fait des transactions légères grâce à l'utilisation de l'algorithme Paxos pour un consensus distribué.

L'informatique distribuée est la clé de l'afflux de traitement de mégadonnées qui a été utilisé ces dernières années. C'est une méthode pour décomposer une tâche énorme, telle que 100 milliards d'enregistrements cumulés, dont aucun ordinateur n'est capable de faire pratiquement quoi que ce soit par lui-même, en plusieurs tâches plus petites pouvant tenir dans une seule machine. Le développeur divise son énorme tâche en plusieurs tâches plus petites, les exécute sur plusieurs machines en parallèle, collecte les données de manière appropriée, puis le problème d'origine sera résolu.

Cette approche vous permet de mettre à l'échelle horizontalement - lorsqu'il y a une grosse tâche, ajoutez simplement plus de nœuds au calcul. Ces tâches sont réalisées depuis de nombreuses années par le modèle de programmation MapReduce associé à la mise en œuvre pour le traitement parallèle et la génération de grands ensembles de données à l'aide d'un algorithme distribué sur un cluster.

Actuellement, MapReduce est quelque peu obsolète et pose quelques problèmes. D'autres architectures ont émergé pour résoudre ces problèmes. À savoir, Lambda Architecture for distribuésystèmes de traitement de flux. Les avancées dans ce domaine ont apporté de nouveaux outils: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.

Systèmes de stockage et de réplication de fichiers

Systèmes de stockage et de réplication de fichiers
Systèmes de stockage et de réplication de fichiers

Les systèmes de fichiers distribués peuvent être considérés comme des magasins de données distribués. C'est la même chose que le concept - stocker et accéder à une grande quantité de données sur un cluster de machines qui constituent une seule entité. Ils vont généralement de pair avec l'informatique distribuée.

Par exemple, Yahoo est connu pour exécuter HDFS sur plus de 42 000 nœuds pour stocker 600 pétaoctets de données depuis 2011. Wikipedia définit la différence en ce que les systèmes de fichiers distribués permettent l'accès aux fichiers en utilisant les mêmes interfaces et sémantiques que les fichiers locaux, plutôt que via une API personnalisée telle que Cassandra Query Language (CQL).

Hadoop Distributed File System (HDFS) est un système utilisé pour le calcul sur l'infrastructure Hadoop. Répandu, il est utilisé pour stocker et répliquer des fichiers volumineux (taille Go ou To) sur de nombreuses machines. Son architecture se compose principalement de NameNodes et de DataNodes.

NameNodes est responsable du stockage des métadonnées sur le cluster, telles que le nœud contenant les blocs de fichiers. Ils agissent en tant que coordinateurs de réseau, déterminant le meilleur endroit pour stocker et copier des fichiers, en gardant une trace de la santé du système. Les DataNodes stockent simplement des fichiers et exécutent des commandes telles que la réplication de fichiers, une nouvelle écriture etautres.

Sans surprise, HDFS est mieux utilisé avec Hadoop pour l'informatique, car il fournit une connaissance des informations sur les tâches. Les travaux spécifiés sont ensuite exécutés sur les nœuds qui stockent les données. Cela vous permet d'utiliser l'emplacement des données - optimise les calculs et réduit la quantité de trafic sur le réseau.

Le système de fichiers interplanétaire (IPFS) est un nouveau protocole/réseau peer-to-peer passionnant pour le système de fichiers distribué. Utilisant la technologie Blockchain, il bénéficie d'une architecture entièrement décentralisée sans propriétaire unique ni point de défaillance.

IPFS propose un système de nommage (similaire au DNS) appelé IPNS et permet aux utilisateurs de récupérer facilement des informations. Il stocke le fichier via la gestion des versions historiques, un peu comme le fait Git. Cela permet d'accéder à tous les états précédents du fichier. Il est encore en cours de développement (v0.4 au moment de la rédaction) mais a déjà vu des projets intéressés à le construire (FileCoin).

Système de messagerie

système de messagerie
système de messagerie

Les systèmes de messagerie fournissent un emplacement central pour le stockage et la distribution des messages au sein d'un système commun. Ils vous permettent de séparer la logique d'application de la communication directe avec d'autres systèmes.

Échelle connue: le cluster Kafka de LinkedIn a traité 1 000 milliards de messages par jour avec des pics de 4,5 millions de messages par seconde.

En termes simples, la plate-forme de messagerie fonctionne comme ceci:

  1. Messagepassé de l'application qui le crée potentiellement, appelé producteur, va dans la plate-forme et est lu à partir de plusieurs applications, appelées consommateurs.
  2. Si vous avez besoin de stocker un certain événement à plusieurs endroits, comme la création d'un utilisateur pour une base de données, un stockage, un service d'envoi d'e-mails, la plate-forme de messagerie est le moyen le plus propre de distribuer ce message.

Il existe plusieurs plates-formes de messagerie populaires de premier ordre.

RabbitMQ est un courtier de messages qui vous permet d'affiner le contrôle de leurs trajectoires à l'aide de règles de routage et d'autres paramètres facilement configurables. On peut l'appeler un courtier "intelligent" car il a beaucoup de logique et surveille de près les messages qui le traversent. Fournit des options pour les AP et les CP du CAP.

Kafka est un courtier de messages qui est un peu moins fonctionnel car il ne garde pas la trace des messages qui ont été lus et ne permet pas une logique de routage complexe. Il permet d'atteindre des performances incroyables et représente la plus grande promesse dans cet espace avec le développement actif de systèmes distribués par la communauté open source et le soutien de l'équipe Confluent. Kafka est le plus populaire auprès des entreprises de haute technologie.

Applications d'interaction machine

Ce système de distribution est un groupe d'ordinateurs travaillant ensemble pour apparaître comme un ordinateur distinct à l'utilisateur final. Ces machines sont dans un état général, fonctionnentsimultanément et peut fonctionner indépendamment sans affecter la disponibilité de l'ensemble du système.

Si vous considérez la base de données comme distribuée, uniquement si les nœuds interagissent entre eux pour coordonner leurs actions. Dans ce cas, il s'agit de quelque chose comme une application exécutant son code interne sur un réseau peer-to-peer et est classée comme une application distribuée.

Échelle connue - BitTorrent
Échelle connue - BitTorrent

Exemples de telles applications:

  1. Échelle connue - BitTorrent essaime 193 000 nœuds pour l'épisode Game of Thrones.
  2. Technologie de registre de base des systèmes Blockchain distribués.

Les registres distribués peuvent être considérés comme une base de données immuable réservée aux applications qui est répliquée, synchronisée et partagée sur tous les nœuds du réseau de distribution.

L'échelle bien connue - le réseau Ethereum - comptait 4,3 millions de transactions par jour le 4 janvier 2018. Ils utilisent le modèle Event Sourcing, qui vous permet de restaurer l'état de la base de données à tout moment.

Blockchain est la technologie sous-jacente actuelle utilisée pour les registres distribués et a en fait marqué leur début. Cette innovation la plus récente et la plus importante dans l'espace distribué a créé le premier protocole de paiement véritablement distribué, bitcoin.

Blockchain est un grand livre distribué avec une liste ordonnée de toutes les transactions qui ont déjà eu lieu sur son réseau. Les transactions sont regroupées et stockées dans des blocs. L'ensemble de la blockchain est essentiellement une liste liée de blocs. Blocs spécifiéssont coûteux à créer et sont étroitement liés les uns aux autres grâce à la cryptographie. En termes simples, chaque bloc contient un hachage spécial (qui commence par un nombre X de zéros) du contenu du bloc actuel (sous la forme d'un arbre de Merkle) plus le hachage du bloc précédent. Ce hachage nécessite beaucoup de puissance CPU.

Exemples de systèmes d'exploitation distribués

Exemples de systèmes d'exploitation distribués
Exemples de systèmes d'exploitation distribués

Les types de système apparaissent à l'utilisateur car ce sont des systèmes mono-utilisateur. Ils partagent leur mémoire, leur disque et l'utilisateur n'a aucun mal à naviguer dans les données. L'utilisateur stocke quelque chose sur son PC et le fichier est stocké à plusieurs endroits, c'est-à-dire des ordinateurs connectés, afin que les données perdues puissent être facilement récupérées.

Exemples de systèmes d'exploitation distribués:

  1. Windows Server 2003;
  2. Windows Server 2008;
  3. Windows Server 2012;
  4. UbuntuLinux (serveur Apache).

Si un ordinateur démarre plus haut, c'est-à-dire si de nombreuses requêtes sont échangées entre des PC individuels, c'est ainsi que se produit l'équilibrage de charge. Dans ce cas, les requêtes sont propagées au PC voisin. Si le réseau devient plus chargé, il peut être étendu en ajoutant plus de systèmes au réseau. Le fichier et les dossiers réseau sont synchronisés et les conventions de dénomination sont utilisées afin qu'aucune erreur ne se produise lors de la récupération des données.

La mise en cache est également utilisée lors de la manipulation de données. Tous les ordinateurs utilisent le même espace de noms pour nommer les fichiers. Maisle système de fichiers est valable pour chaque ordinateur. S'il y a des mises à jour dans le fichier, il est écrit sur un ordinateur et les modifications sont propagées à tous les ordinateurs, de sorte que le fichier a le même aspect.

Les fichiers sont verrouillés pendant le processus de lecture/écriture, il n'y a donc pas de blocage entre différents ordinateurs. Des sessions se produisent également, telles que la lecture, l'écriture de fichiers dans une session et la fermeture de la session, puis un autre utilisateur peut faire de même et ainsi de suite.

Avantages de l'utilisation

Un système d'exploitation conçu pour faciliter la vie quotidienne des gens. Pour les avantages et les besoins de l'utilisateur, le système d'exploitation peut être mono-utilisateur ou distribué. Dans un système de ressources distribué, de nombreux ordinateurs sont connectés les uns aux autres et partagent leurs ressources.

Avantages:

  1. Si un PC d'un tel système est défectueux ou endommagé, un autre nœud ou ordinateur s'en chargera.
  2. Plus de ressources peuvent facilement être ajoutées.
  3. Les ressources telles que les imprimantes peuvent desservir plusieurs ordinateurs.

Ceci est un bref sur le système de distribution, pourquoi il est utilisé. Quelques points importants à retenir: ils sont complexes et sont choisis pour leur échelle et leur prix et sont plus difficiles à travailler. Ces systèmes sont répartis en plusieurs catégories de stockage: informatique, systèmes de fichiers et de messagerie, registres, applications. Et tout cela n'est que très superficiel sur un système d'information complexe.

Conseillé: