Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

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

Après cette leçon: Je peux dire pourquoi un service tourne sur plusieurs machines et ce qui peut mal tourner.

Leçon de 50 min4 commandesLab Valkey : apprendre un magasin clé-valeur compatible Redis, avec expiration, listes et compteurs

Un service qui tient sur plusieurs machines

Un système distribué est un ensemble de machines reliées par un réseau qui se présentent comme un seul service. Elles se partagent le travail pour aller plus vite, garder plus de données et continuer quand l’une d’elles tombe en panne.

Le jour de la mise en vente d’un concert, une billetterie reçoit 4 000 demandes par seconde. Une seule machine ne suit pas, et si elle s’arrête, plus personne n’achète de billet.

À la fin de cette leçon

Remarque

Je peux dire pourquoi un service tourne sur plusieurs machines et ce qui peut mal tourner.

Mots clés

MotCe que ça veut dire
Système distribuédes machines en réseau qui forment un seul service
Nœudune machine du système
Latencele temps qu’une demande met pour aller et revenir
Panne partielleune partie du système s’arrête, le reste continue
Disponibilitéla part du temps où le service répond

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Trois raisons de répartir un service

Il y a trois raisons de passer à plusieurs machines. La première est la vitesse : chaque machine traite une part des demandes. La deuxième est la taille : les données ne tiennent plus sur un seul disque.

La troisième est la panne : si une machine s’arrête, une autre prend sa place. Une seule machine, même très puissante, n’offre aucune de ces trois choses.

Exemple : dimensionner la billetterie

BesoinUne machine faitIl faut donc
4 000 demandes par seconde500 par seconde4 000 divisé par 500 : 8 machines
6 To de billets et d’historique2 To par disque6 divisé par 2 : 3 machines
Rester ouvert si une machine tombeRienAu moins une machine en plus

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Fabriquer un petit client nommé v

Commande
v() ( printf '%s\r\n' "$*" | nc -w 1 valkey 6379 )

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Demander si l’autre machine répond

Commande
v PING

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lui confier le nombre de billets

Commande
v SET dist:billets:concert 120

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le lui redemander

Commande
v GET dist:billets:concert

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Parler à une autre machine prend du temps

Dans le labo, votre terminal et le magasin Valkey sont deux machines. Chaque commande traverse un réseau, puis revient avec la réponse. Ce temps d’aller et retour s’appelle la latence.

Dans un seul programme, lire une valeur est presque immédiat. Entre deux machines, chaque échange coûte du temps, et ce coût grandit avec la distance.

Exemple : des ordres de grandeur

TrajetTemps d’aller et retour
Lire une variable en mémoiremoins d’une microseconde
Deux machines dans la même salleenviron 0,5 ms
Paris et Francfortenviron 10 ms
Paris et Tokyoenviron 230 ms

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une panne partielle est la règle, pas l’exception

Dans un système distribué, une machine peut tomber pendant que les autres marchent. C’est une panne partielle. Un câble peut aussi couper, et chacun croit alors que l’autre est mort.

La disponibilité dépend de la façon dont les machines sont liées. Si toutes sont nécessaires, il suffit qu’une tombe pour tout arrêter. Si une seule suffit, il faut que toutes tombent.

Exemple : trois machines à 90 % chacune

CasCalculDisponibilité du service
Les trois sont nécessaires0,9 × 0,9 × 0,972,9 %
Une seule suffit1 moins (0,1 × 0,1 × 0,1)99,9 %
Une machine seule0,990 %

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Que gagne-t-on à ajouter une machine ?

Code: python
# Une machine est disponible 99 jours sur 100. Que gagne-t-on à en ajouter ?
dispo = 0.99
panne = 1 - dispo
for machines in [1, 2, 3]:
    toutes = dispo ** machines
    une = 1 - panne ** machines
    print(machines, "machine(s) : toutes", round(toutes, 4), "une seule suffit", round(une, 6))
# Remplacez 0.99 par 0.9 puis relancez.

Une erreur fréquente

Attention

On croit souvent que plus de machines donne toujours un service plus fiable. Cela n’est vrai que si une seule suffit pour répondre. Si toutes sont nécessaires, chaque machine ajoutée est une panne possible de plus.

À propos de ce labo et de sa source: Lab Valkey : apprendre un magasin clé-valeur compatible Redis, avec expiration, listes et compteurs

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.