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

un

visitante
1 / ?

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.

Ingresso e egresso bipartido: conjuntos de nós separados, vértices de corte separados

Desenhe o gráfico bipartido para um pequeno SaaS: 5 pontos de extremidade de clientes externos (enviando solicitações de entrada), 3 serviços internos (os backends) e 4 APIs de parceiros externos (chamados de saída). Identifique quais vértices pertencem à metade bipartida de ingresso e quais pertencem à metade bipartida de egresso. Prediga o que acontece com a conectividade do gráfico se um dos serviços internos falhar.

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.

Uma equipe atualmente opera uma caixa de proxy (um vértice de corte único para ambas as direções). Eles dividem em uma entrada + uma saída, depois adicionam uma segunda entrada (pare HA) mas mantêm uma única saída. Vá andando no grafico de conexão em cada etapa e identifique a metade bipartida que ainda está 1-conectada após o passo 3 (o que é, portanto, ainda o modo de falha de tolerância mais baixo).

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.

Preste atenção ao que acontece se a ligação entre DC falhar: (1) quais metades bipartidas ficam conectadas dentro de cada DC, (2) quais fluxos de tráfego continuam e quais param, e (3) propõe uma mudança arquitetural que permitiria que o sistema tolerasse essa partição com degradação limitada em vez de uma saída total.

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.