peerToPeer

da pari a pari

In questo tipo di architettura tutte le macchine svolgono gli stessi ruoli, nel diagramma sopra è rappresentata la situazione in cui ogni processo dialoga con tutti gli altri, questa ovviamente è una semplificazione: è possibile che un processo parli in ogni istante con nessuno o più degli altri (anche con tutti) ma non è necessario che lo faccia sempre con tutti.

Una struttura come questa ha degli ovvi vantaggi: non c'è una macchina che ha più carico di lavoro delle altre e non ha un punto centrale di fragilità, è difficile però da implementare.

In una architettura p2p "pura" ogni client ha il compito di scoprire gli altri "peer": questa cosa potrebbe essere facile da farsi in una piccola rete locale mandando un messaggio in broadcast ma non è affatto ovvia su una rete di grandi dimensioni che viene usata anche per altri scopi oltre al nostro.

Una soluzione per trovare i propri peer è quella dell'uso di un "Discovery Server": quando mi connetto dico al server (di cui devo conoscere l'ubicazione) chi sono e lui mi da un elenco di miei peer (questa è la soluzione usata da BitTorrent). Ci si riferisce a queste soluzioni comunque come p2p perché l'architettura di tipo client/server viene utilizzata solo in una piccola fase del lavoro.