Public | Automated Build

Last pushed: 3 years ago
Short Description
Short description is empty for this repo.
Full Description

Freestore


Freestore is a research project developed as part of Mateus Braga's Bachelor's thesis (Portuguese) at University of Brasilia, Brazil. It is a library that implements a fault-tolerant, consistent, and reconfigurable distributed memory.

Freestore implements a storage abstraction with READ/WRITE operations. It replicates the data over all servers and uses the idea that two majorities always intersect to provide fault-tolerance and per-key strong consistency (linearizability - read most recently written value). Freestore also implements a fault-tolerant reconfiguration mechanism (other than consensus protocol - no agreement is required, like CRDTs) that allows the cluster to continue operating correctly during configuration changes.

Freestore is by design a quorum system without a consensus protocol and as such cannot support conditional write operations like compare-and-set. This limits the kind of applications that should use something like Freestore to the ones that don't need to atomically perform conditional writes.

An evaluation of this Freestore implementation is documented in Portuguese here. Eduardo Alchieri's original Freestore paper in Portuguese is here: http://sbrc2014.ufsc.br/anais/files/trilha/ST07-2.pdf.

Development

Freestore is written in Go. You'll need a recent version of Go (at least go1.2) installed on your computer to build Freestore.

Build/Install

go install ./...

Test

go test ./...

Running

$GOPATH/bin/freestore_server -bind :5000
$GOPATH/bin/freestore_server -bind :5001
$GOPATH/bin/freestore_server -bind :5002

$GOPATH/bin/freestore_client
Docker Pull Command
Owner
mateusbraga
Source Repository

Comments (0)