Traditionally distributed systems are architected as central servers serving many clients. Recently a number of Internet applications (such as Napster, Gnutella, and Freenet) have demonstrated the benefits of a peer-to-peer architecture, in which clients cooperatively provide a service, without relying on central servers. This talk will argue that peer-to-peer systems are also a good architecture for building mission-critical distributed services, because they don't have single points of failure.
More specifically, this talk will propose peer-to-peer systems based on distributed hash tables (DHTs). DHTs can be made robust in the face of failures, attacks and unexpectedly high loads. They are scalable, achieving large system sizes without incurring undue overhead. They are self-configuring, automatically incorporating new nodes without manual intervention or oversight. They simplify distributed programming by providing a clean and flexible interface. And, finally, they provide a shared infrastructure simultaneously usable by many applications. We sketch an implementation of a DHT based on the Chord distributed lookup system.