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