- Distribuția datelor
- Caracteristicile sistemelor distribuite
- Compatibilitate
- Toleranță la erori
- Middleware și API
- Arhitectură
- Arhitectura client-server
- Arhitectură peer-to-peer
- Arhitecturi pe mai multe niveluri
- Arhitectura grupului de procesoare
- Tipuri de sisteme distribuite
- Calcularea clusterului
- Calcul de rețea
- Cloud Computing
- goluri
- Distribuie resurse
- abstracțiune
- Deschidere
- Interoperabilitate și portabilitate
- scalabilitate
- Aplicații
- Mașină virtuală Erlang
- bittorrent
- Avantaj
- Dezavantaje
- Exemple de sisteme distribuite
- StackPath
- Internet
- Referințe
Sistemele distribuite sunt programe software utilizate pentru coordonarea acțiunilor mai multor calculatoare. Această coordonare se realizează prin schimbul de mesaje, adică cu bucăți de date care transmit informații.
Sistemele distribuite necesită componente concomitente, o rețea de comunicații și un mecanism de sincronizare. Acestea permit schimbul de resurse, inclusiv software, prin sisteme conectate la o rețea. Prin urmare, sistemul se bazează pe o rețea care conectează computerele și se ocupă de dirijarea mesajelor.
a și b (sisteme distribuite). b (sistem paralel). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)
Calculul distribuit este o zonă de calcul care este responsabilă cu analiza sistemelor distribuite. Programul computer care rulează pe un sistem distribuit se numește program distribuit.
Într-un context în care pot exista sute sau mii de calculatoare, ceea ce este o proporție comună în cadrul companiilor mari de internet, este foarte frecvent să existe defecțiuni ale componentelor, fie că este vorba de hardware, rețea, discuri etc., iar sistemul trebuie să fie pregătit să le înfrunte în orice moment.
Distribuția datelor
Distribuția este esențială pentru a putea gestiona conglomerate de date foarte mari. Este necesară obținerea scalabilității, care este mijlocul de a menține performanțe stabile atunci când grupurile de date cresc prin adăugarea de noi resurse la sistem.
Pe de altă parte, distribuția prezintă o serie de probleme tehnice care fac ca proiectarea și implementarea computerelor și stocării distribuite să fie importante de luat în considerare. Un punct de luat în considerare este riscul posibilelor eșecuri.
Caracteristicile sistemelor distribuite
a și b (sisteme distribuite). b (sistem paralel). Miym / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)
Compatibilitate
Dispozitivele pot funcționa cu diferite sisteme de operare. Acest lucru nu îi împiedică să ofere mereu aceleași servicii utilizatorilor. Din acest motiv, toate dispozitivele conectate sunt compatibile între ele.
O altă problemă fundamentală este proiectarea software-ului, deoarece este, de asemenea, compatibil cu toate sistemele și utilizatorii care se află pe fiecare computer.
Toleranță la erori
Fiind o singură rețea cu multe computere, dacă oricare dintre componentele sale eșuează, celelalte pot continua să își îndeplinească funcția pe deplin, evitând erorile rapid.
Din acest motiv, sistemele distribuite tind să ofere multă încredere atunci când lucrează cu ele, deoarece este destul de rar ca sistemul să eșueze complet, deoarece sarcinile nu se află într-un singur dispozitiv, ci în diferite calculatoare.
Middleware și API
Diferite procesoare folosesc middleware de distribuție, contribuind la partajarea diferitelor resurse și capabilități pentru a oferi utilizatorilor o rețea coerentă și integrată. De asemenea, oferă aplicațiilor o serie de servicii, precum securitatea și recuperarea blocărilor.
Astăzi, auziți mai multe despre interfețele de programare a aplicațiilor (API-uri), care funcționează ca o poartă de acces unde aplicațiile pot comunica. Aplicațiile nu trebuie să știe nimic despre alte aplicații, cu excepția API-ului.
Arhitectură
Arhitectura client-server
Un anumit computer numit server poate îndeplini anumite sarcini, care se numesc servicii. De exemplu, servirea fișierelor prin rețea, capacitatea de a executa anumite comenzi sau rutele de date către o imprimantă. Clientul este computerul care solicită serviciile.
Calculatorul cunoscut în primul rând pentru serviciul pe care îl oferă poate fi numit server de imprimare, server de fișiere și așa mai departe.
Arhitectură peer-to-peer
Presupune că fiecare computer are capabilități similare și că nicio mașină nu este dedicată slujirii celorlalți. Un exemplu în acest sens este un set de microcomputere într-un birou mic.
Rețeaua permite oamenilor să acceseze reciproc fișierele și să-și trimită e-mailuri, dar niciun computer nu oferă un set specific de servicii.
Arhitecturi pe mai multe niveluri
Pentru anumite servicii poate avea sens conectivitatea ierarhică. De exemplu:
- Un server atunci când își îndeplinește sarcinile poate contacta un alt server de un alt tip
- Arhitectura client-server este o arhitectură pe două niveluri.
Arhitectura grupului de procesoare
Un sistem de operare ar putea iniția automat procesele pe calculatoarele inactive și chiar să migreze procesele către sisteme cu un număr mai mare de cicluri CPU disponibile. În alte cazuri, un utilizator poate porni sau muta manual procesele pe sistemele disponibile.
Tipuri de sisteme distribuite
Calcularea clusterului
Este o colecție de computere similare conectate printr-o rețea locală de mare viteză. Este frecvent utilizat pentru programarea paralelă, unde un singur program intensiv în calcul rulează în paralel pe mai multe calculatoare.
Fiecare cluster este format dintr-un set de noduri de calcul care sunt monitorizate și gestionate de unul sau mai multe noduri numite maeștri.
Calcul de rețea
Este alcătuit din noduri cu diferențe marcate în hardware și tehnologia rețelei. Tendința actuală de a avea o configurație specifică de noduri pentru anumite sarcini a dus la o mai mare diversitate, care este cea mai frecventă în calcularea rețelei.
Cloud Computing
Este un set de resurse virtualizate găzduite în centrul de date al unui furnizor de cloud. Clienții pot crea o infrastructură virtualizată pentru a profita de o varietate de servicii cloud.
Utilizatorului, se pare că își închiriază propriul computer exclusiv. Cu toate acestea, este foarte probabil să îl împărtășiți cu alți clienți. Același lucru este valabil și pentru stocarea virtuală.
Aceste resurse virtualizate pot fi configurate dinamic, permițând astfel scalabilitatea. Dacă sunt necesare mai multe resurse de calcul, sistemul poate achiziționa mai multe.
goluri
Distribuie resurse
Fie că este vorba de facilități de stocare, fișiere de date, servicii sau rețele, poate doriți să partajați aceste resurse între aplicații, de dragul economiei.
Este mult mai ieftin să ai un spațiu de stocare partajat între mai multe aplicații decât să trebuiască să cumperi și să păstrezi stocarea separată pentru fiecare.
abstracțiune
Pentru a ascunde că procesele și resursele sunt distribuite în mai multe calculatoare, eventual dispersate geografic. Adică, procesele și resursele sunt abstractizate de utilizator.
Deschidere
Practic, indică faptul că un sistem distribuit este construit cu elemente care pot fi ușor integrate cu alte sisteme. Respectând regulile standardizate, orice proces cu acea interfață poate comunica cu un alt proces cu aceeași interfață.
Interoperabilitate și portabilitate
Se referă la momentul în care două sisteme de la producători diferiți pot lucra împreună. Portabilitatea determină măsura în care o aplicație făcută pentru sistemul A poate funcționa pe sistemul B fără modificări.
scalabilitate
Este necesar atunci când există o creștere a utilizatorilor care au nevoie de mai multe resurse. Un bun exemplu este creșterea publicului Netflix în fiecare seară de vineri.
Înseamnă adăugarea dinamică a mai multor resurse, precum creșterea capacității rețelei, permițând mai multă transmisie video și reducând-o odată ce consumul s-a normalizat.
Aplicații
Mașină virtuală Erlang
Pachetul software LYME se bazează pe Erlang și oferă o alternativă la LAMP. Shmuel Csaba Otto Traian / CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)
Erlang este un limbaj funcțional care are o semantică excelentă pentru concurgență, distribuție și toleranță la erori. O mașină virtuală Erlang gestionează distribuția unei aplicații Erlang.
Acest model funcționează prin a avea multe procese izolate, toate având capacitatea de a comunica între ele printr-un sistem de mesagerie încorporat.
Mașina virtuală Erlang se poate conecta la alte mașini virtuale care se află în diferite locuri. Acest roi de mașini virtuale rulează o singură aplicație, gestionând eșecurile unei mașini programând-o pentru a rula pe un alt nod.
bittorrent
Funcționarea rețelei BitTorrent. Mrjavi / CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)
Este unul dintre cele mai utilizate protocoale pentru transferul fișierelor mari pe web. Ideea principală este de a facilita transferul fișierelor între diferiți colegi din rețea fără a fi nevoie să parcurgi un server principal.
Utilizând un client BitTorrent, vă puteți conecta la mai multe calculatoare din întreaga lume pentru a descărca un fișier. Un computer care acționează ca un coordonator ajută la afișarea nodurilor din rețea care au fișierul dorit.
BitTorrent vă permite să găzduiți voluntar fișierele și să le încărcați pentru alți utilizatori care le doresc. Este atât de popular pentru că a fost primul de acest gen care a oferit stimulente pentru a contribui la rețea.
Avantaj
- Mai multe noduri pot fi adăugate cu ușurință în sistemul distribuit, adică poate fi scalat după cum este necesar.
- Toate nodurile din sistemul distribuit sunt conectate între ele. Prin urmare, fiecare dintre noduri poate partaja cu ușurință date cu celelalte noduri.
- Resurse precum imprimantele pot fi partajate cu mai multe noduri, în loc să fie limitate la un singur.
- Eșecul unui singur nod nu duce la eșecul întregului sistem distribuit. Celelalte noduri pot comunica în continuare între ele.
Dezavantaje
- Unele mesaje și date pot fi pierdute în rețea atunci când treceți de la un nod la altul.
- Este dificil să oferiți o securitate adecvată în sistemele distribuite, deoarece atât nodurile cât și conexiunile trebuie să fie securizate.
- Supraîncărcarea de rețea poate apărea dacă toate nodurile din sistemul distribuit încearcă să trimită date în același timp.
- Baza de date conectată la sistemele distribuite este destul de complicată și dificil de gestionat în comparație cu un singur sistem de utilizator.
Exemple de sisteme distribuite
Sistemele distribuite pot fi utilizate într-un număr mare de cazuri, cum ar fi sistemele bancare electronice, jocurile online multiplayer masive și rețelele de senzori.
StackPath
Utilizează un sistem distribuit deosebit de mare pentru a-și alimenta serviciul de rețea de livrare a conținutului. Fiecare dintre punctele sale de prezență (PoP) are noduri, formând un sistem distribuit la nivel mondial.
StackPath stochează conținutul cel mai recent și cel mai frecvent solicitat în locațiile cele mai apropiate de site-ul care este utilizat.
Prin interconectarea calculatoarelor virtuale, pe lângă faptul că profită de viteza și agilitatea calculelor de ultimă generație, sistemul poate gestiona foarte repede mii de solicitări simultane.
Internet
Este cel mai mare sistem distribuit din lume. Orice utilizator se simte ca un singur sistem, chiar dacă este format din milioane de calculatoare.
Prin conceptul de abstractizare, nu aveți idee unde sunt stocate datele, câte servere sunt implicate sau modul în care informațiile ajung la browser. Browserul dizolvă complexitatea Internetului.
Acest lucru este valabil și pentru aplicații precum e-mail Gmail sau orice altă aplicație care poate fi utilizată. Fiecare persoană interacționează zilnic cu aplicațiile distribuite.
Referințe
- Paul Krzyzanowski (2018). Sisteme distribuite. Luat de la: cs.rutgers.edu.
- Catherine Paganini (2019). Primer: sisteme distribuite și cloud native computing. Noua stivă. Luat de la: thenewstack.io.
- Universitatea Internațională din Valencia (2020). Sisteme distribuite, caracteristici și clasificare. Luat de la: universidadviu.com.
- David Meador (2018). Sisteme distribuite. Tutoriale Punct. Luat de la: tutorialspoint.com.
- Robert Gibb (2019). Ce este un sistem distribuit? Luate de pe: blog.stackpath.com.
- Stanislav Kozlovski (2018). O introducere minuțioasă a sistemelor distribuite. Tabără cu cod gratuit. Luate de la: freecodecamp.org.