Peer To Peer
The Peer To Peer (P2P) architecture is a distributed application architecture that breaks up work between peers. All peers are considered to be equal in priority and value. Each peers make a part of their processing power, disk storage or network bandwidth, directly available to other peers. This is done without the need for central coordination by servers or stable hosts. Each peer consumes the resources from another, but also supplies some as well. The main use of the Peer To Peer architecture has been with the file sharing systems, torrent based systems and social networking.
Contents |
Architecture
Peer To Peer systems often implement an abstract overlay network on top of the native or physical network topology. These are used for indexing and peer discovery and make the P2P system independent from the physical network topology. The actual deliverable content is then transported using underlying protocols such as TCP/IP.
Structured systems
Structured P2P networks use a globally consistent protocol so that any node can efficiently route a search to some peer that has the desired file. The most common type of structured system is the Distributed Hash Table system.
Distributed hash tables
Distributed hash tables (DHTs) provide a lookup service similar to a hash table: (key, value) pairs are stored in the DHT, and any participating node can efficiently retrieve the value associated with a given key. Responsibility for maintaining the mapping from keys to values is distributed among the nodes, in such a way that a change in the set of participants causes a minimal amount of disruption. This allows DHTs to scale to extremely large numbers of nodes and to handle continual node arrivals, departures, and failures.
The use of DHTs include BitTorrent's distributed tracker.
Unstructured systems
Unstructured systems exist where the overlay links are created arbitrarily. When a new peer joins the network, it copies the links of another peer. If it wants to find the location of a specific piece of data, it has to flood the network with queries until an appropriate source is found. Queries of this nature are not always resolved, especially if the data is rare. The technique of flooding the network causes a large amount of traffic, which is not efficient. However, this approach is much simpler than the Structured systems approach, and is used in many P2P networks.