Distributed Systems
Distributed Systems (SODX)
Fall 2010
News
Slides, lab documents, etc.
Course Description
TBP
Syllabus
Introduction:
Erlang:
Basic concepts:
Interprocess communication, RPC, RMI
- Slides
- "Implementing Remote Procedure Calls" (the original paper, for those inclined to history)
- "A Note on Distributed Computing" (for those inclined to higher level views)
- "A Distributed Object Model for the Java System" (for those inclined to detailed technical views)
Time
- Slides
- "Time, Clocks, and the Ordering of Events in a Distributed System" (the paper on Lamport clocks)
Global state:
Consensus:
Coordination, agreement:
- Slides (updated !)
- Paxos: Slides
- Paper: "Paxos made simple"
- Paper: "The Chubby Lock Service for Loosely-Coupled Distributed Systems"
Transactions:
Replication:
Peer-to-peer:
Distributed file systems:
- Slides
- Paper: "The Google File System"
- Paper: "Disconnected operation in the Coda File System"
Name systems:
Large scale systems:
Summary:
A template for the brief paper review reports.
Labs
- An Erlang primer: This is not a crash course in Erlang since there are plenty of tutorials available on the web. It describes the tools that you need so that you can get a programming environment up and running.
- Chatty: Your task is to implement a chat service, and chat with your friends. A simple client and server will do the job. Of course robustness may be an issue and you will explore a way for that.
- Muty: Your task is to implement a distributed mutual-exclusion lock. The lock will use a multicast strategy and work in a asynchronous network where we do not have access to a synchronized clock. You will do the implementation in three versions: the dead-lock prone, the unfair and the Lamport clocked.
- (optional) Loggy: if you want more about logical time with a practical example: a logging procedure that receives log events from a set of workers. The events are tagged with the Lamport time stamp of the worker and the events must be ordered before written to stdout. It's slightly more tricky than one might first think.
- Paxy: This exercise will give you the opportunity to learn the Paxos algorithm for gaining consensus in a distributed system. You should know the basic operations of the algorithm but you do not have to know all the details, that is the purpose of this exercise.
- Opty: You will implement a transaction server using optimistic concurrency control. You will also learn how to implement a updatable data structure in Erlang that can be accessed by concurrent, possibly distributed, processes. Before you start you should know how optimistic concurrency control with backwards validation works.
- (optional) Timey: if you want more about transactions with logical time: time based concurrency control.
- Groupy: You will implement a group membership service that provides atomic multicast. The aim is to have several application layer processes with a coordinated state i.e. they should all perform the same sequence of state changes. A node that wish to perform a state change must first multicast the change to the group so that all nodes can execute it. Since the multicast layer provides total order, all nodes will be synchronized.
- (optional) Toty: if you want more about multicast: total order multicast service using a distributed algorithm. The algorithm is the one used in the ISIS system and is based on requesting proposals from all nodes in a group.
- Chordy: You will implement a distributed hash table following the Chord scheme. In order to understand what you're about to do you should have a basic understanding of Chord and preferably have read the original paper.
For the course reports, we recommend to follow these instructions. Here is a template for the lab reports.
Most lab assignments come from the excellent "Distributed Systems in Erlang" by Johan Montelius.