Goals

Understand the basic concepts of a peer-to-peer architecture, unstructured and structured network topologies. Get to know simple hash functions and how they can be used to implement hash tables for fast array access to map keys to values. Learn about distributed hash tables and consistent hashing schemes to partition keyspaces efficiently. Implement a basic, distributed key-value store.

Examples

Exercises

Introduction

Context

Peer-to-Peer Architectures

Peer-to-peer computing is a decentralized method of computing in which participants share resources, such as processing power or data storage, with one another without the need for a centralized server. In this architecture, each participating computer, or "peer," can act as both a client and a server, allowing for a more distributed and democratic approach to computing. Peer-to-peer architectures are used in a variety of applications, such as Napster, BitTorrent, Bitcoin, Ethereum, IPFS and more.

BitTorrent

Bitcoin - Open source P2P money

Home | ethereum.org

IPFS Powers the Distributed Web

Overlay Network

An overlay network is a virtual network built on top of a physical network. In an overlay network, each node typically only knows a subset of its peers. Usually, a single node establishes direct socket communication (using Network Socket ) with other nodes in the network. Operations such as storing or retrieving data then involves contacting multiple nodes.

Unstructured Networks

In an unstructured network topology, nodes form random connections to each other. Often, gossip protocols (also known as epidemic protocols) are used to spread information reliably. Another major use case is the Border Gateway Protocol (RFC4271: BGP-4), which forms the core of our internet structure.

random_graph.svg

Gossip protocol

Border Gateway Protocol