Développez l'apprentissage automatique prédictif avec Flink | Atelier du 18 déc. | S'inscrire
Les systèmes distribués sont un ensemble de composants et de machines indépendants, répartis sur différents environnements, qui communiquent entre eux afin de fonctionner comme une seule et même unité.
Le but de cette présentation est de vous familiariser, à l'aide d'exemples concrets, avec les systèmes distribués : leur architecture de base, leurs avantages et inconvénients, et les solutions les plus utilisées en matière de streaming distribué en temps réel.
Fondée par les créateurs d’Apache Kafka, Confluent est une plateforme de streaming de données capable de prendre en charge l’intégration, le traitement et l’analyse des données en temps réel à partir de plus de 120 sources.
Également appelés informatique distribuée ou bases de données distribuées, les systèmes distribués sont des ensembles de composants indépendants répartis sur différents environnements qui échangent des messages entre eux afin d’atteindre des objectifs communs.
Ils apparaissent comme une seule interface ou un seul ordinateur pour l’utilisateur final. Le but est que le système puisse exploiter au mieux les ressources et les informations tout en limitant les dysfonctionnements puisque, si l’un des composants tombe en panne, la disponibilité du service n’en sera pas affectée.
Aujourd’hui, les données sont plus distribuées que jamais et les applications modernes ne fonctionnent plus de manière isolée. La grande majorité des produits et des applications reposent sur des systèmes distribués.
Les principales fonctions de l’informatique distribuée sont les suivantes :
Les systèmes distribués modernes ont évolué pour inclure aujourd'hui des processus autonomes qui peuvent s’exécuter sur la même machine physique, mais qui interagissent en échangeant des messages entre eux.
Réseaux
Le premier exemple de système distribué remonte aux années 1970, avec l’invention d’Ethernet et des réseaux locaux (LAN). Pour la première fois, les ordinateurs pouvaient envoyer des messages à d’autres systèmes avec une adresse IP locale. Les réseaux pair à pair ont depuis évolué et la messagerie électronique, et plus largement internet tel que nous le connaissons, sont devenus de parfaits exemples de systèmes distribués dont la croissance ne cesse de s’accélérer. Suite à l'abandon du protocole IPv4 au profit du protocole IPv6, les systèmes distribués sont passés d’une approche de type « LAN » à une approche de type « internet ».
Réseaux de télécommunications
Les réseaux téléphoniques et cellulaires sont également des systèmes distribués. Les réseaux téléphoniques, qui existent depuis plus d’un siècle, ont d'ailleurs été les premiers exemples de systèmes pair à pair. Les réseaux cellulaires sont des systèmes distribués dont les relais sont physiquement répartis dans des zones appelées « cellules ». Avec l’évolution des réseaux téléphoniques vers la VOIP (voix sur IP), la complexité de ces réseaux ne cesse de croître.
Systèmes distribués en temps réel
De nombreux secteurs d’activité utilisent des systèmes en temps réel avec une distribution locale ou mondiale : systèmes de contrôle des vols pour les compagnies aériennes, systèmes de dispatching pour Uber et Lyft, systèmes de commande d’automatisation pour les usines de fabrication, et systèmes de suivi en temps réel pour les entreprises de logistique et de commerce électronique.
Traitement parallèle
Il existait autrefois une distinction entre l’informatique parallèle et l'informatique distribuée. La première se chargeait d’exécuter un logiciel sur plusieurs threads ou processeurs, qui devaient alors accéder aux mêmes données et à la même mémoire. Les systèmes distribués impliquaient quant à eux des machines séparées, dotées de leurs propres processeurs et de leur propre mémoire. Aujourd’hui, avec l’essor des systèmes d’exploitation, des processeurs et des services cloud, l’informatique distribuée englobe également le traitement parallèle.
Intelligence artificielle distribuée
L’intelligence artificielle distribuée est un moyen d’utiliser la puissance de calcul et le traitement parallèle à grande échelle pour assimiler et traiter de très grands ensembles de données à l’aide d’agents multiples.
Systèmes de bases de données distribuées
Une base de données distribuée est une base de données située sur plusieurs serveurs et/ou emplacements physiques. Les données peuvent être répliquées ou dupliquées entre les systèmes.
La plupart des applications courantes utilisent une base de données distribuée, et doivent donc tenir compte de la nature homogène ou hétérogène du système.
Avec une base de données distribuée homogène, chaque machine exploite le même système de gestion de base de données et le même modèle de données. Cette configuration est plus facile à gérer et à dimensionner en ajoutant de nouveaux nœuds et de nouveaux emplacements.
Avec les bases de données distribuées hétérogènes, il est possible d'utiliser différents modèles de données et systèmes de gestion de base de données. Des passerelles, qui résultent généralement de la fusion d’applications et de systèmes, sont utilisées pour traduire les données entre les nœuds.
Les systèmes distribués doivent disposer d’un réseau qui relie tous les composants (machines, équipements ou logiciels) afin qu’ils puissent transférer des messages pour communiquer les uns avec les autres.
Pour mieux comprendre ce phénomène, examinons les différents types d’architectures distribuées, ainsi que leurs avantages et leurs inconvénients.
Les applications et processus distribués utilisent généralement l’un des quatre types d’architecture ci-dessous :
Client-serveur :
À l’origine, l’architecture des systèmes distribués se composait d’un serveur qui était utilisé comme ressource partagée, comme une imprimante, une base de données ou un serveur web. Plusieurs clients (par exemple, des utilisateurs d'ordinateurs) décidaient à quel moment utiliser la ressource partagée, comment s’en servir et la consulter, et comment modifier les données et les renvoyer au serveur. Les référentiels de code comme git illustrent bien ce type de système, qui dépendant des développeurs qui mettent à jour le code.
Aujourd’hui, l’architecture des systèmes distribués a évolué avec les applications web ; elle peut désormais être :
L’objectif d’un système distribué est de renforcer l'évolutivité, les performances et la disponibilité des applications.
Ses principaux avantages sont les suivants :
En matière d’ingénierie, toute décision implique des compromis. La complexité est le principal inconvénient des systèmes distribués. Ils impliquent en effet plus de machines, plus de messages, et une plus grande quantité de données transmises entre différents acteurs, ce qui entraîne des problèmes :
– D’intégration et de cohérence des données - pouvoir synchroniser l’ordre des modifications de données et des états de l’application dans un système distribué est un véritable défi, en particulier lorsque des nœuds démarrent, s’arrêtent ou tombent en panne. – De défaillance du réseau et des communications - les messages peuvent ne pas être transmis aux bons nœuds ou être transmis mais dans un ordre incorrect, ce qui entraîne une rupture de la communication et du fonctionnement du système. – De frais de gestion - il est souvent nécessaire d’ajouter des fonctions de veille, de surveillance, d’enregistrement et d’équilibrage de charge pour avoir une meilleure visibilité sur le fonctionnement et les défaillances des systèmes distribués.
Confluent est la seule plateforme de streaming de données compatible avec tous les environnements cloud, qu'ils soient on prem ou hybrides. Connectez plus de 120 sources de données avec une évolutivité, une sécurité et une simplicité d'intégration de niveau professionnel, afin de disposer d'une visibilité en temps réel sur tous vos systèmes distribués.
Lancez-vous en quelques minutes avec un essai gratuit de 30 jours.