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.
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.
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.
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.