Pohrana i usmjeravanje podataka u decentraliziranim aplikacijama
Ovo je prvi članak u nizu koji istražuje temeljne koncepte modernih decentraliziranih sustava, uključujući mrežu Keep.
Kako biste brzo i učinkovito pohranili i dohvatili velike količine podataka? A kad kažem veliko, mislim redom egzabajta. Ovo je prvi dio dvodijelnog niza o spremanju i dohvatu podataka za mrežu Keep.
Pohranjivanje podataka ogroman je problem, a on se pogoršava s generiranjem više digitalnih sadržaja i više podataka pohranjenih u oblaku. Rješenje se može pronaći u nečemu što se naziva Distributed Hash Tables ili DHT. U ovom prvom dijelu naše serije istražit ćemo što su DHT i kako ih koriste dobro poznati entiteti kao što su BitTorrent i Storj, te nove mreže poput IPFS-a.
DHT-ovi su trenutno područje značajnih inovacija i jedan su od temeljnih gradivnih elemenata distribuirane tehnologije. Oni čine okosnicu pohrane datoteka i otkrivanja čvorova, što je bitna potreba klijenta Keep. Klijenti moraju biti u mogućnosti pronaći se i dijeliti podatke kako bi bili produktivni članovi mreže. Stoga je dobar DHT važan za uspjeh Keapa.
Prije nego što dublje zaronimo u distribuirane hash tablice, pregledajmo brzo što je hash tablica i kako funkcionira.
Hash tablica
Hash tablica, poznata i kao hash karta, vrsta je strukture podataka. Da bismo razumjeli hash tablicu, poslužimo se policom knjiga u knjizi kao primjer. U tipičnoj biblioteci, Deweyev decimalni sustav (DDS) koristi se za stvaranje identifikacijskog broja za pohranu koji se naziva pozivni broj, a koji svakoj knjizi daje određeno mjesto smještaja za pohranu i preuzimanje. To se generira primjenom pravila Dewey-jevog decimalnog sustava na knjigu koja se temelji na kategoriji u koju spada. Police knjižnica imaju brojeve koji odgovaraju rasponu brojeva poziva dostupnih putem DDS-a.
Možda se sjećate iz školskih dana da je ovo vrlo lako pronašlo knjige. Sve što je trebalo bilo je potražiti broj poziva knjige, a zatim se kretati kroz knjižnicu koristeći kartu mjesta na kojoj su se nalazili redovi polica s knjigama s prefiksima određenog broja. Kad ste pronašli redak s točnim prefiksom, mogli biste pronaći knjigu slijedeći se redom slijedeći brojeve na pojedinoj polici dok ne pronađete knjigu koju ste željeli.
Vratimo se iz zemlje knjiga u zemlju bitova. Deweyev decimalni sustav dodjeljivanja pozivnih brojeva u mnogo je razloga vrlo jednostavna hash funkcija, a pozivni broj hash vrijednost. Knjige se mogu gledati kao “podaci”, a police su analogne mjestima za pohranu podataka s hash vrijednostima kako bi ih se jedinstveno prepoznalo. Konačno, vaša sposobnost mapiranja mozga i prostornog prostora jednaka je algoritmu usmjeravanja koji vam omogućuje da koristite hash vrijednost knjige da biste je dohvatili s mjesta pohrane.
Hash funkcija, hash vrijednost i algoritam usmjeravanja ključni su elementi hash tablice. Hash tablica ih koristi za pohranu i dohvat velike količine podataka trenutno i bez pogreške. Da bi se to postiglo, hash funkcija, hash vrijednost i algoritam usmjeravanja moraju imati vrlo specifičnu funkcionalnost.
Hash funkcija mora biti deterministička, što znači da postoji jedno prema jedno mapiranje između ulaza i izlaza. Vrijednost raspršivanja mora pripadati dovoljno velikom prostoru s identifikacijskim brojem da bi se mogla pohraniti velika količina podataka. Da bi mogao trenutno dohvatiti velike količine podataka, algoritam usmjeravanja mora biti učinkovit; to znači da treba dohvatiti i pohraniti podatke s mjesta s najmanje operacija.
Od hash tablica do distribuiranih hash tablica
Da bismo stekli razumijevanje rada DHT-a na visokoj razini, možemo proširiti našu analogiju knjižnica tako da uključuje knjižnice iz različitih zemalja i kontinenata. Pretpostavimo da smo željeli korisnicima omogućiti pristup knjigama koje se nalaze bilo gdje u svijetu. Da bih to učinio, želio bih vas predstaviti našem knjižničaru Tomu.
Kao knjižničar, Tom je odgovoran za spremanje knjiga i pronalazak knjiga za posjetitelje knjižnice. Radi u lokalnoj knjižnici u Denveru u Koloradu. Ova knjižnica može pohraniti priličan broj knjiga, ali ne i sve knjige koje posjetitelji lokalne knjižnice mogu poželjeti.
Da je naš knjižnični sustav strukturiran slično distribuiranoj hash tablici, Tomova knjižnica bila bi jedan čvor u mreži. Da bi pronašao knjigu u mreži, Tom bi imao popis najbliže biblioteke do koje može prvo doći i provjeriti je li dostupna tražena knjiga. Ako nitko od njih nije imao knjigu, obratili bi se najbližim knjižnicama, i tako sve dok knjiga nije pronađena ili dok nije ostala nijedna knjižnica.
Nadalje, budući da se sve knjige ne mogu pohraniti u svaku knjižnicu, sustav bi mogao neke knjižnice učiniti odgovornima za neke, a ne za druge. Odgovornost se može dodijeliti na temelju metapodataka knjiga kao što su zemlja porijekla, jezik itd.
Još jednom, od zemlje knjiga do zemlje bitova, u tipičnoj distribuiranoj hash tablici, podaci se pohranjuju na mnogim čvorovima (knjižnicama) koji ulaze i izlaze iz sustava. DHT protokol određuje način na koji se podaci raspoređuju među tim čvorovima, osiguravajući da ih se lako može potražiti i dohvatiti.
Evolucija distribuiranih hash tablica
Pojava uobičajenih distribuiranih hash tablica dogodila se krajem 1990-ih i početkom 2000-ih, podudarajući se s pojavom P2P sustava kao što su Gnutella, Freenet, Napster i BitTorrent. Ti su sustavi nastojali iskoristiti raspodijeljene resurse za pohranu i računanje te su razvili vlastite protokole koji odgovaraju njihovim potrebama.
Slijedi nekoliko značajnih, ali ne sveobuhvatnih događaja u povijesti DHT-a:
Napster
Napster je koristio središnji poslužitelj za indeksiranje kako bi pružio “popis domaćina” korisnika koji su trenutno prijavljeni u sustav. Poslužitelj nije sadržavao datoteke, ali je na popisu domaćina imao popis datoteka koje su korisnici ugostili. Kad je korisnik tražio datoteku pomoću Napster klijenta, poslužitelj bi pregledavao popis hosta i njihov popis datoteka kako bi vidio tko ih ima i podnositelju zahtjeva pružio popis hostova koji su imali svoju datoteku. Korisnikov Napster klijent tada bi uspostavio vezu s hostom kojeg je odabrao korisnik i pokrenuo preuzimanje. Klijent bi prekinuo vezu nakon završetka preuzimanja
Ako primijenimo svoju knjižničnu analogiju na Napster, bilo bi to kao da imamo središnju knjižnicu koja je odgovorna za pohranu mjesta knjiga u svim knjižnicama koje su ikad s njom komunicirale. Ako je korisnik želio knjigu, prvo će trebati kontaktirati središnju knjižnicu, potražiti podatke o knjižnici u kojoj se knjiga nalazi, a zatim se obratiti toj knjižnici kako bi je preuzeo.
Ključni nedostatak Napstera kao DHT-a bio je njegov središnji indeksni poslužitelj, koji je stvorio jednu točku kvara za sustav.
BitTorrent
BitTorrent je izumio moderni DHT. Usluga je pokrenuta 2005. na glavnom DHT protokolu. Mainline DHT vrlo je dobar distribuirani sustav i poboljšanje je u odnosu na Napster sustav jer nema središnje točke kvara. Sustav se organsko prilagođava čvorovima koji ulaze i napuštaju sustav. Ovaj je aspekt ključan za funkcioniranje BitTorrenta, jer je brzina odljeva velika jer se korisnici širom svijeta pridružuju i napuštaju sustav u nepredvidivim vremenima.
BitTorrent sustav više nalikuje pravom DHT-u. Gore opisani distribuirani sustav knjižnice dobar je pogled na visoku razinu kako funkcionira BitTorrent sustav.
Storj
Storj ljude s potrebama za pohranom povezuje s pružateljima usluga pohrane putem pametnih ugovora putem protokola Storj. Protokol Storj koristi modificiranu verziju protokola Kademlia, koja dijeli mnoge značajke BitTorrent Mainline DHT-a.
IPFS
Slično svjetskoj mreži, IPFS (Inter Planetary File System) je distribuirani sustav datoteka koji povezuje čvorove koji sadrže određene vrste datoteka. Za razliku od svjetske mreže, sadržaj se ne pohranjuje na pojedinačnim poslužiteljima već se distribuira na nekoliko čvorova. Kako bi distribuirao ovaj sadržaj, IPFS koristi BitTorrent poput DHT protokola, koji je razvio Protocol Labs. IPFS je otvoreni izvor, a nedavno ga je Katalonska piratska stranka koristila za domaćinstvo web stranica koje je blokirao Ustavni sud Španjolske.
Filecoin
Filecoin je distribuirana mreža za pohranu koja koristi elemente protokola IPFS zajedno s poticajnim slojem za pružatelje usluga pohrane. Protokol za Filecoin trenutno razvija Protocol Labs, ista grupa koja razvija IPFS.
Keep
DHT-ovi su kritični alat u alatu Keep. Slično kao i gore navedeni slučajevi korištenja, klijenti programa Keep bit će rašireni po cijelom svijetu i osjetit će se brzinom. Uz to, oni također mogu doživjeti napade zlonamjernih entiteta i protokol Keep mora se kontinuirano razvijati kako bi bio otporan.
Keep će koristiti DHT-ove za stvaranje robusnog distribuiranog protokola koji može udovoljiti tim potrebama i biti podložan razvoju otvorenog koda. Biti otvoren izvor omogućit će globalnoj mreži neovisnih programera da inoviraju protokol. Jedan od prvih napora tima Keep-a bit će upotreba mrežnog snopa libp2p otvorenog koda kako bi se omogućilo otkrivanje klijenata Keep-a. Pratite nas za drugi dio naše decentralizirane obrazovne serije koju ima Keepov vlastiti Nik Grinkevič o mreži libp2p.
Saznajte više
Za više informacija o mreži Keep:
• Pridružite nam se na Redditu.
• Pogledajte našu tehničku knjigu.
• Pročitajte naš poslovni priručnik.
• Pretplatite se na ažuriranja putem e-pošte.
• Pratite nas na Twitteru.
• Pridružite se našem Slacku.
• Pridružite se našem Telegramu.