distributed-system

module
v0.0.0-...-9789875 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2021 License: MIT

README

Distributed System Course

Go Report Card MIT license GoDoc

The fantastic experiment for education on distributed system, including the ubiquitous communication over the Web, classic techniques for scaling and efficient storage and a popular application case, aims to incredibly capture the essences of the difficult but useful distributed system theory, such as the two-phase protocol and the paxos consensus protocol. It covers the common technique issues almost in all the distributed systems, including communication, data consistency, parallism, concurrence, replication. The techniques take attentions on the performance, fault-tolerance, scaling and user-friendliness, which are important metrics for distributed systems.

Modules or library

  1. HTTP library over TCP and Unix domain socket
  2. 2PC library.
  3. Tiny key-value storage module.
  4. Transcation-supported shopping web service module over the sharded key-value storage.
  5. Paxos library.
  6. Key-value storage module over paxos.
  7. Utility for the resouce pool.
  8. A final system, including web service, sharded and replicated key-value storage.

Testing

Every package has its unit test for functions and performance. (TODO) The final system will be tested in a container-style way.

Tips for students

  1. "// You may add code here". Not necessary, but you can do it.
  2. "// TODO Your code here". Necessary.

Directories

Path Synopsis
Package http provides server and client interfaces in http protocol.
Package http provides server and client interfaces in http protocol.
Package paxos provides paxos components for the strong consistency.
Package paxos provides paxos components for the strong consistency.
Package paxoskv provides fault-tolerant KV-store components based on paxos, including service and client.
Package paxoskv provides fault-tolerant KV-store components based on paxos, including service and client.
Package shopping provides rush shopping backend service.
Package shopping provides rush shopping backend service.
Package tinykv provides concurrent primitive operations for a hashmap-based storage.
Package tinykv provides concurrent primitive operations for a hashmap-based storage.
Package twopc provides a simple but complete library for two-phase commit protocol for transcations.
Package twopc provides a simple but complete library for two-phase commit protocol for transcations.
Package util provides basic utilities.
Package util provides basic utilities.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL