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

un

ospite
1 / ?
torna alle lezioni

Ingresso e Uscita come insiemi distinti

Grafi bipartiti nell'architettura di rete

Un grafo bipartito divide i nodi in due insiemi, consentendo spigoli solo tra gli insiemi (mai all'interno di un insieme).

I confini di rete hanno una struttura bipartita naturale:

- Lato di ingresso: client esterni su un lato, servizi interni sull'altro. Spigoli: richieste esterne in entrata, risposte interne in uscita.

- Lato di uscita (Egress): servizi interni su un lato, destinazioni esterne sull'altro. Archi: servizi interni che iniziano chiamate in uscita, risposte esterne che tornano indietro.

L'asimmetria:

- Ingresso: l'insieme delle origini è illimitato (chiunque su Internet). L'insieme delle destinazioni è piccolo (pochi servizi). Il volume scala con gli utenti.

- Uscita (Egress): l'insieme delle origini è piccolo (pochi servizi interni). L'insieme delle destinazioni è limitato (pochi partner noti). Il volume scala con l'attività interna.

Il design a scatola singola (single-box) collassa entrambe le metà bipartite attraverso un unico nodo. Quel nodo ha un fan-in dall'esterno (ingresso) E un fan-in dall'interno (direzione inversa dell'uscita). Il carico del nodo = somma di entrambi i lati.

Il design separato (split design) preserva entrambe le metà bipartite su nodi distinti. Ogni nodo gestisce un ruolo con il suo asse di scalabilità appropriato.

Ingresso e uscita bipartiti: insiemi di nodi separati, vertici di taglio separati

Disegna il grafo bipartito per un piccolo SaaS: 5 endpoint di clienti esterni (che inviano richieste in ingresso), 3 servizi interni (i backend) e 4 API di partner esterni (chiamate in uscita). Identifica quali archi appartengono alla metà bipartita di ingresso e quali alla metà bipartita di uscita. Prevedi cosa accade alla connettività del grafo se uno dei servizi interni fallisce.

Prima della Separazione: Un Vertice di Taglio Ovunque

Scatola Singola: Un Vertice Tiene Tutto

Prima della separazione, un singolo proxy box si trova tra ogni coppia esterno/interno. In termini di grafo, è un vertice di taglio di alto ordine: la sua rimozione disconnette tutti i client da tutti i backend E tutti i servizi interni da tutti i partner esterni.

La connettività in questo nodo è 1. Qualsiasi elemento che disturbi questo nodo (crash del processo, guasto di rete, OOM kill) disconnette ogni percorso dipendente.

Dopo la separazione: il vertice di taglio viene sostituito da due nodi più leggeri

La separazione in ingress + egress crea due nodi del grafo dove ce n'era uno. Ogni nodo ora si trova solo su una metà bipartita:

- Nodo ingress: vertice di taglio per la metà bipartita dai client esterni ai servizi interni

- Nodo egress: vertice di taglio per la metà bipartita dai servizi interni ai partner

Il loop hairpin scompare geometricamente: nel grafo a box singolo, un servizio interno che cercava di raggiungere un servizio rivolto verso l'esterno tramite l'indirizzo pubblico doveva attraversare lo stesso vertice due volte (in uscita tramite il ruolo egress, poi in entrata tramite il ruolo ingress). Nel grafo separato, l'attraversamento colpisce due vertici diversi.

La connettività per lato rimane a 1, ma i due vertici di taglio possono essere sostituiti indipendentemente. L'aggiunta di un secondo proxy ingress porta la connettività del lato ingress a 2 senza modificare il lato egress.

Replica per lato

Le flotte di produzione spesso eseguono 2+ proxy di ingresso (HA) E 2+ proxy di uscita (HA). Ogni lato raggiunge una connettività 2 in modo indipendente. La capacità si scala orizzontalmente su ciascun lato secondo necessità.

Un team attualmente esegue un singolo proxy box (singolo vertice di taglio per entrambe le direzioni). Lo divide in un ingresso + un'uscita, quindi in seguito aggiunge un secondo ingresso (coppia HA) ma mantiene un'unica uscita. Analizza come cambia la connettività del grafo a ogni passaggio e identifica la metà bipartita che è ancora 1-connessa dopo il passaggio 3 (che è quindi ancora il modo di guasto con la tolleranza più bassa).

Tolleranza alle partizioni di rete

Sintesi

Ora puoi leggere le architetture di rete come grafi bipartiti, identificare i vertici di taglio e tracciare la connettività per ciascuna metà.

Applica questo concetto alle partizioni di rete.

Una partizione di rete è un taglio nel grafo: i collegamenti che attraversano la partizione falliscono; entrambi i lati continuano a funzionare ma non possono raggiungere l'uno l'altro.

Un sistema distribuito geograficamente dispone di due data center collegati da un unico collegamento inter-DC. Il traffico in ingresso entra tramite DC1; il traffico in uscita passa attraverso DC1 verso i partner esterni; alcuni servizi interni risiedono in DC2 e richiamano DC1 per operazioni con stato.

Prevedi cosa succede se il collegamento inter-DC fallisce: (1) quali metà bipartite rimangono connesse all'interno di ciascun DC, (2) quali flussi di traffico continuano e quali si interrompono, e (3) proponi una modifica architetturale che consenta al sistema di tollerare questa partizione con un degrado limitato anziché un'interruzione totale.

Note di accompagnamento

Note di accompagnamento

Questa lezione di geometria ricalca la lezione principale Separazione Ingresso e Uscita come un'analisi di grafo bipartito.

Il prossimo accompagnamento, geometry_of_failure_modes_and_blast_radius, deriva la centralità di betweenness (identifica i nodi collo di bottiglia) e il min-cut (fissa i limiti del raggio d'impatto).

Ben fatto.