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

un

invitado
1 / ?

Entrada y salida como conjuntos distintos

Grafos bipartitos en la arquitectura de red

Un grafo bipartito divide los nodos en dos conjuntos, permitiendo aristas solo entre conjuntos (nunca dentro de un mismo conjunto).

Los límites de red tienen una estructura bipartita natural:

- Lado de entrada (ingres): clientes externos en un lado, servicios internos en el otro. Aristas: solicitudes externas que entran, respuestas internas que salen.

- Lado de egress (salida): servicios internos en un lado, destinos externos en el otro. Aristas: servicios internos que inician llamadas salientes, respuestas externas que regresan.

La asimetría:

- Ingress (entrada): el conjunto de origen es ilimitado (cualquier persona en internet). El conjunto de destino es pequeño (unos pocos servicios). El volumen escala con los usuarios.

- Egress (salida): el conjunto de origen es pequeño (unos pocos servicios internos). El conjunto de destino es acotado (unos pocos socios conocidos). El volumen escala con la actividad interna.

Diseño de caja única colapsa ambas mitades bipartitas a través de un solo nodo. Ese nodo tiene fan-in desde el exterior (ingress) Y fan-in desde el interior (dirección inversa del egress). La carga del nodo = suma de ambos lados.

Diseño dividido preserva ambas mitades bipartitas en nodos separados. Cada nodo maneja un rol con su eje de escalado apropiado.

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

Dibuja el grafo bipartito para un SaaS pequeño: 5 puntos de acceso de clientes externos (enviando solicitudes de entrada), 3 servicios internos (los backends) y 4 APIs de socios externos (llamadas salientes). Identifica qué aristas pertenecen a la mitad bipartita de ingress y cuáles pertenecen a la mitad bipartita de egress. Predice qué le sucede a la conectividad del grafo si uno de los servicios internos falla.

Antes de la división: Un vértice de corte en todas partes

Caja única: Un vértice sostiene todo

Antes de la división, una sola caja de proxy se sitúa entre cada par externo/interno. En términos de grafos, es un vértice de corte de alto orden: su eliminación desconecta a todos los clientes de todos los backends Y a todos los servicios internos de todos los socios externos.

La conectividad en este nodo es 1. Cualquier cosa que interrumpa este nodo (crash del proceso, fallo de red, OOM kill) desconecta todas las rutas dependientes.

Después de la división: El vértice de corte se reemplaza por dos nodos más ligeros

Dividir en entrada (ingress) + salida (egress) crea dos nodos de grafo donde antes había uno. Cada nodo ahora se sitúa solo en una mitad bipartita:

- Nodo de entrada (Ingress): vértice de corte para la mitad bipartita de clientes externos a servicios internos

- Nodo de salida (Egress): vértice de corte para la mitad bipartita de servicios internos a socios

El bucle de hairpin desaparece geométricamente: en el grafo de caja única, un servicio interno que intentaba alcanzar un servicio orientado a externos mediante la dirección pública requería atravesar el mismo vértice dos veces (salida por el rol de egress, y luego entrada por el rol de ingress). En el grafo dividido, la atravesamiento toca dos vértices diferentes.

La conectividad por lado se mantiene en 1, pero los dos vértices de corte pueden reemplazarse de forma independiente. Añadir un segundo proxy de entrada aumenta la conectividad del lado de entrada a 2 sin cambiar el lado de salida.

Replicación por lado

Las flotas de producción suelen ejecutar 2 o más proxies de entrada (HA) Y 2 o más proxies de salida (HA). Cada lado alcanza la conectividad 2 de forma independiente. La capacidad escala horizontalmente en cada lado según sea necesario.

Un equipo actualmente ejecuta un solo servidor proxy (un único vértice de corte para ambas direcciones). Lo dividen en uno de entrada + uno de salida, y luego agregan un segundo de entrada (par HA), pero mantienen un solo de salida. Analiza cómo cambia la conectividad del grafo en cada paso e identifica la mitad bipartita que sigue siendo 1-conectada después del paso 3 (que por lo tanto sigue siendo el modo de fallo con menor tolerancia).

Tolerancia a particiones de red

Síntesis

Ahora puedes leer arquitecturas de red como grafos bipartitos, identificar vértices de corte y rastrear la conectividad por cada mitad.

Aplica esto a las particiones de red.

Una partición de red es un corte de grafo: los bordes que cruzan la partición fallan; ambos lados siguen operando, pero no pueden alcanzar al otro.

Un sistema distribuido geográficamente tiene dos centros de datos conectados por un único enlace inter-DC. El tráfico de entrada entra a través del DC1; el de salida pasa por el DC1 hacia socios externos; algunos servicios internos residen en el DC2 y llaman de vuelta al DC1 para operaciones con estado.

Predice qué sucede si falla el enlace inter-DC: (1) qué mitades bipartitas permanecen conectadas dentro de cada DC, (2) qué flujos de tráfico continúan y cuáles se detienen, y (3) propone un cambio arquitectónico que permita al sistema tolerar esta partición con degradación acotada en lugar de una interrupción total.

Notas complementarias

Notas complementarias

Esta lección de geometría reformula la lección principal de Separación de Ingreso y Salida como un análisis de grafos bipartitos.

El próximo complemento, geometry_of_failure_modes_and_blast_radius, deriva la centralidad de intermediación (identifica nodos cuello de botella) y el corte mínimo (limita el alcance del impacto).

Muy bien.