Calcul distribuit

Calcul distribuit (din engleză Distributed computing) este un domeniu al informaticii care se ocupă de sisteme distribuite. Un sistem distribuit este un sistem informatic implementat pe o rețea de calculatoare în care componentele soft și hard situate în calculatoarele din rețea comunică și își coordonează acțiunile numai prin intermediul transmiterii unor mesaje. Un sistem distribuit are următoarele caracteristici: „concurența (prin partajarea resurselor), inexistența unui ceas global (programele care trebuie să coopereze își coordonează acțiunile prin schimburi de mesaje și nu se poate conta pe sincronizarea ceasurilor) eșecuri independente (fiecare componentă a sistemului poate eșua în mod independent neafectându-le pe celelalte)”.

Introducere

Un program de care rulează într-un sistem distribuit se numește un program distribuit, iar procesul de scriere a astfel de programe se numește programare distribuită. Cuvântul distribuit, folosit în termeni precum "sistem distribuit", "programare distribuită", și "algoritm distribuit" se referea inițial la rețelele de calculatoare în care calculatoarele individuale erau distribuite fizic în cadrul unei anumite zone geografice. Astăzi, termenii sunt folosiți într-un sens mult mai larg, referindu-se până si la procese autonome ce se execută pe același calculator și comunică între ele prin transmiterea de mesaje. Deși nu exista o singură definiție pentru un sistem distribuit, toate vor avea următoarele proprietăți in comun:

Un sistem distribuit poate avea un scop comun, cum ar fi rezolvarea unei probleme mare de calcul. Alternativ, fiecare nod poate avea propriul utilizator cu nevoi specifice, iar sistemul distribuit este utilizat pentru administrarea resurselor comune sau pentru furnizarea de servicii de comunicare intre utilizatori. Alte proprietăți ale sistemelor distribuite pot fi:

Calcul paralel și distribuit

Sistemele distribuite sunt calculatoarele dintr-o rețea ce operează cu aceleași procesoare. Termenii de calcul concurent, calcul paralel si calcul distribuit au foarte multe în comun. Același sistem poate fi caracterizat ca fiind atât "paralel cât și "distribuit" și procesele dintr-un sistem distribuit tipic rulează în paralel. Sistemele concurente pot fi clasificate ca fiind paralele sau distribuite in funcție de următoarele criterii:

Istoric

Utilizarea de procese concurente care comunică prin mesaj-trece își are rădăcinile în arhitecturile sistemelor de operare studiate în anii 1960. Primele sisteme distribuite pe scară largă au fost LAN-urile, cum ar fi Ethernet, care a fost inventat în anii 1970. ARPANET, predecesorul de Internet, a fost introdus la sfârșitul anilor 1960, și ARPANET e-mail a fost inventat la începutul anilor 1970. E-mail a devenit cea mai de succes aplicație de ARPANET, și este, probabil, cel mai vechi exemplu de aplicație distribuita la scară largă. Pe lângă ARPANET și succesorul său internet, au existat și alte rețele globale de calculatoare inclusiv Usenet și FidoNet din 1980, ambele fiind utilizate pentru a sprijini sisteme de comunicare distribuite. Studiul de calcul distribuit a devenit o ramura a informaticii la sfârșitul anilor 1970 și începutul anilor 1980. Prima conferință din domeniu, Simpozionul privind principiile de calcul distribuit (PODC), datează din 1982, și omologul său european Simpozion internațional în calcul distribuit (DISC) ​​a fost organizat pentru prima dată în 1985.

Aplicații

Există două motive principale pentru folosirea sistemelor distribuite și a calculului distribuit:

Un sistem distribuit poate fi mai fiabil decât unul nedistribuit deoarece are un grad mai ridicat de redundanță și poate fi extins și administrat mai ușor. Câteva exemple de sisteme distribuite sunt:

Bazele teoretice

Modele

În domeniile calculului distribuit și paralel se pune întrebarea ce probleme de calcul pot fi rezolvate cu un astfel de sistem și cât de eficient.Aici intervin trei puncte de vedere:

  1. Algoritmi paraleli într-un model cu memorie comună
  1. Algoritmi paraleli într-un model cu transmitere de mesaje
  1. Algoritmi distribuiți într-un model cu transmitere de mesaje

Probleme

Problemele tradiționale de calcul presupun punerea unei întrebări, după care un calculator (sau un sistem distribuit) procesează întrebarea pentru un timp, apoi și produce un răspuns și se oprește. Cu toate acestea, există, de asemenea, probleme în cazul în care nu vrem ca sistemul să oprească vreodată. În aceste cazuri, sistemul distribuit ar trebui să coordoneze continuu utilizarea resurselor comune, astfel încât să nu apară conflicte sau blocaje. Există, de asemenea, provocări fundamentale care sunt specifice calculului distribuit. Un exemplu ar fi provocările legate de toleranța la defecte. Exemple de probleme asemănătoare includ probleme legate de consens, Byzantine fault tolerance, și autostabilizare.

Arhitecturi

Diverse arhitecturi hardware și software sunt utilizate pentru calcul distribuit. La un nivel inferior, este necesară interconectarea a mai multor procesoare, într-un fel de rețea, indiferent dacă aceasta este pe o singura placă de circuite sau daca este alcătuită dintr-o serie de dispozitive interconectate prin cabluri. La un nivel superior, este necesară interconectarea proceselor care rulează pe aceste procesoare cu un fel de sistem de comunicare. Sistemele de programare distribuite de obicei se încadrează într-una din următoarele categorii de arhitecturi: client-server, arhitectura 3-tier, arhitectura n-tier, obiecte distribuite, loose coupling, sau tight coupling.

Proiecte care folosesc calcul distribuit

Vezi și

Legături externe

Note

  1. ^ Moldovan, G. and Dzițac, I. (2006).Sisteme distribuite. Arhivat în 16 august 2016, la Wayback Machine. Oradea: Editura Universității Agora.
  2. ^ Active Distributed Computing Projects distributedcomputing.info