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

Entrant et sortant en tant que ensembles distincts

Graphe bipartite dans l'architecture de réseau

Un graphe bipartite divise les nœuds en deux ensembles, avec les arêtes autorisées uniquement entre les ensembles (jamais dans un ensemble).

Les limites de réseau ont une structure bipartite naturelle:

- Côté ingress : de l'autre côté, les clients externes, les services internes. Arêtes : demandes externes entrantes, réponses internes sortantes.

- Côté egress : services internes d'un côté, destinations externes de l'autre. Arêtes : services internes effectuant des appels sortants, réponses externes revenant.

L'asymétrie:

- Ingress : ensemble source illimité (n'importe qui sur internet). Ensemble destination petit (quelques services). Volume qui augmente avec les utilisateurs.

- Egress : ensemble source petit (quelques services internes). Ensemble destination limité (quelques partenaires connus). Volume qui augmente avec l'activité interne.

Conception mono-boîte fait disparaître les deux moitiés bipartites dans un seul nœud. Ce nœud a un flux d'entrée venant de l'extérieur (ingress) ET un flux d'entrée venant de l'intérieur (direction inverse de l'egress). Charge du nœud = somme des deux côtés.

Conception divisée maintient les deux moitiés bipartites sur des nœuds séparés. Chaque nœud gère un rôle avec son échelle appropriée.

Ingress & egress bipartite : ensembles de nœuds séparés, vertice de coupure séparé

Tracez le graphe bipartite pour une petite SaaS : 5 points de terminaison clients externes (envoyant des demandes), 3 services internes (les back-ends) et 4 API partenaires externes (appelées sortantes). Identifiez les bords qui appartiennent à la moitié bipartite d'ingress et ceux qui appartiennent à la moitié bipartite d'egress. Prédisez ce qui se passe pour la connectivité du graphe si l'un des services internes fait faillite.

Avant la division : un vertice de coupure partout

Boîte unique : Un seul sommet gère tout

Avant la division, une seule boîte proxy se trouve entre chaque paire externe/intérieure. En termes de graphe, c'est un sommet de haute ordre : sa suppression coupe tous les clients de tous les backends et toutes les services internes des partenaires externes.

Connectivité sur ce nœud = 1. Quasi-anything qui perturbe ce nœud (crash de processus, bogue de réseau, OOM kill) coupe tout chemin dépendant.

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

La division en entrée + sortie crée deux nœuds de graphe où il y avait un. Chaque nœud se trouve maintenant sur seulement une moitié bipartite:

- Nœud d'entrée : sommet de coupure pour la moitié bipartite externe-clients-vers-services-internes

- Nœud de sortie : sommet de coupure pour la moitié bipartite services-internes-vers-partners

La boucle géométrique disparaît : dans le graphe unique, un service essayant de rejoindre un service externe-facing via l'adresse publique nécessitait de traverser le même sommet deux fois (sortie via le rôle de sortie, puis entrée via le rôle d'entrée). Dans le graphe divisé, la traversée rencontre 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'une deuxième boîte proxy d'entrée augmente la connectivité de l'entrée à 2 sans changer la sortie.

Réplication par côté

Les flottes de production utilisent souvent 2+ boîtes proxy d'entrée (HA) ET 2+ boîtes proxy de sortie (HA). Chaque côté atteint indépendamment une connectivité de 2. La capacité s'échelle horizontalement sur chaque côté comme nécessaire.

Une équipe utilise actuellement une boîte proxy unique (un seul sommet de coupure pour les deux directions). Ils divisent cette boîte en une entrée + une sortie, puis ajoutent plus tard une deuxième entrée (paire HA) mais conservent une seule sortie. Expliquez comment la connectivité du graphe change à chaque étape et identifiez la moitié bipartite qui reste 1-connectée après l'étape 3 (ce qui signifie qu'elle est toujours la faiblesse tolérante à l'échec la plus basse).

Tolérance aux partitions de réseau

Synthèse

Vous pouvez maintenant lire les architectures de réseau comme des graphes bipartites, identifier les sommets de coupe et suivre la connectivité par moitié.

Appliquez cela aux partitions de réseau.

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

Un système géographiquement réparti a deux centres de données connectés par un seul lien inter-DC. Le trafic d'entrée entre via DC1 ; le trafic de sortie passe par DC1 vers les partenaires externes ; certaines services internes vivent dans DC2 et appellent DC1 pour les opérations d'état.

Prédit ce qui se passe si le lien inter-DC rompt : (1) quelles moitiés bipartite restent connectées dans chaque DC, (2) quelles flux de trafic continuent et quelles s'arrêtent, et (3) proposez une modification architecturale qui permettrait à ce système de tolérer cette partition avec une dégradation limitée plutôt qu'un arrêt total.

Notes Complémentaires

Notes Complémentaires

Cette géométrie-de leçon reformule la leçon principale Séparation d'Ingress & Egress en une analyse de graphe bipartite.

La prochaine complémentaire, geometry_of_failure_modes_and_blast_radius, dérive entre la centralité de court-bout (identifie les nœuds en bouteille) et la moindre coupe (limite le rayon d'explosion).

Bien fait.