All Projects → ppLorins → aurora

ppLorins / aurora

Licence: GPL-3.0 license
A Raft based K-V database implemented with cpp.

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to aurora

Kites
🪁 A consistency, partition tolerance completed distributed KV store, implementation of the Raft distributed consensus protocol and Kotlin.
Stars: ✭ 41 (+28.13%)
Mutual labels:  raft, kvstore
MIT6.824-2021
4 labs + 2 challenges + 4 docs
Stars: ✭ 594 (+1756.25%)
Mutual labels:  raft, kvstore
Logcabin
LogCabin is a distributed storage system built on Raft that provides a small amount of highly replicated, consistent storage. It is a reliable place for other distributed systems to store their core metadata and is helpful in solving cluster management issues.
Stars: ✭ 1,576 (+4825%)
Mutual labels:  raft
raft-badger
Badger-based backend for Hashicorp's raft package
Stars: ✭ 27 (-15.62%)
Mutual labels:  raft
Sharkstore
distributed key - value persisted storage system
Stars: ✭ 165 (+415.63%)
Mutual labels:  raft
Bifrost
Pure rust building block for distributed systems
Stars: ✭ 118 (+268.75%)
Mutual labels:  raft
Rafty
Implementation of RAFT consensus in .NET core
Stars: ✭ 182 (+468.75%)
Mutual labels:  raft
X0
Xzero HTTP Application Server
Stars: ✭ 111 (+246.88%)
Mutual labels:  raft
lol
A Raft implementation in Rust language. The name is not a joke.
Stars: ✭ 130 (+306.25%)
Mutual labels:  raft
Uhaha
High Availability Framework for Happy Data
Stars: ✭ 164 (+412.5%)
Mutual labels:  raft
Braft
An industrial-grade C++ implementation of RAFT consensus algorithm based on brpc, widely used inside Baidu to build highly-available distributed systems.
Stars: ✭ 2,964 (+9162.5%)
Mutual labels:  raft
Mit 6.824 2018
Solutions to mit 6.824 2018
Stars: ✭ 158 (+393.75%)
Mutual labels:  raft
Zatt
Python implementation of the Raft algorithm for distributed consensus
Stars: ✭ 119 (+271.88%)
Mutual labels:  raft
Sofa Jraft
A production-grade java implementation of RAFT consensus algorithm.
Stars: ✭ 2,618 (+8081.25%)
Mutual labels:  raft
Raft Rs
Raft distributed consensus algorithm implemented in Rust.
Stars: ✭ 1,859 (+5709.38%)
Mutual labels:  raft
openraft
rust raft with improvements
Stars: ✭ 826 (+2481.25%)
Mutual labels:  raft
Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (+250%)
Mutual labels:  raft
Cete
Cete is a distributed key value store server written in Go built on top of BadgerDB.
Stars: ✭ 153 (+378.13%)
Mutual labels:  raft
Atomix
A reactive Java framework for building fault-tolerant distributed systems
Stars: ✭ 2,182 (+6718.75%)
Mutual labels:  raft
cassem
(WIP) A distributed Configuration Center Application.
Stars: ✭ 23 (-28.12%)
Mutual labels:  raft

logo

AUR license

Table of Contents

About The Project

Aurora is a cross-platform Raft based K-V database. The basics of the current architecture is :

sys_arch

Note : The name Aurora has nothing to do with neither Apache Aurora nor Amazon aurora.

It's inspired by the raft protocol which often being known as a contrast of another widely known protocol : paxos. Aurora comes along with all of raft dominant features supported:

  • Log Replication: A two phase commit data replication solution.
  • Leader Election : A majority & term based failover solution.
  • Membership Change: A smart approach dealing with cluster topology changing.

Besides the consensus protocol, it also comes with a local storage subsystem whose idea is inspired and being the same with leveldb : to enhance blind writing operation throughput.

Last but not least, it's implemented by using the modern cpp(11/14/17) which may contributes to the popularization of the new lanaguage standards. After all, newer is probably better.

Getting Started

Project root directory explanation:

  • src : source code.
  • doc : documents.
  • bin : binaries & objects after successfully building.
  • working : running directory of aurora.
  • third_party : the third party dependencies.

Aurora has some basic components you need to firstly building before running.

Prerequisites

Create a third_party directory and build the above dependencies under that.

Note: How to build the dependencies is beyond the scope and you may need consulting the documents for each of them. Making sure the headers and libraries are correctly installed on your system. That maybe boring but can't get around.

After successfully built all the above dependencies, your working directory should looks something like this:

|-- src
|-- doc
|-- bin
|-- working
|-- third_party
    |-- boost_1_68_0
    |-- protobuf
    |-- grpc
    |-- glog
    |-- gflags
    |-- googletest

Building

Now, you are ready to compile aurora itself.

  • unix & linux & osx:
cd aurora && make -j4 BUILD_TYPE=[debug|release]

Note: some gcc versions(like gcc (GCC) 8.3.1) don't fully support std::atomic, thus you might need to install libatomic manually.

Usage

First , take a look at the configure files:

  • election.config : inner usage for election.
  • membership-change.config : inner usage for membership change.
  • topology.config : setup a cluster:
    • leader :leader node.
    • followers :follower nodes.
    • candidates :follower nodes.
    • all nodes are with format : xx.xx.xx.xx:port,like 192.168.0.100.

Only topology.config is intending to be controlled by users, the others are either managed by the system or for debugging purpose.

Second, after finish configuring topology.config, you can start a node by :

  • running command under *nix:
  cd aurora/working/
  nohup ../bin/aurora > aurora.log 2>&1 &
  • runing command under windows:
cd aurora\working\
..\aurora\working\aurora.exe

Contributing

It is strongly recommended to read the developer guide for details.

License

Distributed under the GPLv3 License. See the license file for more information.

Contact

Arthur - [email protected]

Donation

This project consumed a lot time away from the author, and if you think it helps, don't hesitate to show your generosity 💰 💰 💰

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].