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

un

visitante
1 / ?

Ingresso e Egresso como Conjuntos Distintos

Grafos Bipartidos na Arquitetura de Redes

Um grafo bipartido divide os nós em dois conjuntos, permitindo arestas apenas entre os conjuntos (nunca dentro de um mesmo conjunto).

As fronteiras de rede possuem uma estrutura bipartida natural:

- Lado de Ingresso: clientes externos de um lado, serviços internos do outro. Arestas: solicitações externas entrando, respostas internas saindo.

- Lado de egresso: serviços internos de um lado, destinos externos do outro. Arestas: serviços internos iniciando chamadas de saída, respostas externas voltando.

A assimetria:

- Ingresso: o conjunto de origem é ilimitado (qualquer pessoa na internet). O conjunto de destino é pequeno (alguns serviços). O volume escala com os usuários.

- Egresso: o conjunto de origem é pequeno (alguns serviços internos). O conjunto de destino é limitado (alguns parceiros conhecidos). O volume escala com a atividade interna.

Design de caixa única colapsa ambas as metades bipartidas através de um único nó. Esse nó tem entrada (fan-in) de fora (ingresso) E entrada (fan-in) de dentro (direção reversa do egresso). A carga do nó = soma de ambos os lados.

Design dividido preserva ambas as metades bipartidas em nós separados. Cada nó lida com um papel com seu eixo de escala apropriado.

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

Desenhe o grafo bipartido para um pequeno SaaS: 5 endpoints de clientes externos (enviando requisições para dentro), 3 serviços internos (os backends) & 4 APIs de parceiros externos (chamadas para fora). Identifique quais arestas pertencem à metade bipartida de ingresso e quais pertencem à metade bipartida de egresso. Preveja o que acontece com a conectividade do grafo se um dos serviços internos falhar.

Antes da Divisão: Um Vértice de Corte em Todo Lugar

Caixa Única: Um Vértice Sustenta Tudo

Antes da divisão, uma única caixa de proxy fica entre cada par externo/interno. Em termos de grafo, é um vértice de corte de alta ordem: sua remoção desconecta todos os clientes de todos os backends E todos os serviços internos de todos os parceiros externos.

A conectividade neste nó é 1. Qualquer coisa que perturbe este nó (crash do processo, falha de rede, OOM kill) desconecta todos os caminhos dependentes.

Após a Divisão: Vértice de Corte Substituído por Dois Nós Mais Leves

A divisão em ingress + egress cria dois nós de grafo onde havia um. Cada nó agora fica em apenas uma metade bipartida:

- Nó de ingress: vértice de corte para a metade bipartida de clientes externos para serviços internos

- Nó de egress: vértice de corte para a metade bipartida de serviços internos para parceiros

O loop hairpin desaparece geometricamente: no grafo de caixa única, um serviço interno tentando alcançar um serviço voltado para o exterior via endereço público exigia a travessia do mesmo vértice duas vezes (saída via o papel de egress, e entrada via o papel de ingress). No grafo dividido, a travessia atinge dois vértices diferentes.

A conectividade por lado permanece em 1, mas os dois vértices de corte podem ser substituídos independentemente. Adicionar um segundo proxy de ingress aumenta a conectividade do lado de ingress para 2 sem alterar o lado de egress.

Replicação por Lado

Frotas de produção frequentemente executam 2+ proxies de entrada (HA) E 2+ proxies de saída (HA). Cada lado atinge conectividade 2 de forma independente. A capacidade escala horizontalmente em cada lado conforme necessário.

Uma equipe atualmente executa um único servidor de proxy (vértice de corte único para ambas as direções). Eles o dividem em um de entrada + um de saída, e depois adicionam um segundo de entrada (par HA), mas mantêm um único de saída. Analise como a conectividade do grafo muda em cada etapa e identifique a metade bipartida que ainda é 1-conectada após a etapa 3 (que, portanto, ainda é o modo de falha com menor tolerância).

Tolerância a Partições de Rede

Síntese

Agora você pode ler arquiteturas de rede como grafos bipartitos, identificar vértices de corte e rastrear a conectividade por metade.

Aplique isso a partições de rede.

Uma partição de rede é um corte de grafo: as arestas através da partição falham; ambos os lados continuam operando, mas não podem se alcançar mutuamente.

Um sistema geograficamente distribuído possui dois datacenters conectados por um único link inter-DC. O tráfego de entrada entra via DC1; o tráfego de saída passa pelo DC1 para parceiros externos; alguns serviços internos estão no DC2 e fazem chamadas de volta ao DC1 para operações com estado.

Preveja o que acontece se o link inter-DC falhar: (1) quais metades bipartitas permanecem conectadas dentro de cada DC, (2) quais fluxos de tráfego continuam e quais param, e (3) proponha uma mudança arquitetural que permitiria ao sistema tolerar essa partição com degradação limitada, em vez de uma falha total.

Notas Complementares

Notas Complementares

Esta lição de geometria reinterpreta a lição principal Separação de Ingresso e Egresso como uma análise de grafo bipartido.

A próxima nota complementar, geometry_of_failure_modes_and_blast_radius, deriva a centralidade de intermediação (identifica nós de gargalo) e o corte mínimo (limita o raio de impacto).

Muito bem.