An experimental suite of content-addressable storage servers.
Inspired by Git, Dropbox, and Trousseau, this is my attempt to understand the internals of these systems by writing my own simple implementation.
The generic design of each implementation will expose a REST API over the storage service. The backend will vary depending on the implementation language, but ultimately the content will be stored on disk.
Future enhancements:
- test suite to compare implementations
- support for versioned data
- support for de-duplication
The first implementation is written in Python. Versions using Ruby, Go, and Erlang will eventually follow.
To build all services:
./configure
make
To start dashboard web interface:
cd www
rackup
To start the service:
python src/python/cas.py [--port ...] [--dir ...]
Requirements:
gem install sinatra thin
To start the service:
ruby src/ruby/cas.rb [--port ...]
Requirements:
go get github.com/gorilla/mux
To start the service:
bin/go/cas [-port ...] [-dir ...]