Un sistem distribuit, în definiția sa cea mai simplă, este un grup de computere care lucrează împreună și care apar ca unul singur pentru utilizatorul final. Mașinile au o stare comună, rulează concomitent și pot funcționa independent, fără a afecta timpul de funcționare al întregului sistem. Adevărul este că gestionarea unor astfel de sisteme este un subiect complex, plin de capcane.
Prezentare generală asupra sistemului
Sistemul distribuit permite partajarea resurselor (inclusiv software) conectate la rețea în același timp.
Exemple de distribuție de sistem:
- Stiva tradițională. Aceste baze de date sunt stocate pe sistemul de fișiere al unei mașini. Ori de câte ori utilizatorul dorește să primească informații, el comunică direct cu acest aparat. Pentru a distribui acest sistem de baze de date, trebuie să îl rulați pe mai multe computere în același timp.
- Arhitectură distribuită.
Sistem distribuitvă permite să scalați orizontal și vertical. De exemplu, singura modalitate de a gestiona mai mult trafic ar fi actualizarea hardware-ului care rulează baza de date. Aceasta se numește scalare verticală. Scalare verticală este bună până la o anumită limită, după care nici cel mai bun echipament nu poate face față furnizării traficului necesar.
Scalarea orizontală înseamnă adăugarea mai multor computere, nu actualizarea hardware-ului pe unul singur. Scalare verticală crește performanța la cele mai recente capabilități hardware în sistemele distribuite. Aceste oportunități nu sunt suficiente pentru companiile de tehnologie cu sarcini de lucru moderate până la grele. Cel mai bun lucru despre scalarea orizontală este că nu există limite de dimensiune. Când performanța scade, se adaugă pur și simplu o altă mașină, care, în principiu, se poate face pe termen nelimitat.
La nivel corporativ, un sistem de control distribuit implică adesea diferiți pași. În procesele de afaceri din cele mai eficiente locuri ale rețelei de calculatoare ale întreprinderii. De exemplu, într-o distribuție tipică care utilizează un model de sistem distribuit pe trei niveluri, prelucrarea datelor se face pe un computer la locația utilizatorului, procesarea afacerii se face pe un computer la distanță, iar accesul la baza de date și prelucrarea datelor se face pe un computer complet diferit. care oferă acces centralizat pentru multe afaceri.procese. De obicei, acest tip de calcul distribuitfolosește modelul de interacțiune client-server.
Sarcini principale
Principalele sarcini ale unui sistem de control distribuit includ:
- Transparență - Obține o singură imagine de sistem fără a ascunde locația, accesul, migrarea, concurența, failoverul, relocarea, persistența și detaliile resurselor pentru utilizatori.
- Deschidere - simplifică configurarea și modificările rețelei.
- Fiabilitate - În comparație cu un singur sistem de control, acesta ar trebui să fie fiabil, consecvent și să aibă o probabilitate mare de mascare a erorilor.
- Performanță - În comparație cu alte modele, modelele distribuite oferă o creștere a performanței.
- Scalabile - Aceste sisteme de control distribuit trebuie să fie scalabile în ceea ce privește teritoriu, administrație sau dimensiune.
Sarcinile sistemelor de distribuție includ:
- Securitatea este o problemă majoră într-un mediu distribuit, mai ales atunci când utilizați rețele publice.
- Toleranță la erori - poate fi dură atunci când modelul este construit cu componente nesigure.
- Coordonarea și distribuirea resurselor - poate fi dificilă dacă nu există protocoale adecvate sau politici necesare.
Mediu de calcul distribuit
(DCE) este un standard industrial utilizat pe scară largă care acceptă astfel de calcule distribuite. Pe Internet, furnizorii terți oferă unele servicii generice,care se potrivesc acestui model.
Grid computing este un model de calcul cu o arhitectură distribuită a unui număr mare de computere asociate cu rezolvarea unei probleme complexe. În modelul de calcul în rețea, serverele sau computerele personale îndeplinesc sarcini independente și sunt conectate lejer între ele prin internet sau rețele de viteză redusă.
Cel mai mare proiect de calcul grid este SETI@home, în care proprietarii individuali de computere se oferă voluntari pentru a efectua unele dintre ciclurile lor de procesare multitasking folosind computerul pentru proiectul Search for Extraterrestrial Intelligence (SETI). Această problemă de computer folosește mii de computere pentru a descărca și a căuta date radiotelescopului.
Una dintre primele utilizări ale calculului grid a fost de a sparge codul criptografic de către un grup cunoscut acum sub numele de distributed.net. Acest grup își descrie și modelul drept calcul distribuit.
Scalarea bazei de date
Răspândirea de noi informații de la master la slave nu are loc instantaneu. De fapt, există o fereastră de timp în care puteți obține informații învechite. Dacă nu ar fi așa, performanța de scriere ar avea de suferit, deoarece sistemele distribuite ar trebui să aștepte sincron pentru propagarea datelor. Vin cu câteva compromisuri.
Folosind o abordare a bazei de date slave, este posibil să extindeți traficul de citire într-o oarecare măsură. Există multe opțiuni aici. Dar trebuie doar să împărțiți traficul de scriere în mai multeservere pentru că nu se poate descurca. O modalitate este de a folosi o strategie de replicare multi-master. Acolo, în loc de sclavi, există mai multe noduri principale care acceptă citirea și scrierea.
O altă metodă se numește sharding. Cu acesta, serverul este împărțit în mai multe servere mai mici, numite shards. Aceste fragmente au intrări diferite, se creează reguli despre ce intrări intră în ce fragment. Este foarte important să creați o astfel de regulă încât datele să fie distribuite uniform. O posibilă abordare în acest sens este definirea intervalelor în funcție de unele informații de înregistrare.
Această cheie shard trebuie aleasă cu mare atenție, deoarece încărcarea nu este întotdeauna egală cu bazele coloanelor arbitrare. Singurul fragment care primește mai multe solicitări decât celel alte se numește hotspot și încearcă să împiedice formarea acestuia. Odată împărțite, datele de recalibrare devin incredibil de costisitoare și pot duce la timpi de nefuncționare semnificativi.
Algoritmi de consens pentru baze de date
DB-urile sunt dificil de implementat în sistemele de securitate distribuite, deoarece necesită ca fiecare nod să negocieze întreruperea sau acțiunea de comitere corectă. Această calitate este cunoscută sub numele de consens și reprezintă o problemă fundamentală în construirea unui sistem de distribuție. Atingerea tipului de acord necesar pentru problema „commit” este simplă dacă procesele implicate și rețeaua sunt complet fiabile. Cu toate acestea, sistemele reale sunt supuse unui număr deposibile eșecuri ale proceselor de rețea, mesaje pierdute, corupte sau duplicate.
Acest lucru ridică o problemă și nu este posibil să se garanteze că se va ajunge la consensul corect într-o perioadă limitată de timp într-o rețea nesigură. În practică, există algoritmi care ajung la un consens destul de repede într-o rețea nesigură. Cassandra oferă de fapt tranzacții ușoare prin utilizarea algoritmului Paxos pentru consens distribuit.
Calculatul distribuit este cheia afluxului de procesare a datelor mari care a fost folosită în ultimii ani. Este o metodă de a descompune o sarcină uriașă, cum ar fi un cumulat de 100 de miliarde de înregistrări, dintre care niciun computer nu este capabil să facă practic orice pe cont propriu, în multe sarcini mai mici care se pot încadra într-o singură mașină. Dezvoltatorul își împarte sarcina uriașă în multe altele mai mici, le execută pe mai multe mașini în paralel, colectează datele în mod corespunzător, apoi problema inițială va fi rezolvată.
Această abordare vă permite să scalați orizontal - atunci când există o sarcină mare, trebuie doar să adăugați mai multe noduri la calcul. Aceste sarcini sunt realizate de mulți ani de modelul de programare MapReduce asociat cu implementarea procesării paralele și a generării de seturi mari de date folosind un algoritm distribuit pe un cluster.
În prezent, MapReduce este oarecum învechit și aduce unele probleme. Au apărut și alte arhitecturi care abordează aceste probleme. Și anume, Lambda Architecture pentru distribuitsisteme de procesare a fluxului. Progresele în acest domeniu au adus noi instrumente: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.
Sisteme de stocare și replicare a fișierelor
Sistemele de fișiere distribuite pot fi considerate ca depozite de date distribuite. Acesta este același cu conceptul - stocarea și accesarea unei cantități mari de date pe un cluster de mașini care sunt o singură entitate. De obicei, acestea merg mână în mână cu calculul distribuit.
De exemplu, Yahoo este cunoscut pentru că rulează HDFS pe peste 42.000 de noduri pentru a stoca 600 de petabytes de date din 2011. Wikipedia definește diferența prin aceea că sistemele de fișiere distribuite permit accesul la fișiere folosind aceleași interfețe și semantică ca fișierele locale, mai degrabă decât printr-un API personalizat, cum ar fi Cassandra Query Language (CQL).
Hadoop Distributed File System (HDFS) este un sistem utilizat pentru calcularea prin infrastructura Hadoop. Răspândit, este folosit pentru a stoca și replica fișiere mari (dimensiune GB sau TB) pe multe mașini. Arhitectura sa constă în principal din NameNodes și DataNodes.
NameNodes este responsabil pentru stocarea metadatelor despre cluster, cum ar fi nodul care conține blocuri de fișiere. Aceștia acționează ca coordonatori de rețea, descoperă unde este cel mai bine să stocheze și să copieze fișierele, ținând evidența sănătății sistemului. DataNodes pur și simplu stochează fișiere și execută comenzi precum replicarea fișierelor, scrierea nouă și altele.
În mod deloc surprinzător, HDFS este cel mai bine utilizat cu Hadoop pentru calcul, deoarece oferă informații despre sarcini. Joburile specificate sunt apoi rulate pe nodurile care stochează datele. Acest lucru vă permite să utilizați locația datelor - optimizează calculele și reduce cantitatea de trafic din rețea.
The Interplanetary File System (IPFS) este un nou protocol/rețea interesant peer-to-peer pentru sistemul de fișiere distribuit. Folosind tehnologia Blockchain, se mândrește cu o arhitectură complet descentralizată, fără un singur proprietar sau punct de eșec.
IPFS oferă un sistem de denumire (similar cu DNS) numit IPNS și permite utilizatorilor să recupereze cu ușurință informații. Stochează fișierul prin versiunea istorică, la fel ca Git. Acest lucru permite accesul la toate stările anterioare ale fișierului. Este încă în curs de dezvoltare grea (v0.4 la momentul scrierii), dar a văzut deja proiecte interesate să-l construiască (FileCoin).
Sistem de mesagerie
Sistemele de mesagerie oferă o locație centrală pentru stocarea și distribuirea mesajelor într-un sistem comun. Acestea vă permit să separați logica aplicației de comunicarea directă cu alte sisteme.
Scală cunoscută - clusterul Kafka de la LinkedIn a procesat 1 trilion de mesaje pe zi, cu vârfuri de 4,5 milioane de mesaje pe secundă.
În termeni simpli, platforma de mesagerie funcționează astfel:
- Mesajtransmis din aplicația care o creează potențial, numită producător, intră în platformă și este citită din mai multe aplicații, numite consumatori.
- Dacă trebuie să stocați un anumit eveniment în mai multe locuri, cum ar fi crearea unui utilizator pentru o bază de date, stocare, serviciu de trimitere de e-mailuri, atunci platforma de mesagerie este cea mai curată modalitate de a distribui acel mesaj.
Există mai multe platforme populare de mesagerie de top.
RabbitMQ este un broker de mesaje care vă permite să reglați mai mult controlul traiectoriilor lor folosind reguli de rutare și alți parametri ușor de configurat. Poate fi numit broker „inteligent” pentru că are multă logică și monitorizează îndeaproape mesajele care trec prin el. Oferă opțiuni pentru AP și CP din CAP.
Kafka este un broker de mesaje care este puțin mai puțin funcțional, deoarece nu ține evidența mesajelor care au fost citite și nu permite o logică complexă de rutare. Ajută la obținerea unor performanțe uimitoare și reprezintă cea mai mare promisiune în acest spațiu cu dezvoltarea activă a sistemelor distribuite de către comunitatea open-source și sprijinul echipei Confluent. Kafka este cel mai popular printre companiile de în altă tehnologie.
Aplicații de interacțiune cu mașini
Acest sistem de distribuție este un grup de computere care lucrează împreună pentru a apărea ca un computer separat pentru utilizatorul final. Aceste mașini sunt în stare generală, funcționeazăsimultan și poate funcționa independent, fără a afecta timpul de funcționare al întregului sistem.
Dacă considerați baza de date ca fiind distribuită, numai dacă nodurile interacționează între ele pentru a-și coordona acțiunile. În acest caz, este ceva asemănător unei aplicații care își execută codul intern într-o rețea peer-to-peer și este clasificată ca o aplicație distribuită.
Exemple de astfel de aplicații:
- Scala cunoscută - BitTorrent roiează 193.000 de noduri pentru episodul Game of Thrones.
- Tehnologia registrului de bază a sistemelor Blockchain distribuite.
Registrele distribuite pot fi considerate ca o bază de date imuabilă, numai pentru aplicații, care este replicată, sincronizată și partajată în toate nodurile din rețeaua de distribuție.
Cunoscuta scară - rețeaua Ethereum - a avut 4,3 milioane de tranzacții pe zi pe 4 ianuarie 2018. Ei folosesc modelul Event Sourcing, care vă permite să restabiliți starea bazei de date în orice moment.
Blockchain este tehnologia actuală de bază folosită pentru registrele distribuite și a marcat de fapt începutul acestora. Această nouă și cea mai mare inovație în spațiul distribuit a creat primul protocol de plată cu adevărat distribuit, bitcoin.
Blockchain este un registru distribuit cu o listă ordonată a tuturor tranzacțiilor care au avut loc vreodată în rețeaua sa. Ofertele sunt grupate și stocate în blocuri. Întregul blockchain este în esență o listă de blocuri conectată. Blocuri specificatesunt costisitoare de creat și sunt strâns cuplate între ele prin criptografie. Mai simplu spus, fiecare bloc conține un hash special (care începe cu numărul X de zerouri) din conținutul blocului curent (sub forma unui arbore Merkle) plus hash-ul blocului anterior. Acest hash necesită multă putere CPU.
Exemple de sisteme de operare distribuite
Tipurile de sistem apar utilizatorului deoarece sunt sisteme cu un singur utilizator. Își împărtășesc memoria, discul, iar utilizatorul nu are probleme în navigarea prin date. Utilizatorul stochează ceva în computerul său, iar fișierul este stocat în mai multe locații, adică computere conectate, astfel încât datele pierdute să poată fi recuperate cu ușurință.
Exemple de sisteme de operare distribuite:
- Windows Server 2003;
- Windows Server 2008;
- Windows Server 2012;
- UbuntuLinux (server Apache).
Dacă un computer pornește mai sus, adică dacă sunt schimbate multe solicitări între computere individuale, așa are loc echilibrarea sarcinii. În acest caz, solicitările sunt propagate către PC-ul vecin. Dacă rețeaua devine mai încărcată, atunci poate fi extinsă prin adăugarea mai multor sisteme la rețea. Fișierul și folderele de rețea sunt sincronizate și sunt utilizate convențiile de denumire, astfel încât să nu apară erori atunci când sunt preluate datele.
Memorizarea în cache este folosită și la manipularea datelor. Toate computerele folosesc același spațiu de nume pentru a denumi fișierele. Darsistemul de fișiere este valabil pentru fiecare computer. Dacă există actualizări ale fișierului, acesta este scris pe un computer, iar modificările sunt propagate pe toate computerele, astfel încât fișierul să arate la fel.
Fișierele sunt blocate în timpul procesului de citire/scriere, astfel încât nu există niciun blocaj între diferite computere. Au loc și sesiuni, cum ar fi citirea, scrierea fișierelor într-o sesiune și închiderea sesiunii, iar apoi un alt utilizator poate face același lucru și așa mai departe.
Beneficiile utilizării
Un sistem de operare conceput pentru a ușura viața de zi cu zi a oamenilor. Pentru beneficiile și nevoile utilizatorilor, sistemul de operare poate fi un singur utilizator sau distribuit. Într-un sistem de resurse distribuite, multe computere sunt conectate între ele și își împart resursele.
Beneficiile acestui lucru:
- Dacă un PC dintr-un astfel de sistem este defect sau deteriorat, atunci un alt nod sau computer se va ocupa de el.
- Se pot adăuga cu ușurință mai multe resurse.
- Resurse precum imprimantele pot servi mai multe computere.
Acesta este un scurt despre sistemul de distribuție, de ce este utilizat. Câteva lucruri importante de reținut: sunt complexe și sunt alese pentru amploare și preț și sunt mai greu de lucrat. Aceste sisteme sunt distribuite în mai multe categorii de stocare: sisteme de calcul, fișiere și mesagerie, registre, aplicații. Și toate acestea sunt doar foarte superficiale despre un sistem informatic complex.