Totuși, deși P2P este folosit în aplicațiile de partajare de fișiere, acest lucru nu înseamnă că nu poate fi utilizat în alte aplicații. De fapt, această tehnologie poate fi utilizată într-o serie de alte aplicații și devine din ce în ce mai importantă în lumea modernă a comunicațiilor omniprezente.
De asemenea, Microsoft nu a ignorat apariția tehnologiei P2P și a început să-și dezvolte propriile instrumente și instrumente pentru aplicarea sa. Deci, a existat o platformă Microsoft Windows Peer-to-Peer Networking. Acționează ca un fel de cadru pentru comunicarea în aplicațiile P2P. Această platformă include componente importante precum PNRP (Peer Name Resolution Protocol) și PNM (People Near Me).
În plus, .NET Framework 3.5 include noul spațiu de nume System.Net.PeerToPeer și mai multe tipuri și instrumente noi care vă permit să creați aplicații P2P cu un efort minim.
Prezentare generală a tehnologiei P2P
Tehnologia P2P este o abordare alternativă la crearea de rețele. Pentru a înțelege modul în care P2P diferă de abordarea "standard" pentru furnizarea de comunicații, nu face rău să facem un pas înapoi și să ne amintim ce relație "client-server" este. Comunicarea de acest tip este foarte des utilizată în aplicațiile moderne de rețea.
Arhitectura client-server
De asemenea, aplicațiile desktop care au capacitatea de a se conecta la o rețea locală sau largă se conectează de obicei la un singur server, de exemplu, un server de bază de date sau un server care oferă un set de servicii.
Figura de mai jos prezintă o versiune simplă a arhitecturii client-server:
Nu există nimic în mod esențial în neregulă cu o astfel de arhitectură, și de fapt, în multe cazuri se va dovedi a fi exact ceea ce este necesar. Cu toate acestea, are o problemă cu scalabilitatea. Figura următoare prezintă modul în care se va scala la adăugarea de clienți suplimentari:
Prin adăugarea fiecărui client, încărcarea de pe server, care trebuie să interacționeze cu fiecare client, va crește. Dacă din nou luăm un exemplu cu un site web, atunci o astfel de creștere a încărcării poate duce la eșecul site-ului. Dacă traficul este prea mare, serverul va înceta să răspundă.
Desigur, există opțiuni de scalare cu care puteți atenua această situație. Unul dintre ele oferă o creștere a puterii și a resurselor serverului, iar cealaltă - scalarea "în lățime" prin adăugarea de servere suplimentare. Prima metodă, firește, este limitată la tehnologiile disponibile și la costul echipamentelor mai puternice. A doua metodă este potențial mai flexibilă, dar necesită adăugarea unui strat suplimentar în infrastructură pentru a permite clienților fie să interacționeze cu serverele individuale, fie să mențină starea sesiunii independent de serverul cu care se interacționează. Pentru a face acest lucru, sunt disponibile multe soluții, cum ar fi produsele care vă permit să creați ferme de web sau ferme de servere.
Arhitectura de tip P2P
Abordarea "peer-to-peer" este complet diferită de abordarea cu scalarea "în sus" sau "lățimea". În cazul P2P, în loc să se concentreze pe încercarea de a îmbunătăți comunicarea dintre server și clienții săi, toată atenția este acordată găsirii unor modalități prin care clienții pot interacționa unul cu celălalt.
Să luăm, de exemplu, să presupunem că un site cu care clienții interacționează este www.williamspublishing.com, și publicarea Williams a anunțat lansarea unei noi cărți pe acest site și oferind-o ca un download gratuit tuturor participanților, dar numai pentru o zi. Nu este greu de ghicit că într-o astfel de situație în ajunul apariția site-ului cărții începe pentru a vedea o mulțime de oameni care se vor actualiza în mod constant conținutul său, în browserele lor și se așteaptă să vadă fișierul. Imediat ce fișierul devine disponibil, toți vor înceta să încerce să îl descarce în același timp și, cel mai probabil, serverul web care servește site-ului web nu va supraviețui unui astfel de impact și va eșua.
Pentru a preveni eșecul serverului web, puteți utiliza tehnologia P2P. În loc să trimiteți fișierul direct de la server către toți clienții simultan, acesta poate fi trimis numai unui anumit număr de clienți. Câțiva alți clienți îl pot descărca de la acei clienți care o au deja. După aceasta, mai mulți clienți îl pot descărca de la clienții care au primit-o secundă etc. De fapt, acest proces se poate întâmpla și mai rapid datorită împărțirii fișierului în bucăți și distribuirii acestor bucăți între clienți, dintre care unul le va descărca direct de pe server și alții de la alți clienți. Acesta este modul în care tehnologia sistemelor de partajare a fișierelor precum BitTorrent funcționează, după cum se arată în figură:
Caracteristici de arhitectură P2P
Cu toate acestea, în arhitectura de schimb de fișiere descrisă aici, există încă unele probleme care trebuie rezolvate. În primul rând, cum știu clienții că există alți clienți și cum vor detecta fragmentele din fișier pe care le-ar putea avea alți clienți? În plus, cum putem asigura o interacțiune optimă între clienți, dacă pot fi separați între ei de continente?
Fiecare client care participă la aplicația de rețea P2P pentru a depăși aceste probleme ar trebui să poată efectua următoarele operații:
Detectați alți clienți;
conectați la alți clienți;
interacționați cu alți clienți.
În ceea ce privește capacitatea de a detecta alți clienți, există două soluții evidente: suport pentru o listă de clienți pe server, astfel încât clienții pot primi și de a comunica cu alți clienți (numite peers- participanți egale), sau utilizarea infrastructurii (de ex PNRP), care permite clienții se descoperă reciproc direct. Cele mai multe sisteme de partajare a fișierelor utilizează o soluție care acceptă o listă pe server și utilizează servere numite trackere.
În sistemele de partajare a fișierelor, orice client poate acționa și ca server, așa cum se arată în figura de mai sus, declarând că are un fișier disponibil și înregistrându-l pe server-tracker. De fapt, o rețea P2P pură nu are nevoie de niciun fel de servere, ci doar de parteneri.
Problema conectării la alți clienți este mai subtilă și se extinde la întreaga structură utilizată de aplicația de rețea P2P. Dacă există un grup de clienți, în care toți ar trebui să poată interacționa unul cu celălalt, topologia legăturilor dintre acești clienți poate dobândi o formă extrem de complexă. Adesea, productivitatea poate fi îmbunătățită prin crearea mai multor grupuri de clienți care au capacitatea de a stabili o legătură între clienți în fiecare dintre ele, dar nu și cu clienții din alte grupuri.
În cazul creării acestor grupuri în conformitate cu principiul localității este posibil să se realizeze în continuare o productivitate îmbunătățită, pentru că, în acest caz, clienții sunt capabili să interacționeze unii cu alții într-un scurt (cu un număr mai mic de hamei) rute între mașinile de rețea.
Oferind clienților posibilitatea de a descoperi, conecta și interacționa unul cu altul, joacă un rol central în orice implementare P2P.
Terminologie P2
În secțiunile anterioare, noțiunea de peer (peer) a fost deja introdusă - asta îl numesc clienții în rețeaua P2P. Cuvântul "client" în rețeaua P2P nu are sens, deoarece nu există server obligatoriu, clientul de care trebuie să fii.
Grupurile de participanți egali care sunt conectați unul la celălalt sunt numiți ochiuri. nori (nori) sau grafice. Fiecare grup individual este considerat a fi bine conectat dacă este îndeplinită cel puțin una dintre următoarele condiții:
Între fiecare pereche de colegi există o cale de conectare care permite fiecărui participant să se conecteze la un alt participant la egal la egal în mod necesar.
Între fiecare pereche de participanți egali există un număr relativ mic de conexiuni prin care pot comunica.
Îndepărtarea unui coleg de la grup nu privează pe ceilalți parteneri de posibilitatea de a interacționa între ei.
Rețineți că acest lucru nu înseamnă deloc că fiecare coleg trebuie să se poată conecta neapărat între ei. De fapt, dacă analizați rețeaua din punct de vedere matematic, puteți constata că, pentru a se conforma condițiilor de mai sus, participanții la egal la egal trebuie să se poată conecta la un număr relativ mic de alți colegi.
O altă noțiune în tehnologia P2P, despre care ar trebui să știți, este propagarea undelor (inundații). Propagarea înfășurărilor se referă la modul în care o singură piesă de date poate fi transmisă prin rețea pentru toți participanții la egal la egal și care pot sondaj alte noduri din rețea pentru a detecta o anumită bucată de date. În rețelele P2P nestructurate, acest proces se desfășoară în mod arbitrar; în același timp, este stabilită o legătură cu cei mai apropiați participanți din vecinătate, care, la rândul lor, comunică cu cei mai apropiați vecini etc. până la atingerea fiecărui participant din rețea.
De asemenea, este posibil să se creeze rețele structurate P2P cu căi bine definite, pentru care cererile și datele ar trebui distribuite între colegii.
Soluții P2P
Cu o infrastructură adecvată pentru P2P, puteți începe să dezvoltați nu doar versiuni îmbunătățite ale aplicațiilor client-server, ci și aplicații complet noi. Tehnologia P2P este potrivită în special pentru aplicațiile din următoarele clase:
aplicațiile destinate distribuirii de conținut, inclusiv aplicațiile de partajare a fișierelor menționate anterior;
aplicațiile concepute pentru colaborare, cum ar fi aplicațiile care vă permit să partajați spațiul de lucru și tabla albă;
aplicații concepute pentru a oferi comunicare multi-utilizator și care să permită utilizatorilor să comunice și să facă schimb de date direct, mai degrabă decât prin intermediul serverului;
aplicații concepute să distribuie procesarea, ca o alternativă la aplicațiile pentru supercomputerele care manipulează cantități uriașe de date;
Aplicații Web 2.0 care combină unele sau toate aplicațiile de mai sus și le transformă în aplicații web dinamice de ultimă generație.