Hybris: robust and strongly consistent hybrid cloud storage
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
jerasure EcManager and EcManager test; fix on Jerasure JNI bindings (check on … Jul 3, 2014
lib added Jerasure with JNI bindings Jul 1, 2014
.gitignore bump dependencies versions May 11, 2015
.travis.yml travis fix Aug 18, 2016
LICENSE added license file and headers, modified readme Feb 5, 2014
Makefile fix minor warnings of huntbugs Nov 18, 2016
accounts-test.properties add FileKvs Nov 23, 2016
accounts.properties ** KVS refactoring ** ; transient and Rackspace kvs Aug 5, 2013
hybris.properties fix issue with testing of TransientKvs Nov 2, 2016


Hybris Build Status

Hybris is a key-value hybrid cloud storage system that robustly replicates data over untrusted public clouds while keeping metadata on trusted private premises.
Thanks to this design, Hybris provides strong consistency guarantees (i.e., linearizability) and affordable Byzantine fault tolerance (i.e., withstanding f faulty clouds with as few as 2f+1 replicas).
Hybris is also very efficient: in the common case it writes to f+1 clouds and it reads from one single cloud.

Hybris architecture

For more information and detailed benchmarks read our SoCC14 paper.
A version of the personal cloud application StackSync featuring Hybris as storage backend is available here.

Code base overview

The code base of Hybris is composed by two main modules: MdsManager and KvsManager; the first is a thin wrapper layer of the metadata distributed storage service (i.e. ZooKeeper or Consul), while KvsManager implements the storage primitives towards the APIs of the main public cloud storage services - currently, it supports Amazon S3, Google Cloud Storage, Rackspace Cloud Files and Windows Azure Blob.

Maven is used to compile the code and manage the dependencies.

Read the wiki for more information on development setup.

Authors and license

Hybris has been developed at EURECOM as part of the CloudSpaces European research project. Its code is released under the terms of Apache 2.0 license.

Erasure coding support is provided by the Jerasure library through its JNI bindings.