freestore

package module
v0.0.0-...-1a21ecf Latest Latest
Warning

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

Go to latest
Published: May 8, 2015 License: MIT Imports: 0 Imported by: 0

README

Freestore

GoDoc Build Status

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

Documentation

Overview

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

See https://github.com/mateusbraga/freestore

Directories

Path Synopsis
cmd
freestore_admin
Command freestore_admin runs a sample controller of servers.
Command freestore_admin runs a sample controller of servers.
freestore_client
Command freestore_client runs a sample implementation of a freestore client.
Command freestore_client runs a sample implementation of a freestore client.
freestore_measures
Command freestore_measures runs a sample client that measures freestore's latency and throughput.
Command freestore_measures runs a sample client that measures freestore's latency and throughput.
freestored
Command freestored runs a sample implementation of a freestore server.
Command freestored runs a sample implementation of a freestore server.
pkg
client
Package client implements a Freestore client
Package client implements a Freestore client
comm
Package comm implements the communication module of freestore's clients and servers.
Package comm implements the communication module of freestore's clients and servers.
consensus
Package consensus implements a simplified version of Paxos consensus protocol.
Package consensus implements a simplified version of Paxos consensus protocol.
server
Package server implements a Freestore server.
Package server implements a Freestore server.
view
Package view implements the view type.
Package view implements the view type.

Jump to

Keyboard shortcuts

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