Skip to content

Fundamental Building Block for Elastic Storage With Strong Consistency and Reliability

License

Notifications You must be signed in to change notification settings

matrixorigin/matrixcube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

21490cc · Jun 20, 2022
Dec 31, 2021
May 17, 2022
Jun 20, 2022
May 17, 2022
May 17, 2022
May 17, 2022
Jun 13, 2022
Jul 29, 2021
Apr 27, 2022
Sep 10, 2021
Apr 27, 2022
Apr 6, 2022
May 17, 2022
Jun 13, 2022
Dec 13, 2021
May 10, 2022
Apr 3, 2022
May 17, 2022
Apr 27, 2022
Jun 6, 2022
Mar 14, 2022
Aug 30, 2021
Dec 14, 2021
Oct 31, 2019
Apr 27, 2022
Jun 13, 2022
Aug 18, 2021
Jun 20, 2022
Jun 20, 2022
Dec 14, 2021
Dec 14, 2021

Repository files navigation

MatrixCube — Distributed System Made Easy

MatrixCube is a Golang library for building distributed systems with high reliability and scalability. It tries to abstract away complexity of distributed systems and let developers to focus on their business logics.

The current implementation is based on a multi-group Raft design in which data is distributed and replicated across many Raft groups each with multiple replicas for high data availability. Strong consistentcy provided by the Raft protocol allows developers to more easily reason about their data when compared with weaker form of consistency, e.g. eventually consistent systems.

Internally, a well defined Key-Value storage interface allow different storage engines to be integrated with MatrixCube to be presented as Replicated State Machines. Such Replicated State Machines are accessed via a simple client interface so that all complexities such as routing and timeout retries are transparently handled by our library.

With high availability and performance on the top of our priority list, MatrixCube employs a Google Placement Driver style component for automatic movement of data to balance load or repair Raft groups with failed replicas.

MatrixCube's architecture is visualized in the following diagram -

arch

To the maximum of our knowledge, MatrixCube is currently the only open source library that provides all above features in a single Go library.

Features

  • Multi-group Raft for high availability
  • Strongly consistent storage
  • Unlimited horizontal scalability
  • Automatic load rebalancing & failure recovery
  • Pure Go implementation

Usage

To add MatrixCube to your project -

go get github.com/matrixorigin/matrixcube@latest

Example

See our TinyKV example on how to use MatrixCube for building a highly scalable & strongly consistent Key-Value store.

License

MatrixCube is licensed under the Apache version 2.0 license. It contains source code licensed from 3rd parties, details are here.