Permite-mi să explic acest lucru în cel mai simplu mod posibil, pentru că această parte a Walrus m-a confundat și pe mine la început. Walrus a avut sens pentru mine doar după ce am încetat să mă gândesc la stocare în mod obișnuit.
În mod normal, când ne gândim la servere, presupunem că stabilitatea este necesară. Un server eșuează și lucrurile se strică. Două eșuează și oamenii intră în panică. Infrastructura este de obicei concepută pentru a menține mașinile active cât mai mult timp posibil.
Walrus răstoarnă această gândire.
Aici, nodurile care ies offline sunt normale. Mașinile se deconectează, operatorii repornesc hardware-ul, rețelele au erori, oamenii își actualizează setările, furnizorii pleacă, alții noi se alătură. Toate acestea sunt comportamente așteptate, nu o urgență.
Așadar, Walrus este construit pe presupunerea că furnizorii de stocare se vor schimba constant.
Și motivul pentru care acest lucru funcționează este simplu odată ce vezi cum sunt stocate datele.
Când datele sunt încărcate în Walrus, ele nu trăiesc pe un singur nod. Blob-ul este tăiat în fragmente și distribuit pe multe noduri de stocare. Fiecare nod deține doar o porțiune din date, nu întregul lucru.
Și aceasta este partea care contează: pentru a obține datele originale înapoi, nu ai nevoie de fiecare fragment. Ai nevoie doar de suficiente fragmente.
Așadar, niciun nod singular nu este critic.
Dacă unele noduri dispar mâine, recuperarea încă funcționează. Sistemul pur și simplu extrage fragmente de la oricare noduri sunt online și reconstruiește blob-ul.
Cel mai adesea, nimeni nu observă chiar nodurile care pleacă.
De aceea rețeaua nu intră în panică de fiecare dată când ceva se schimbă. Nodurile nu rămân online perfect. Uneori, operatorii opresc mașinile pentru a repara ceva. Uneori, conexiunile pur și simplu cad. Uneori, un nod dispare pentru o perioadă și apoi reapare mai târziu.
Acest tip de mișcare este pur și simplu normal pentru o rețea ca aceasta.
Așadar, Walrus nu se grăbește să reorganizeze datele de fiecare dată când un nod dispare pentru o perioadă. Dacă ar face asta, rețeaua ar continua să mute fragmente în jur tot timpul, ceea ce ar face lucrurile mai lente și mai instabile în loc de mai sigure.
În loc de aceasta, se menține calm și reacționează doar dacă suficiente piese de date încep cu adevărat să dispară.
În schimb, Walrus așteaptă până când disponibilitatea fragmentelor devine cu adevărat riscantă.
Atâta timp cât suficiente piese din date sunt încă acolo, totul continuă să funcționeze.
Cu alte cuvinte, schimbările mici ale nodurilor nu deranjează cu adevărat sistemul deoarece rețeaua are deja suficiente piese pentru a reconstrui datele oricum.
Numai când disponibilitatea scade sub niveluri sigure devine necesară recuperarea.
Această logică a pragului este importantă. Menține sistemul stabil în loc să reacționeze excesiv.
Verificarea joacă de asemenea un rol aici. Nodurile de stocare dovedesc regulat că încă stochează fragmentele pe care au convenit să le păstreze. Nodurile care nu trec repetat verificările încet încetează să primească noi angajamente de stocare.
Furnizorii de încredere continuă să participe. Cei nesiguri, în mod natural, dispar. Dar această schimbare se întâmplă treptat, nu ca niște eliminări bruște care rup stocarea.
Responsabilitatea se mișcă încet prin rețea în loc să cauzeze disfuncții.
Din perspectiva unei aplicații, acest lucru face viața mai ușoară. Aplicațiile care stochează date pe Walrus nu trebuie să-și facă griji de fiecare dată când un nod devine offline. Atâta timp cât finanțarea continuă și suficiente fragmente rămân stocate, recuperarea continuă în mod normal.
Dar este important să fie clar cu privire la limite.
Walrus garantează recuperarea doar atâta timp cât suficiente fragmente rămân disponibile și angajamentele de stocare rămân finanțate. Dacă dispar prea multe fragmente pentru că nodurile pleacă sau finanțarea expiră, reconstrucția eșuează în cele din urmă.
Redundanța tolerează eșecurile. Nu poate recupera date pe care nimeni nu le mai stochează.
O altă realitate aici este că furnizorii de stocare se confruntă cu constrângeri operaționale reale. Spațiul pe disc este limitat. Lățimea de bandă costă bani. Verificările și traficul de recuperare consumă resurse. Plățile WAL compensează furnizorii pentru stocarea și servirea continuă a fragmentelor.
Stocarea este o muncă continuă, nu doar salvarea datelor o singură dată.
În utilizarea reală de astăzi, Walrus se comportă predictibil pentru echipele care înțeleg aceste mecanisme. Încărcările distribuie fragmente pe scară largă. Stocarea finanțată menține datele disponibile. Recuperarea continuă chiar și în timp ce nodurile vin și pleacă în fundal.
Ceea ce mai trebuie îmbunătățit este instrumentele de gestionare a ciclului de viață. Constructorii trebuie încă să urmărească când expiră finanțarea pentru stocare și să-și reînnoiască angajamentele singuri. O mai bună automatizare va veni probabil mai târziu prin instrumente din ecosistem, mai degrabă decât prin schimbări de protocol.
Odată ce acest lucru a fost clar pentru mine, fluctuațiile nodurilor au încetat să pară un risc. Este pur și simplu parte din modul în care se comportă rețelele distribuite, iar Walrus este proiectat să absoarbă acea instabilitate în tăcere.
Și de asta, cel mai adesea, aplicațiile continuă să recupereze date în mod normal chiar și în timp ce rețeaua de stocare de dedesubt continuă să se schimbe.
