Pozwól, że wyjaśnię to w najprostszy sposób, jaki potrafię, ponieważ ta część Walrusa na początku również mnie zdezorientowała. Walrus miał dla mnie sens dopiero po tym, jak przestałem myśleć o pamięci w zwykły sposób.
Normalnie, gdy myślimy o serwerach, zakładamy, że wymagana jest stabilność. Gdy jeden serwer zawodzi, wszystko się psuje. Gdy dwa zawiodą, ludzie wpadają w panikę. Infrastruktura jest zazwyczaj zaprojektowana tak, aby utrzymać maszyny przy życiu tak długo, jak to możliwe.
Walrus zmienia to myślenie.
Tutaj, wyłączanie węzłów jest normalne. Maszyny się odłączają, operatorzy restartują sprzęt, sieci mają zakłócenia, ludzie aktualizują konfiguracje, dostawcy odchodzą, nowi dołączają. Wszystko to jest oczekiwanym zachowaniem, a nie sytuacją awaryjną.
Walrus jest zbudowany na założeniu, że dostawcy pamięci masowej będą się nieustannie zmieniać.
A powód, dla którego to działa, jest prosty, gdy zobaczysz, jak dane są przechowywane.
Gdy dane są przesyłane do Walrus, nie żyją na jednym węźle. Blob jest dzielony na fragmenty i rozprzestrzeniany na wielu węzłach pamięci. Każdy węzeł przechowuje tylko część danych, a nie całość.
I to jest część, która ma znaczenie: aby odzyskać oryginalne dane, nie potrzebujesz każdego fragmentu. Potrzebujesz tylko wystarczającej liczby fragmentów.
Więc żaden pojedynczy węzeł nie jest krytyczny.
Jeśli jutro znikną niektóre węzły, pobieranie nadal działa. System po prostu pobiera fragmenty z dowolnych węzłów, które są online i odbudowuje blob.
Większość czasu nikt nawet nie zauważa, że węzły odchodzą.
Dlatego sieć nie panikuje za każdym razem, gdy coś się zmienia. Węzły nie pozostają online idealnie. Czasami operatorzy wyłączają maszyny, aby coś naprawić. Czasami połączenia po prostu znikają. Czasami węzeł znika na chwilę, a potem pojawia się ponownie później.
Tego rodzaju ruch jest po prostu normalny dla sieci takiej jak ta.
Walrus nie spieszy się z przetasowaniem danych za każdym razem, gdy węzeł na chwilę znika. Gdyby tak było, sieć ciągle przesuwałaby fragmenty, co w rzeczywistości spowolniłoby rzeczy i uczyniło je bardziej niestabilnymi zamiast bezpiecznymi.
Zamiast tego, pozostaje spokojny i reaguje tylko wtedy, gdy wystarczająca liczba danych faktycznie zaczyna znikać.
Zamiast tego, Walrus czeka, aż dostępność fragmentów faktycznie stanie się ryzykowna.
Dopóki wystarczająca liczba kawałków danych nadal istnieje, wszystko po prostu działa.
Innymi słowy, małe zmiany w węzłach naprawdę nie zakłócają systemu, ponieważ sieć już ma wystarczającą liczbę kawałków, aby odbudować dane w każdym razie.
Tylko gdy dostępność spada poniżej bezpiecznych poziomów, naprawa staje się konieczna.
Ta logika progowa jest ważna. Utrzymuje system stabilnym zamiast reagować przesadnie.
Weryfikacja również odgrywa tutaj rolę. Węzły pamięci masowej regularnie udowadniają, że nadal przechowują fragmenty, które zgodziły się zachować. Węzły, które wielokrotnie nie przechodzą kontroli, powoli przestają otrzymywać nowe zobowiązania dotyczące pamięci.
Niezawodni dostawcy nadal uczestniczą. Niezawodni naturalnie znikają. Ale ta zmiana zachodzi stopniowo, a nie jako nagłe usunięcia, które łamią pamięć.
Odpowiedzialność przemieszcza się powoli w sieci, zamiast powodować zakłócenia.
Z perspektywy aplikacji sprawia to, że życie jest łatwiejsze. Aplikacje przechowujące dane w Walrus nie muszą się martwić za każdym razem, gdy węzeł staje się offline. Dopóki finansowanie trwa, a wystarczająca liczba fragmentów pozostaje przechowywana, pobieranie trwa normalnie.
Ale ważne jest, aby być jasnym co do ograniczeń.
Walrus gwarantuje pobieranie tylko wtedy, gdy wystarczająca liczba fragmentów pozostaje dostępna i zobowiązania przechowywania pozostają finansowane. Jeśli zniknie zbyt wiele fragmentów, ponieważ węzły odchodzą lub finansowanie wygasa, rekonstrukcja ostatecznie się nie udaje.
Redundancja toleruje awarie. Nie może odzyskać danych, których nikt już nie przechowuje.
Inna rzeczywistość jest taka, że dostawcy pamięci masowej zmagają się z rzeczywistymi ograniczeniami operacyjnymi. Przestrzeń dyskowa jest ograniczona. Przepustowość kosztuje pieniądze. Kontrole weryfikacyjne i ruch pobierania zużywają zasoby. Płatności WAL rekompensują dostawcom za ciągłe przechowywanie i serwowanie fragmentów.
Pamięć to ciągła praca, a nie tylko zapisanie danych raz.
W rzeczywistym użyciu dziś, Walrus zachowuje się przewidywalnie dla zespołów, które rozumieją te mechanizmy. Przesyłanie danych szeroko rozdziela fragmenty. Finansowane przechowywanie utrzymuje dane dostępne. Pobieranie trwa nawet gdy węzły przychodzą i odchodzą w tle.
To, co nadal wymaga poprawy, to narzędzia do zarządzania cyklem życia. Twórcy nadal muszą śledzić, kiedy finansowanie pamięci wygasa i odnawiać zobowiązania samodzielnie. Lepsza automatyzacja prawdopodobnie przyjdzie później przez narzędzia ekosystemu, a nie zmiany w protokole.
Gdy to do mnie dotarło, rotacja węzłów przestała wyglądać jak ryzyko. To po prostu część tego, jak działają rozproszone sieci, a Walrus jest zaprojektowany tak, aby cicho wchłaniać tę niestabilność.
I dlatego przez większość czasu aplikacje nadal normalnie pobierają dane, nawet gdy sieć pamięci masowej pod spodem ciągle się zmienia.
