De la egal la egal descrie cum circulă pachetele aplicațiilor, și nimic mai mult. Egalii trebuiau în continuare să se găsească unul pe altul, să demonstreze cine sunt și, uneori, să recurgă la un releu atunci când nu se putea construi o cale directă. Sunt trei servicii separate, iar o implementare poate fi de la egal la egal pentru date în timp ce este complet centralizată pentru tot restul. A compara proiecte înseamnă a compara aceste sarcini, nu săgeata din diagramă.

O diagramă fără o săgeată centrală de redirecționare poate ascunde o autoritate de înregistrare, un serviciu de descoperire și un releu, care sunt toate dependențe operaționale.

Cale directă, plan de control partajat

Două mașini care schimbă pachete direct pot depinde în continuare de o autoritate comună care le-a emis certificatele și de un serviciu care a spus fiecăreia unde se află cealaltă. Niciunul dintre cele două roluri nu redirecționează traficul aplicațiilor, motiv pentru care desenul topologiei le omite. Când acea autoritate sau acel serviciu este indisponibil, sesiunile existente pot continua în timp ce un egal nou nu se poate alătura. Diferența dintre începerea unei sesiuni și continuarea ei este prima întrebare pe care trebuie să o pui oricărui proiect.

Desenați fiecare sarcină separat chiar și atunci când o singură gazdă le îndeplinește pe toate. Altfel, desenul arată un plan de date descentralizat și ascunde realitatea operațională că fiecare egal nou are nevoie de aceleași două servicii.

Descoperire, încredere și releu sunt trei sarcini

Proiectul Nebula este un exemplu util pentru că documentația sa le ține separate. Gazdele poartă certificate pentru identitate, farurile răspund la întrebarea unde și ajută la traversarea NAT, iar releele redirecționează traficul când nu se poate stabili o cale directă. Rolul de releu este în mod deliberat distinct de rolul de far, așa că un far accesibil nu promite că o anumită pereche poate vorbi. Alte produse trasează granițele în altă parte, motiv pentru care acesta este un exemplu și nu un șablon.

Pentru o implementare propusă, notați soluția de rezervă acceptată pentru o pereche care nu se poate conecta direct. O perforare de găuri eșuată este un punct de date despre o rețea, nu o dovadă că doi egali din spatele NAT nu se pot întâlni niciodată; afirmația opusă, că conectivitatea directă funcționează sub orice politică, este la fel de nefondată.

Ce eșuează la fiecare dependență

Evaluați patru cazuri separat în timp ce dependența testată este indisponibilă: traficul existent între egali, o conexiune de egal complet nouă, un egal al cărui punct final s-a schimbat și un acces care tocmai a fost revocat. Fiecare se bazează pe servicii diferite și eșuează diferit. Sesiunile existente pot supraviețui unei căderi a descoperirii în timp ce o cheie revocată este încă refuzată, iar un egal nou poate eșua din motive care nu au nimic de-a face cu redirecționarea. Testați-le individual în loc să trageți concluzii dintr-unul singur.

O conexiune care supraviețuiește unei singure căderi nu stabilește o independență nedeterminată. Ea stabilește că defecțiunea pe care ați provocat-o nu era cea care rupe acea cale, ceea ce rămâne o informație utilă cu condiția să fi notat ce ați provocat.

Întrebați ce cădere puteți supraviețui

Cerințe care sună asemănător duc la proiecte diferite. A evita un singur punct de blocare a redirecționării nu este același lucru cu a evita un plan de control găzduit de un furnizor, și niciuna dintre cele două nu echivalează cu a continua să funcționezi în timp ce un coordonator este indisponibil. Numiți care dintre cele trei trebuie îndeplinite de implementare, apoi verificați corespondența. Un proiect care îndeplinește prima și eșuează la a doua este obișnuit și nu este necinstit, atâta timp cât nimeni nu îl numește complet descentralizat.

Notați cine operează descoperirea, încrederea și releele, și cum este înlocuit fiecare. Acea evidență este ceea ce îi permite următoarei persoane să răspundă la o întrebare reală: la ce defecțiuni supraviețuiește această rețea și cine întreține starea care rămâne partajată?

Cuvântul descentralizat își câștigă locul când numește acele defecțiuni. Fără acea listă, descrie o diagramă și nu un sistem.

Articole similare