Sisteme distribuite si concepte peer2peer



1.1 Generalitati

O definitie simpla apare astfel: o colectie de resurse heterogene interconectate intr-o retea si care suporta dezvoltarea de aplicatii si servicii care folosesc arhitectura fizica a acestor resurse. Trebuie avut in vedere faptul ca fiecare componeta a sistemului este diferita intr-un fel sau altul, dar trebuie sa coopereze prin diferite metode: schimb de mesaje, migrare de obictele, etc. Un sistem distribuit poate fi de mai multe feluri, bazat pe diferite modele: Modelul Client-Server, Modelul obiectual, Modelul "code on demand".
1.1.1 Modelul "code on demand" (Applets)
Clientul are resursele de calcul, el trimite o cere la client pentru Applet, care este downloadat si executat pe masina clientului. Clientul n-are nevoie de software preinstalat, tot codul este downloadat. Applet-ul deschide o noua conexiune TCP sa comunice cu server, poate trimite update-uri la server care poate propaga pe acestea mai departe la ceilalti clienti. Aceasta solutie are urmatoarele dezavantaje:
. Majoritatea firewallurilor nu permit deschiderea unei noi conexiuni TCP la server
. Serverul este "central point of failure"
. Nu este scalabil din doua motive:
o O conexiune permanenta este necesara pentru fiecare client.
o Update-urile trebuie propagate la clienti in mod unicast.




1.1.2 Modelul client-server
In cazul modelului client/server activitatea are loc in mod asimetric: un proces cere informatia (clientul), iar altul o are si i-o trimite (serverul), dupa o prealabila validare. In cazul in care serverul are nevoie de informatii de la un alt server, devine el insusi client. Un server trebuie sa fie capabil sa raspunda la mai multe cereri din partea clientilor, procesul de cerere-raspuns sa nu fie blocant, o eventuala cerere de la un client sa nu fie blocata pana cand se va raspunde cererii precedente. Se va folosi multithreading, pentru fiecare client se deschide un nou fir de executie pentru a-l deservi, astfel serverul ramane deschis spre a primi noi cereri. Clientul trimite o cerere, serverul ia cerere, ii verifica valabilitatea, proceseaza cererea si apoi trimite raspunsul.









Dezavantajele modelului client-server:
. Pentru fiecare utilizator se deschide o noua conexiune, deci solutia are o scalabilitate scazuta.

1.1.3 Modelul obiectual
Fiecare resursa impartasita este vazuta in sistem ca un obiect. Un obiect poate fi atat client cat si server, poate sa ceara servicii de la un alt obiect, dar poate sa i se ceara si lui servicii. Intr-un sistem distribuit obiectual fiecare obiect are identitate unica, identitate tinuta de un server de nume. Obiectele pot sa migreze oriunde in sistem, dar trebuie sa-si pastreze identitatea, de aici si necesitatea unui server de nume. Partea de identificare a locatiei si a comunicarii intre obiecte este realizata de catre middleware, care poate avea mai multe tipuri:
. Object Oriented middleware (Sun's RMI, CORBA, DCOM, Web Services)
. RPC middleware
. orientat pe tranzactii
. orientat pe mesaje
1.2 Concepte Peer2Peer

In cazul modelului client-server, marea parte a procesarii necesara se desfasoara in partea serverului, clientul ramane relativ pasiv, incapabil sa ofere servicii (din mai multe motive, de exemplu au adrese IP alocate dinamic sau fac parte dintr-o retea privata). Sa presupunem ca numai 10 milioane calculatoare de 1000 MHz sunt conectate orice moment la Internet, fiecare posedind numai 1 Gb spatiu liber, 1 Kb/s latime de bande libera, si 10 % de putere de procesare nefolosita. Asta ar insemna ca, in orice moment acesti clienti dispun de un spatiu liber de 100 PB (petabytes), aproximativ 1.25 Gb/s latime de banda, si 10 milliarde de MHz putere de procesare, toate acestea nefolosite!
Peer2peer este cheia folosirii acest potential, oferand un mecanism care sa permita acestor clienti sa-si ofere servicii reciproce. Retele p2p nu se bazeaza pe un server centralizat pentru a accesa servicii, de obicei ei opereaza in afara DNS-ului. Aceste clienti se comporta ca client si server in acelasi timp, determina serviciile oferite de reteaua p2p si se alatura, contribuie la aceste servicii. Cele mai notabil avantaje al retelelor p2p sint dispersarea responsabilitatii de a oferi servicii la toti participanti, elimina "single point of failure", ofera solutii mult mai scalabile decat arhitectura client-server, exploateaza mai bine latimea de banda spre periferia Internetului, comunicarea se poate face pe rute diferite, reducand congestia retelei.






Arhitectura unei retele peer2peer:



Din pacate arhitectura peer2peer are si dezavantaje datorate naturii redundante si nederministice a retelelor peer2peer. De exemplu, clienti care trimit cerere pentru exact aceeasi resursa se pot conecta la noduri diferite, pe rute diferite, sa primeasca raspuns diferit. Cereri trimise pe retea peer2peer poate sa nu rezulte intr-un raspuns imediat, sau, in unele cazuri poate sa rezulte cu nici un raspuns. Resurse pot disparea temporar daca nodurile care ofera acestea resurse se deconecteaza de la retea.
Totusi, P2P poate sa rezolve aceste dificultati, prin replicarea a aceeasi resursa pe mai multe peeri (peer: unitatea de procesare fundamentala a oricarui solutii p2p), oferand acces redundant la aceeasi resursa.