English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

invité
1 / ?
retour aux leçons

Entrées et sorties en tant que ensembles distincts

Graphes bipartis dans l'architecture réseau

Un graphe biparti divise les nœuds en deux ensembles, avec des arêtes autorisées uniquement entre les ensembles (jamais au sein d'un même ensemble).

Les frontières réseau ont une structure bipartite naturelle :

- Côté entrée : clients externes d'un côté, services internes de l'autre. Arêtes : requêtes externes entrantes, réponses internes sortantes.

- Côté égress : services internes d'un côté, destinations externes de l'autre. Arêtes : appels sortants initiés par les services internes, réponses externes renvoyées.

L'asymétrie :

- Ingress : l'ensemble des sources est illimité (n'importe qui sur Internet). L'ensemble des destinations est petit (quelques services). Le volume évolue en fonction des utilisateurs.

- Egress : l'ensemble des sources est petit (quelques services internes). L'ensemble des destinations est borné (quelques partenaires connus). Le volume évolue en fonction de l'activité interne.

La conception à boîte unique fusionne les deux moitiés bipartites à travers un seul nœud. Ce nœud reçoit un flux entrant (fan-in) de l'extérieur (ingress) ET un flux entrant de l'intérieur (direction inverse de l'egress). La charge du nœud = somme des deux côtés.

La conception séparée conserve les deux moitiés bipartites sur des nœuds distincts. Chaque nœud gère un rôle avec son axe de mise à l'échelle approprié.

Bipartite ingress & egress: separate node sets, separate cut vertices

Dessinez le graphe biparti pour un petit SaaS : 5 points d'accès clients externes (envoyant des requêtes entrantes), 3 services internes (les backends) et 4 API de partenaires externes (appelées en sortant). Identifiez quelles arêtes appartiennent à la moitié bipartie d'ingress et quelles arêtes appartiennent à la moitié bipartie d'egress. Prédir ce qui arrive à la connectivité du graphe si l'un des services internes tombe en panne.

Avant la scission : un sommet de coupure partout

Boîte unique : un seul sommet soutient tout

Avant la séparation, une seule boîte de proxy se situe entre chaque paire externe/interne. En termes de graphe, il s'agit d'un sommet de coupure de haut degré : sa suppression déconnecte tous les clients de tous les back-ends ET tous les services internes de tous les partenaires externes.

La connectivité à ce nœud est de 1. Tout ce qui perturbe ce nœud (crash du processus, problème réseau, arrêt par OOM) déconnecte tous les chemins dépendants.

Après la séparation : le sommet de coupure est remplacé par deux nœuds plus légers

La séparation en entrée (ingress) et sortie (egress) crée deux nœuds de graphe là où il n'y en avait qu'un. Chaque nœud se situe désormais sur une seule moitié bipartite :

- Nœud d'entrée (Ingress) : sommet de coupure pour la moitié bipartite des clients externes vers les services internes

- Nœud de sortie (Egress) : sommet de coupure pour la moitié bipartite des services internes vers les partenaires

La boucle en épingle (hairpin) disparaît géométriquement : dans le graphe à boîte unique, un service interne tentant d'atteindre un service orienté externe via l'adresse publique devait traverser le même sommet deux fois (sortie via le rôle egress, puis entrée via le rôle ingress). Dans le graphe séparé, la traversée touche deux sommets différents.

La connectivité par côté reste à 1, mais les deux sommets de coupure peuvent être remplacés indépendamment. L'ajout d'un second proxy d'entrée porte la connectivité du côté entrée à 2 sans modifier le côté sortie.

Réplication par côté

Les flottes de production exécutent souvent 2+ proxys d'entrée (HA) ET 2+ proxys de sortie (HA). Chaque côté atteint une connectivité 2 de manière indépendante. La capacité se scale horizontalement sur chaque côté selon les besoins.

Une équipe exécute actuellement une seule boîte de proxy (sommet de coupure unique pour les deux directions). Ils la divisent en un proxy d'entrée + un proxy de sortie, puis ajoutent plus tard un second proxy d'entrée (paire HA) tout en conservant un seul proxy de sortie. Décrivez comment la connectivité du graphe évolue à chaque étape, et identifiez la moitié bipartite qui est encore 1-connectée après l'étape 3 (qui est donc toujours le mode de défaillance à la tolérance la plus faible).

Tolérance aux partitions réseau

Synthèse

Vous pouvez désormais lire les architectures réseau comme des graphes bipartis, identifier les sommets de coupure et suivre la connectivité pour chaque moitié.

Appliquez ceci aux partitions réseau.

Une partition réseau est une coupure de graphe : les arêtes traversant la partition échouent ; les deux côtés continuent de fonctionner mais ne peuvent plus se joindre.

Un système géographiquement distribué possède deux centres de données connectés par un unique lien inter-DC. Le trafic d'entrée arrive via le DC1 ; le trafic de sortie passe par le DC1 vers les partenaires externes ; certains services internes résident dans le DC2 et rappellent le DC1 pour les opérations à état.

Prédir ce qui se passe si le lien inter-DC échoue : (1) quelles moitiés bipartites restent connectées au sein de chaque DC, (2) quels flux de trafic continuent et lesquels s'arrêtent, et (3) proposer une modification architecturale qui permettrait au système de tolérer cette partition avec une dégradation bornée plutôt qu'une panne totale.

Notes complémentaires

Notes complémentaires

Cette leçon de géométrie reformule la leçon principale Séparation des entrées et des sorties comme une analyse de graphe biparti.

La prochaine note complémentaire, geometry_of_failure_modes_and_blast_radius, dérive la centralité d'intermédiation (identifie les nœuds goulets d'étranglement) et la coupe minimale (borne le rayon d'impact).

Bien joué.