Introduction
Peer-to-Peer is a type of decentralized and distributed network architecture in which individual nodes in the
network (called "peers") act as both suppliers and consumers of resources, in contrast to the centralized client–server
model where client nodes request access to resources provided by central servers (Wikipedia 2013).
Problem Description
Multiple systems need to share common information and applications along with the resource demands. A peer-to-peer
network is a distributed application architecture that partitions tasks or work loads between peers. Peers are equally
privileged participants in the application.
Applicable Context
The nodes in a peer-to-peer network need to operate as both "clients" and "servers"; they both provide information and
services and require information and services from other peers. This arrangement is very useful for sharing large
amounts of information, sharing resources, and sharing services.
Pattern Constraints
This pattern is not applicable if the application or the information cannot be distributed on multiple
servers. The scalability of the applications and information access needs to be examined and managed, since this
may be an issue if growth is expected, especially the numbers of peers that communicate simultaneously. Also, since the
information and application is distributed on servers, IT security becomes and important aspect of the solution.
Pattern Solution
Peers make a portion of their resources, such as processing power, disk storage or network bandwidth, directly
available to other network participants, without the need for central coordination. Peers are both suppliers and
consumers of resources, in contrast to the traditional client-server model in which the resources are divided.
Emerging collaborative P2P systems are going beyond simple peers providing a single service. Powerful peers are
appearing that bring unique resources and capabilities to a virtual community, providing diverse services beyond those
that can be accomplished by individual peers, yet that are beneficial to all the peers.
Peer-to-peer networks generally implement some form of virtual overlay network on top of the physical network topology;
nodes in the overlay form a subset of those in the physical network. Data is still directly exchanged over the network,
but at the application layer peers communicate directly with each other via logical overlay links. These overlays
are used for indexing and peer discovery, and make the P2P system independent from the physical network topology. Based
on how overlay network nodes are linked, and how resources are indexed and located, we can classify them as
unstructured or structured (or as a hybrid). See: https://en.wikipedia.org/wiki/Peer-to-peer
Related Patterns
Other variations and related patterns to the peer-to-peer pattern are:
-
Distributed Computing Pattern - a system in which peer components,
located on distributed and networked computers coordinate their activity through the passing of messages.
-
N-Tier Pattern - multi-tier architecture (often referred to as
n-tier architecture) is a variation of client-server architecture where the presentation, application processing,
and data services are separated.
-
Client-Server Pattern - The client-server pattern is a
distributed application structure in computing that partitions workloads between the providers of a resource or
service, called servers, and service requesters, called clients.
|