Saturday, May 12, 2007

Software Architecture Series - Peer-to-peer Architecture

I thought of writing a series of posts on Software Architectures. In this first post, I will discuss Peer-to-peer (P2P) Architecture.

In a P2P architecture there's no notion of clients and servers; equal peer nodes show the behavior of both clients and servers.

In a P2P architecture clients provide resources (bandwidth, storage space, computing power) and results in a more robust systm with data replicated over multiple peers with no single point of failure.

Applications of P2P Architecture can be categorized into the following areas:
  1. Communication and Collaboration - Chat/Irc, IM (Aol, Icq, Yahoo, Msn), Jabber
  2. Distributed Computation - use peer computer processing power
    • Seti@home - Search for Extra Terrestrial Intelligence (SETI)
    • genome@home - understand gentic information
  3. Database Systems
    • Local Relational Model (LRM) - relational queries to run across 1000s of computers
  4. Content Distribution Infrastructure for sharing digital media and other data
    • Most P2P are under this category. e.g. Napster, Publius, Gnutella, KaZaa, Freenet, MojoNation, Oceanstore, PAST, Chord, Scan, FreeHaven, Groove, Mnemosyne
I personally found the concept of contributing to searching for extra terrestrial intelligence and understanding genetic information by sharing ones PC resources interesting.

A good example of a P2P application of today is BitTorrent [2].

References:
[1] A Survey of Peer-to-Peer Content Distribution Technologies
[2] Wikipedia (BitTorrent)

2 comments:

JK said...

Hi Himath,

Could you please more elaborate on the P2P model? Do apache loadbalancer or mysql cluster belong to this model?

A sample realtime model would help us more.

Thank you for providing us your valuable thoughts.

Himath said...

Hi JK, This is Work in Progress. I am not aware of Apache Loadbalancer or MySQL cluster but there's a lot of iteresting applications that I am planning to post. Stay tuned ...