Découvrez de nombreuses nouveautés à l'occasion de notre lancement du 2e trimestre 2023 : moteur Kora Engine, règles de qualité des données, et bien plus encore | S'inscrire pour une démo

Qu’est-ce qu’un système distribué ?

Les systèmes distribués (on parle également d’informatique distribuée) sont un ensemble de composants 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 leurs inconvénients, et les solutions les plus utilisées en matière de messagerie/streaming distribué(e).

Fondé par les créateurs d’Apache Kafka, Confluent est une plateforme de streaming de données capable de prendre en charge l’intégration des données, le traitement de flux et l’analyse en temps réel à partir de plus de 120 sources de données.

What is a Distributed System, and How Does it Work?

Définition d’un système distribué

É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.

How Distributed Systems Work

The most important functions of distributed computing are:

  • Resource sharing - whether it’s the hardware, software or data that can be shared
  • Openness - how open is the software designed to be developed and shared with each other
  • Concurrency - multiple machines can process the same function at the same time
  • Scalability - how do the computing and processing capabilities multiply when extended to many machines
  • Fault tolerance - how easy and quickly can failures in parts of the system be detected and recovered
  • Transparency - how much access does one node have to locate and communicate with other nodes in the system.

Modern distributed systems have evolved to include autonomous processes that might run on the same physical machine, but interact by exchanging messages with each other.

Examples of Distributed Systems

Networks

The earliest example of a distributed system happened in the 1970s when ethernet was invented and LAN (local area networks) were created. For the first time computers would be able to send messages to other systems with a local IP address. Peer-to-peer networks evolved and e-mail and then the Internet as we know it continue to be the biggest, ever growing example of distributed systems. As the internet changed from IPv4 to IPv6, distributed systems have evolved from “LAN” based to “Internet” based.

Telecommunication networks

Telephone and cellular networks are also examples of distributed networks. Telephone networks have been around for over a century and it started as an early example of a peer to peer network. Cellular networks are distributed networks with base stations physically distributed in areas called cells. As telephone networks have evolved to VOIP (voice over IP), it continues to grow in complexity as a distributed network.

Distributed Real-time Systems

Many industries use real-time systems that are distributed locally and globally. Airlines use flight control systems, Uber and Lyft use dispatch systems, manufacturing plants use automation control systems, logistics and e-commerce companies use real-time tracking systems.

Parallel Processing

There used to be a distinction between parallel computing and distributed systems. Parallel computing was focused on how to run software on multiple threads or processors that accessed the same data and memory. Distributed systems meant separate machines with their own processors and memory. With the rise of modern operating systems, processors and cloud services these days, distributed computing also encompasses parallel processing.

Distributed artificial intelligence

Distributed Artificial Intelligence is a way to use large scale computing power and parallel processing to learn and process very large data sets using multi-agents.

Distributed Database Systems

A distributed database is a database that is located over multiple servers and/or physical locations. The data can either be replicated or duplicated across systems.

Most popular applications use a distributed database and need to be aware of the homogenous or heterogenous nature of the distributed database system.

A homogenous distributed database means that each system has the same database management system and data model. They are easier to manage and scale performance by adding new nodes and locations.

Heterogenous distributed databases allow for multiple data models, different database management systems. Gateways are used to translate the data between nodes and usually happen as a result of merging applications and systems.

Architecture des systèmes distribués

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.

  • Ce réseau peut être accessible au moyen d’une adresse IP, de câbles ou même d’un circuit imprimé.
  • Les messages transmis entre les machines contiennent des éléments que les systèmes souhaitent partager, tels que des bases de données, des objets et des fichiers.
  • La fiabilité de communication, qu’il s’agisse de l’envoi ou de la réception des messages et des accusés de réception, ou de la manière dont un nœud tente à de renvoyer un message en cas d’échec, est une caractéristique importante des systèmes distribués
  • Les systèmes distribués sont nés de la nécessité de développer certains services et applications et d’ajouter et de gérer de nouvelles machines. Ils permettent d'améliorer les performances de l'architecture, mais impliquent en contrepartie une plus grande complexité.

Pour mieux comprendre ce phénomène, examinons les différents types d’architectures distribuées, ainsi que leurs avantages et leurs inconvénients.

Types of Distributed System Architectures:

Distributed applications and processes typically use one of four architecture types below:

Client-server:

In the early days, distributed systems architecture consisted of a server as a shared resource like a printer, database, or a web server. It had multiple clients (for example, users behind computers) that decide when to use the shared resource, how to use and display it, change data, and send it back to the server. Code repositories like git is a good example where the intelligence is placed on the developers committing the changes to the code.

Today, distributed systems architecture has evolved with web applications into:

  • Three-tier: In this architecture, the clients no longer need to be intelligent and can rely on a middle tier to do the processing and decision making. Most of the first web applications fall under this category. The middle tier could be called an agent that receives requests from clients, that could be stateless, processes the data and then forwards it on to the servers.
  • Multi-tier: Enterprise web services first created n-tier or multi-tier systems architectures. This popularized the application servers that contain the business logic and interacts both with the data tiers and presentation tiers.
  • Peer-to-peer: There are no centralized or special machine that does the heavy lifting and intelligent work in this architecture. All the decision making and responsibilities are split up amongst the machines involved and each could take on client or server roles. Blockchain is a good example of this.

Pros and Cons of Distributed Systems

Avantages des systèmes distribués :

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 :

  • Possibilités de mise à l'échelle horizontale illimitées - il est possible d'ajouter des machines à tout moment.
  • Faible latence - le fait d'utiliser des machines géographiquement proches des utilisateurs permet de réduire le temps nécessaire pour répondre à leurs demandes.
  • Haute tolérance aux erreurs - si un serveur ou un centre de données tombe en panne, d’autres peuvent continuer à répondre aux besoins des utilisateurs.
  • Avantages des systèmes distribués :

Inconvénients des systèmes distribués :

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, une plus grande quantité de données transmises entre de nombreuses parties, ce qui entraîne des problèmes :

  • D'intégration et 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.

  • 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.

Les avantages des plateformes de streaming distribué

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.

*Essai gratuit de 30 jours sans avoir à fournir vos informations de carte bancaire !