Chapitre 1 · Leçon 2
Cohérence, Disponibilité, Tolérance aux partitions
Section 1
Step 1
Le théorème CAP stipule qu'un système distribué ne peut garantir simultanément que 2 des 3 propriétés : Consistency, Availability, Partition tolerance.
snippet.typescript
1/*
2 * Théorème CAP — Eric Brewer, 2000
3 *
4 * C — Consistency (Cohérence)
5 * Tous les nœuds voient les mêmes données au même moment.
6 * Une lecture retourne toujours la valeur la plus récente.
7 *
8 * A — Availability (Disponibilité)
9 * Chaque requête reçoit une réponse (pas forcément la plus récente).
10 * Le système continue à répondre même si certains nœuds sont down.
11 *
12 * P — Partition Tolerance (Tolérance aux partitions)
13 * Le système continue à fonctionner même si des messages réseau
14 * sont perdus entre des nœuds.
15 *
16 * Dans un réseau distribué, P est INCONTOURNABLE
17 * (les partitions réseau ARRIVENT, on ne peut pas les ignorer)
18 *
19 * Donc le vrai choix est : CP ou AP ?
20 *
21 * ┌─────────────────┬────────────────────────────────────────┐
22 * │ CP (C+P) │ AP (A+P) │
23 * ├─────────────────┼────────────────────────────────────────┤
24 * │ PostgreSQL │ Cassandra, DynamoDB │
25 * │ MongoDB (*) │ CouchDB, Riak │
26 * │ HBase │ DNS │
27 * │ ZooKeeper │ Caches distribués │
28 * ├─────────────────┼────────────────────────────────────────┤
29 * │ Cohérence forte │ Haute disponibilité │
30 * │ Peut refuser │ Peut retourner des données obsolètes │
31 * │ des requêtes │ (eventual consistency) │
32 * ├─────────────────┼────────────────────────────────────────┤
33 * │ Banque, paiements│ Panier e-commerce, likes, vues │
34 * │ Stocks │ Profils utilisateurs │
35 * └─────────────────┴────────────────────────────────────────┘
36 */
37
38// Exemple : cohérence éventuelle (AP) pour les likes
39// Sur une plateforme comme YouTube :
40
41// ✅ OK : un like peut mettre quelques secondes à apparaître pour tous
42// ✅ OK : le compteur peut être légèrement inexact à un instant T
43// ❌ PAS OK : le like peut être perdu
44
45// ❌ Pas acceptable pour les paiements (CP obligatoire) :
46// - Si je paie 10 000 FCFA, le solde DOIT être réduit sur tous les nœuds
47// - La cohérence éventuelle pourrait permettre une double dépense