O imagine asupra Sistemelor Distribuite

Sistemele distribuite se regasesc pretutindeni, fac parte din viata noastra. Acest survey este destinat celor care doresc sa isi clarifice notiuni de baza despre ele.
1. Caracteristici ale sistemelor distribuite
1.1 Introducere
Pentru notiunea de sistem distribuit exista diferite definitii in literatura de specialitate.
O prima definitie[2] afirma ca un sistem distribuit este o colectie de noduri
( calculatoare, procesoare) interconectate .Fiecare nod dispune in cadrul sistemului de cite o memorie proprie, privata. Aceste noduri sunt capabile sa-si coordoneze actiunile si sa comunice prin transmiterea de mesaje.
O definitie mai restrictiva [3], considera ca un sistem este distribuit numai daca existenta nodurilor autonome este transparenta pentru utilizatorul obijnuit.
Din punctul de vedere al tipului de conexiune care poate exista intre noduri avem :
- sisteme strins conectate : in care mai multe procesoare partajeaza aceeasi memorie interna si consulta acelasi ceas
- sisteme slab conectate : in care fiecare procesor are propria memorie si propriul ceas
Sistemele distribuite sunt considerate astfel ca fiind sisteme slab conectate.
Din acest mode de definire a sistemelor distribuite rezulta citeva consecinte importante :
- concurenta – se poate lucra simultan pe diferite computere din retea, eventual partajindu-se acelasi resurse(pagini web, fisiere, etc)
- inexistenta unui ceas global – exista limite in ceea ce priveste capacitatea computerelor din retea de a-si sincroniza ceasurile.
- Rezistenta la erori – un defect intr-o retea poate fi considerat izolarea unor computere, insa acestea vor functiona in continuare. In mare parte, programele care vor rula pe aceste computere nu vor detecta ca a fost intrerupta conexiunea sau aceasta a devenit neobisnuit de inceata. Mai mult nici celelalte noduri din sistem cu care nodul care care a cazut comunica nu vor fi instiintate imediat de acest lucru.
Motivatia pentru construiea si utilizarea sistemelor distribuite vine din dorinta de a partaja resurse( vezi [4]).
1.2 Exemple de sisteme ditribuite
Vom prezenta trei exemple de sisteme distribuite dintre cele mai de familiare si mai larg utilizate.
1.2.1 Internetul
Internetul – este o vasta colectie de retele de diferite tipuri conectate intre ele .
Internetul este vazut si ca un sistem distribuit. Prin tehnologiile pe care le pune la dispozite permite utilizatorilor aflati in locuri diferite sa foloseasca diferite servicii( Web-ul, email, ftp ). Aceste servicii pot fi la rindul lor extinse in alte servicii.
ISP(Internet Service Provider) sunt companii care ofera : acces la internet diferitelor organizatii sau persoane, sau servicii cum ar fi : gazduirea de situri, email etc.
Dupa cum se poate observa in Fig. 1 intraneturile sunt legate intre ele de asa numitele backbone. Acestea sunt legaturi care au o capacitate mare de trasmisie(utilizaind tehnologii ca fibre optice, conexiuni prin satelit etc).
Servicii multimedia sunt disponibile in Internet (video conferinte, radio, muzica, canale TV). Capacitatea internetului de a satisface necesitatile de care datele multimedia au nevoie, este limitata deoarece nu exista suficiente facilitati care sa rezerve capacitatea unei retea pentru diferitele streamuri de date.
1.2.2 Intraneturi
Un intranet este o portiune de Internet care este administrata separat si pentru care exista politici de securitate locale.
Un intranet este format din mai multe LAN-uri legate intre ele de backbon-uri.
Un intranet este conectat la internet printr-un router , care permite utilizatorilor din interior sa utilizeze servicii ca Web sau email. De asemenea permite utilizatorilor din exterior sa acceseze servicii pe care le pune eventual la dispozitie.
Pentru a se proteja de diferite actiuni malitioase, sunt utillizate fireall-urile care previn ca mesaje neautorizate sa intre sau sa plece.(Un firewall este implementat sa filtreze anumite mesaje conform unor criterii, de exemplu el permite trecerea doar a mesajelor legate de posta electronica.)
Exista institutii care din motive de securitate nu doresc conectarea intraneturilor lor la Internet( anumite organizatii militare, spitale, etc).
1.2.3 Calcul mobil si "ubiquitous computing"
Dispozitivele miniaturizate si retelele wireless au inceput sa joace un rol din ce in ce mai important in cadrul sistemelor distribuite.
Dispozitive :
- laptopuri
- dispozitive "handheld" : PDA(personal digital assistant), telefoane mobile, paigere, camere video si digitale
- dispozitive "weareable" : ceasurile inteligente care au o functionalitate similara PDA-urilor
- dispozitivele incorporate in sisteme cum ar fi : masini, frigidere, masini de spalat, sisteme hi-fi( echipament folosit pentru reproducerea sunetelor cu o mare fidelitate)
Portabilitatea a multora dintre aceste dispozitive impreuna cu capacitatea lor de a se conecta la retele diferite, face posibibila calculul mobil (numit si nomadic computing)
Deci calculul mobil ofera posibilitatea ca un utilizator aflat la distanta de intranetul “home” sa poata accesa resursele de acolo.
Ubiquitous computing promoveaza ideea de «computere peste tot ». Asta insemnind ca diferite dispozitive de calcul sunt prezente in mod obisnuit in mediu utilizatorului(birou, acasa) insa sunt invizibile sau putin luate in considerare de catre acesta. Prezenta computerelor pretutindeni va fi foarte utila atunci cind acestea vor putea comunica intre ele.
Calculul mobil si calculul ubiquitous tind sa se suprapuna, insa exista totusi diferente : de calculul ubiquitous pot beneficia de exemplu indivizii care ramin intr-un acelasi mediu (de exemplu acasa sau intr-un spital), iar calculul mobil implica dispozitive si computere distincte cum ar fi laptopuri sau imprimante.
1.3 Partajarea resurselor si Web-ul
In mod obisnuit sunt partajate resurse hardware(imprimante), resurse software(fisiere), resurse cu anumite functionalitati (de exemplu motoarele de cautare).
Privit din punctul de vedere hardware partajarea echipamentului (ca imprimanta, discuri) se face pentru reducerea costurilor. Din punct de vedere a utilizatorilor o mare importanta o are partajarea de nivel inalt a resurselor care joaca un rol in aplicatiile lor. De exemplu, utilizatorii sunt preocupati de partajarea datelor care se gasesc intr-o baza de date sau de pagini web si nu de discurile sau procesoarele folosite.
In practica, modelul partajarii difera in functie de de scopul si de modul cum utilizatorii folosesc respectivele resurse. La o extrema, gasim motoarele de cautare pe Web care pot fi folosite de utilizatori care nu vor veni nicodata in contact. La o alta extrema, este ceea ce poarta numele de CSCW(computer-supported cooperative working) in care avem un grup de utilizatori care coopereaza in mod direct prin partajarea de exemplu a unor fisiere.
In cadrul partajarii resurselor termenul de serviciu este vazut ca o parte distincta a unui sistem care face managementu unei colectii de resurse asemanatoare si face publica functionalitatea lor utilizatorilor si aplicatiilor. De exemplu, noi accesam un fisier partajat cu ajutorul unui serviciu pentru fisiere, sau trimitem un document la o imprimanta cu ajutorul unui serviciu pentru imprimanta. Accesul la serviciul respectiv se face de fapt printr-o serie de operatii, de exemplu pentru serviciul de fisiere avem operatiile de read, write, delete.
Termenul de server se refera la un program care ruleaza(proces) pe un computer dintr-o reteasi care accepta cererei de la computere din retea. Cei care trimit cereri poarta numele de clienti.
Intr-un sistem distribuit care este modelat prin folosirea programarii orientate obiect,resursele pot fi incapsulate ca obiecte si pot fi accesate de asa numitii client object prin invocarea unei metode de la server object.
1.3.1 WWW – World Wide Web
WWW este un sistem intr-o permanenta evolutie in care se pot publica si accesa resurse de la un capat la altul al internetului.
Web-ul este un sistem deschis : poate fi extins si implementat in feluri diferite fara a-i perturba functionalitatea.
Web-ul se bazeaza pe trei mari tehnologii standard :
- HTML Hypertex Markup Language – este un limbaj folosit pentru specificarea continutului si a cadrului paginilor afisate de browserele web
- URL(Uniform resource Locator) – este un mecanism cu ajutorul caruia se indentifica documente si alte resurse din Web
- HTTP-HyperText Transfer Protocol – un protocol folosit pentru obtinerea anumitor documente sau resurse
1.4 Provocari
Atunci cind dorim sa proiectam un sistem distribuit trebuie sa fim constienti de citeva probleme pe care le vom discuta mai jos :
- Eterogenitatea
- Deschiderea
- Securitatea
- Scalabilitatea
- Tratarea erorilor
- Concurenta
- Transparenta
1.4.1 Eterogenitatea
Internetul ofera posibilitatea utilizatorilor de a accesa servicii si de a rula aplicatii intr-un mediu eterogen. Eterogenitatea se aplica la mai multe nivele :
- retele – desi Internetul consta din multe tipuri de retele , diferentele dintre ele sunt ascunse de faptul ca se utilizeaza pentru comunicare aceleasi protocoale
- hardware – tipurile de date, cum ar fi intregii au o reprezentare diferita in functie de hardware-ul folosit.
- sisteme de operare – de exemplu modul cum se face schimbul de mesaje in UNIX este diferit de modul cum se face schimbul de mesaje in Windows
- limbaje de programare – In general multe limbaje de programare folosesc reprezentari diferite pentru caractere sau structuri de date( cum ar fi tablourile).
- implementari diferite ale dezvoltatorilor
Middleware – termenul de middleware este un nivel software care mascheaza eterogenitatea care se gaseste la nivelurile discutate mai sus. CORBA este un astfel de exemplu. La fel Java RMI, care suporta insa un singur limbaj de programare. Pentru a rezolva problema eterogenitatii , un middleware furnizeaza un model de calcul pentru a putea fi folosit de programatorii de aplicatii distribuite. Un posibil model ar consta din : invocarea unui obiect la distanta, notificarea la distanta a unui eveniment, acces SQL la distanta, procesarea tranzactiilor distribuite.
CORBA ofera posibilitatea de invocare a obiectelor la distanta, care permite unui obiect dintr-un program care ruleaza pe un computer sa invoce o metoda a unui obiect dintr-un program care ruleaza pe alt computer. Implementarea ascunde de fapt ca mesajele trec prin retea si are loc o cerere si un raspuns.
Eterogenitatea si codul mobil
Termenul de cod mobil desemneaza codul care poate fi trimis de pe o masina pe alta si ruleaza la destinatie(de exemplu apleturile Java). Pentru a putea rula este nevoie de existenta unei masini virtuale.
1.4.2 Openness(Deschiderea)
Termenul de openness este caracteristica unui sistem care spune daca acesta poate fi extins si implementat in moduri diferite. Deschiderea pentru un sistem distribuit se refera in primul rind la capacitatea de adaugare si publicarea de noi servicii de partajare a resurselor. Si acest lucru se poate face doar in cazul in care specificatiile si documentatiile respectivei interfete software sunt facute publice. Altfel spus interfetele sunt "published".
Sistemele deschise se caracterizeaza deci prin faptul ca interfetele lor sunt publice.
Sistemele distribuite deschise sunt bazate pe asigurarea unui mecanism uniform de comunicare si publicare a interfetelor pentru accesul la resursele partajate. Sistemele distribuite pot fi sonctruite din entitati eterogene, dar trebuie sa se asigura initial functionarea corespunzatoare a acestora.
Provocarea: integraerea componentelor scrise de utilizatori diferiti )
1.4.3 Securitatea
Securitatea unei resurse are trei componente:
- confidentilalitate – protectia impotriva dezvalurii neautorizate
- integritate – protectie impotriva alterarii sau coruperii
- disponibilitate – protectie impotriva interferentelor atunci cind se doreste accesarea unei resurse
1.4.4 Scalabilitatea
Un sistem este considerat scalabil daca daca el ramine functionabil si atunci cind creste semnificativ numarul de resurse si numarul de utilizatori.
Sa privim figura urmatoare care arata evolutia Internetului :
Computere in internet :
Data Computere Servere Web
Decembrie 1979 188 0
Iulie 1989 130.000 0
Iulie 1999 56.218.000 5.560.866
Proiectarea unui sistem distribuit scalabil trebuie sa ofere solutii la provocari ca:
- controlul costului resurselor fizice- In general , pentru ca un sistem cu n utilizatori sa fie scalabil , cantitatea de resurse fizice trebuie sa fie in jur de O(n)
- controlul pierderii performantelor- crestrea dimensiunii duce la scaderea performantelor. Sa consideram tabelul care contine corespondenta intre numele domeniilor unor computere si adresele Internet care sunt tinute de Domain Name System. Trebuiesc folositi algoritmii care folosesc structuri ierarhice care sunt mai buni decit cei care folosesc structuri liniare.
- prevenirea caderii resurselor software
- evitarea strangularilor – o situatie de strangulare se intilnea la predecesorul DNS-ului actual cind tabelul era tinut intr-un singur fisier master care putea fi downlodat de oricine avea nevoie. Situatia este in regula atita timp cit existau citeva sute de computere. Solutia a fost partitionarea tabelului in mai multe parti care au fost distribuite diferitelor servere din internet.
In mod ideal un sistem nu ar trebui modificat atunci cind numarul de utilizatori sau de resurse cresc, dar acest lucru este greu de obtinut.
Rezolvarea problemei scalabilitatii este una foarte importanta in domeniul sistemelor distribuite. Ca solutii propuse in acest sens avem : replicarea datelor, tehnici de cashing, crearea de taskuri similare care sa functioneze concurent, crearea de servere care sa conlucreze pentru rezolvarea anumitor taskuri.
1.4.5 Tratarea erorilor
Un procesor, un computer din retea poata cadea in mod independent de celelalte. De aceea fiecare componenta trebuie sa fie constienta ca o componenta de care depinde poate esua si atunci trebuie sa poata gasi o solutie.
Enumaram mai jos tehnici folosite pentru manipulararea erorilor :
- detectarea erorilor – unele erori pot fi detectate. De exemplu utilizarea sumei de control poate fi folosita pentru a verifica daca niste date au fost corupte. Sunt si erori care sunt greu de detectat, de exemplu caderea la distanta a unui server. Provocarea consta in a putea gasi solutii in situatii de eroare care nu pot fi detectate ci doar suspectate.
- Mascarea erorilor – unele erori care pot fi detectate pot fi ascunse sau gasite solutii de ameliorare a lor. Exemplu de situatii de ascundere a erorilor : un mesaj poate fi retransmis atunci cind a esuat sa ajunga, unui fisier i se poate pastra o copie pe un alt disk si daca o varianta a fost corupta se poate folosi varianta buna.
- Toleranta la erori – de exemplu cind un browser Web nu poate intra in legatura cu un server, informeaza utilizatorul asupra problemei si nu il face sa astepte la nesfirsit
- Recuperarea in urma aparitiei erorilor : recuperarea implica faptul ca sistemul este proiectat astfel incit datele pot fi recuperate dupa ce serverul a cazut.
- Redundanta – serviciile trebuie sa fie tolerante la erori prin folosirea unor tehnici de redundanta. Sa consideram exemplele : intre doua rutere din Internet intodeauna trebuie sa existe minim doua cai diferite, in Domin Name Service, fiecare tabel se gaseste pe cel putin doua servere diferite, o baza de date poate fi replicata pe mai multe servere(atunci cind un server cade utilizatorul este redirectat catre serverul care functioneaza).
Disponibilitatea(availability) unui sistem este reprezentata de timpul in care sistemul a putut fi utilizat.
1.4.6 Concurenta
Intr-un sistem distribuit exista posibilitatea ca o aceeasi resursa partajata sa poata fi accesata de mai multi utilizatori simultan. O solutie ar fi ca menanismul care face managementul resursei sa serveasca cite un client odata. Aceasta solutie este clar limitata. In general insa aplicatiile sunt construite pentru a putea deservi mai multi clienti.
Pentru ca un obiect sa fie sigur intr-un mediu concurent, operatiile asupra lui trebuie sa poata fi sincronizate in asa fil incit sa vem date consistente. Acest lucru se poate obtine prin tehnici standard ca semafoarele.
1.4.7. Transparenta
Un sistem este transparent atunci cind este perceput ca un intreg si nu ca o colectie de componente independente.
S-au identificat mai multe tipuri de transparenta :
- acces transparent – face posibil ca resursele remote si cele locale sa poata fi accesate prin aceleasi operatii
- transparenta localizarii – permite accesarea resurselor fara sa se stie unde sunt localizate
- transparenta concurentei – permite ca mai multe procese sa opereze concurent folosind resursele partajate fara sa interfereze intre ele
- transparenta replicarii permite ca mai multe instante a unei resurse sa poata fi folosite, acest lucru crescind performanta si rezistenta
- transparenta erorilor – permite ascunderea erorilor, permitind utilizatorilor sa-si rezolve task-ul in ciuda aparitiei unei erori software sau hardware
- mobilitate transparenta – permite miscarea resurselor si a clientilor in sistem fara sa fie afectata operatiile care doresc a fi facute
- performanta transparenta – permite sistemului sa poata fi reconfigurat pentru a-i inbunatati performantele
- scalabilitate transparenta- permite sistemului sa se expandeze fara sa fie nevoie de schimbarea structurii sistemului sau a algoritmilor folositi.
Bibliografie
[1]George Coulouris, Jean Dollimore, Tim Kindenberg, Distributed Systems- concepts and design, Ed. Addison-Wesley, 2002
[2]Tanenbaum A.S. Retele de calculatoare, Ed. Computer Press Agora, Tg. Mures, 1997
[3]Florian Mircea Boian, Programarea distribuita in Internet, metode si aplicatii, Ed. Albastra, Cluj-Napoca,2000
[4]Metaresurse in sisteme distribuite - Referat Doctorat, Alboaie Lenuta, mai 2004;


Optiuni
Recomandari
Articole
Portal si revista electronica intrebare.ro