Le nœud de bouteille identifié avant que le trafic n'arrive
Centralité entretenue
Pour chaque paire de nœuds dans un graphe, il existe un chemin le plus court entre eux. La centralité entretenue d'un nœud N = la fraction de tous les chemins les plus courts qui passent par N.
Un nœud avec une haute centralité se trouve sur le chemin entre beaucoup d'autres paires. S'il ralentit, beaucoup de flux ralentiront. S'il échoue, beaucoup de flux seront rompus.
Lecture architecturale : les nœuds à haute centralité sont ceux que chaque examen d'architecture devrait payer une attention particulière. Ce sont les bouteilles, les SPOFs et les composants à capacité critique. Ils ont tendance à être:
- Le fournisseur DNS (entre chaque client et chaque service)
- Le proxy d'entrée (entre chaque client et chaque back-end)
- La base de données primaire (entre chaque back-end et chaque lecture)
- Le service d'authentification (entre chaque utilisateur et chaque action autorisée)
Détection sans mesure : la topologie du graphe identifie seuls les nœuds à haute centralité. Vous n'avez pas besoin de données de trafic ; vous avez besoin du diagramme d'architecture. Un nœud qui se trouve entre beaucoup d'autres paires est critique structurel.
Conséquence opérationnelle : les nœuds à haute centralité méritent une investissement disproportionné dans (1) l'augmentation de la capacité, (2) la redondance, (3) l'observabilité et (4) les cahiers des charges des plans d'intervention en cas d'incident.
La plus petite coupe coupe la plus petite partie
Théorème du min-coupe en termes simples
Le min-coupe entre deux nœuds dans un graphe = le plus petit nombre d'edges (ou de nœuds) que vous devez supprimer pour les désconnecter.
Lecture opérationnelle: le min-coupe limite le rayon d'action maximal d'un échec. Si le min-coupe entre 'clients' & 'database' est de 1 arête (une seule proxy), alors la perte de cette arête coupe tous les clients de la base de données. Si le min-coupe est de 5, vous devez perdre 5 composants simultanément pour être totalement coupé; malchance, mais limitée.
Conception pour réduire l'impact d'un échec: augmenter le min-coupe à chaque frontière importante. Plusieurs proxies; plusieurs nœuds de cache; plusieurs chemins de réseau entre les DC. Chaque ajout augmente le min-coupe de 1.
Le motif de bulkhead en termes de graphe: partitionner les ressources en sous-graphes distincts qui ne partagent pas de min-coupe les uns avec les autres. Un échec dans un sous-graphe ne peut pas se propager aux autres parce que les arêtes n'existent pas.
Le diamètre détermine la distance des échecs
Diamètre du graphe = la plus longue des distances les plus courtes entre deux nœuds.
Propagation des échecs: lorsqu'un nœud échoue & que les flux de reprise touchent les nœuds en amont jusqu'à la distance du diamètre, ils touchent les nœuds en amont jusqu'à la distance du diamètre. Un système à diamètre 3 (client -> proxy -> backend -> DB) signifie qu'un échec de la base de données affecte 3 couches en amont dans une tempête de reprise.
Implication: un diamètre plus court = une contenance des échecs plus rapide, mais aussi une concentration accrue des nœuds. Chaque conception a son compromis.
Calculer le Min-Coupe pour une Architecture Réelle
Une architecture: 1 DNS, 1 CDN, 3 proxies inverses, 12 réplicas backend, 1 base de données primaire.
Audit des modes de défaillance via les indicateurs de graphe
Synthèse
Vous pouvez maintenant identifier les nœuds à haute entretenue, calculer le min-coupe à chaque frontière & estimer la distance de propagation des échecs via le diamètre.
Appliquez tous les trois.
Un système : 50 points de terminaison des clients -> 1 DNS -> 2 POP CDN -> 4 reverse proxies -> 16 réplicas back-end -> { cluster de base de données (1 primaire + 2 de secours), cluster Redis (5 nœuds), 3 API externes }.
Notes Complémentaires
Notes Complémentaires
Cette géométrie-de leçon reformule la leçon principale Modes de rupture et rayon d'action à travers des indicateurs de graphes (betweenness, min-cut, diamètre).
Le dernier complément, geometry_of_observability_and_capacity, traite des cellules de Voronoi pour les zones de captation des POP CDN, le plancher de vitesse de la triangule de latence & la courbe de file révisitée au niveau du niveau de la proxy.
Bien fait.