Entrada e Saída como Conjuntos Distintos
Gráficos Bipartidos na Arquitetura de Rede
Um gráfico bipartido divide os nós em dois conjuntos, com arestas permitidas apenas entre conjuntos (nunca dentro de um conjunto).
As fronteiras de rede têm uma estrutura bipartida natural:
- Lado de ingresso: clientes externos no lado esquerdo, serviços internos no lado direito. Arestas: solicitações externas entrando, respostas internas saindo.
- Lado de egresso: serviços internos no lado esquerdo, destinos externos no lado direito. Arestas: serviços internos iniciando chamadas para fora, respostas externas voltando.
A assimetria:
- Ingresso: conjunto de origem ilimitado (qualquer um na internet). Conjunto de destino pequeno (apenas alguns serviços). Volume escala com o número de usuários.
- Egresso: conjunto de origem pequeno (apenas alguns serviços internos). Conjunto de destino limitado (apenas parceiros conhecidos). Volume escala com a atividade interna.
Design de um único box colapsa as duas metades bipartidas através de um nó. Esse nó tem fan-in de fora (ingresso) E fan-in de dentro (direção reversa do egresso). A carga do nó = soma de ambos os lados.
Design dividido preserva as duas metades bipartidas em nós separados. Cada nó manipula uma função com o eixo de escala apropriado.
Antes da Divisão: Um Vértice de Corte em Todo Lugar
Caixa Única: Todo Mundo Está no Vértice
Antes da divisão, uma única caixa de proxy fica entre todo par externo/interno. Em termos de gráfico, é um vértice de corte de alto grau: sua remoção desconecta todos os clientes de todos os backends E todos os serviços internos de todos os parceiros externos.
Conectividade neste nó = 1. Qualquer coisa que interrompa este nó (crash de processo, travamento de rede, kill OOM) desconecta todos os caminhos dependentes.
Depois da Divisão: Vértice de Corte Substituído por Dois Nós Menores
Dividindo em entrada + saída cria dois nós de gráfico onde havia um. Cada nó agora fica em apenas uma metade bipartida:
- Nó de entrada: vértice de corte para a metade bipartida externo-clientes-internos-serviços
- Nó de saída: vértice de corte para a metade bipartida serviços-internos-para-parceiros
O laço de cabelo desaparece geometricamente: no gráfico único, um serviço interna tentando alcançar um serviço externamente exposto via endereço público exigia percorrer o mesmo vértice duas vezes (saindo via papel de saída, então entrando via papel de entrada). No gráfico dividido, a travessia atinge dois vértices diferentes.
Conectividade por lado fica em 1, mas os dois vértices de corte podem ser substituídos independentemente. Adicionar uma segunda caixa de proxy ingresso aumenta a conectividade do lado de entrada para 2 sem alterar o lado de saída.
Replicação por Lado
Frotas de produção geralmente executam 2+ proxies de entrada (HA) E 2+ proxies de saída (HA). Cada lado atinge conectividade 2 independentemente. A capacidade escala horizontalmente em cada lado conforme necessário.
Tolerância a Partição de Rede
Sinopse
Agora você pode ler arquiteturas de rede como grafos bipartidos, identificar vértices de corte e rastrear a conectividade por metade.
Aplique isso às partições de rede.
Uma partição de rede é uma corte de grafos: as arestas que cruzam a partição falham; ambos os lados continuam operando, mas não podem se alcançar um ao outro.
Um sistema geograficamente distribuído tem dois datacenters conectados por um único link inter-DC. O tráfego de entrada entra por meio do DC1; o tráfego de saída passa pelo DC1 para parceiros externos; alguns serviços internos vivem no DC2 e chamam de volta para o DC1 para operações estatais.
Notas de Acompanhamento
Notas de Acompanhamento
Esta geometria-aula reformula a lição principal de Separação de Ingresso e Egresso como uma análise de grafos bipartidos.
A próxima companheira, geometry_of_failure_modes_and_blast_radius, deriva centralidade de entretenimento (identifica nós de garganta) e corte mínimo (limita o raio de explosão).
Bem feito.