George Coulouris, Jean Dollimore and Tim Kindberg

Distributed Systems
Concepts and Design

Fourth Edition

HomeReferencesInstructors GuideErrataAdditional materialContents and PrefaceAuthors

 

New chapters

Click the name of one of the new chapters above to see its contents.

Chapter 10 Peer-to-peer systems

Contents

10.1 Introduction

10.2 Napster and its legacy

10.3 Peer-to-peer middleware

10.4 Routing overlays

10.5 Overlay case studies: Pastry, Tapestry

10.6 Application case studies: Squirrel, OceanStore, Ivy

Squirrel web cache; OceanStore file store; Ivy file system;

10.7 Summary

Outline

Peer-to-peer systems represent a paradigm for the construction of distributed systems and applications in which data and computational resources are contributed by many hosts on the Internet, all of which participate in the provision of a uniform service. Their emergence is a consequence of the very rapid growth of the Internet, embracing many millions of computers and similar numbers of users requiring access to shared resources.

A key problem for peer-to-peer systems is the placement of data objects across many hosts and subsequent provision for access to them in a manner that balances the workload and ensures availability without adding undue overheads. We describe several recently-developed systems and applications that are designed to achieve this. Peer-to-peer middleware systems are emerging that have the capacity to share computing resources, storage and data present in computers ‘at the edges of the Internet’ on a global scale. They exploit existing naming, routing, data replication and security techniques in new ways to build a reliable resource sharing layer over an unreliable and untrusted collection of computers and networks.

Peer-to-peer applications have been used to provide file sharing, web caching, information distribution and other services exploiting the resources of tens of thousands of machines across the Internet. They are at their most effective when used to store very large collections of immutable data. Their design diminishes their effectiveness for applications that store and update mutable data objects.