GithubHelp home page GithubHelp logo

aylei / matrixcube Goto Github PK

View Code? Open in Web Editor NEW

This project forked from matrixorigin/matrixcube

0.0 1.0 0.0 3.98 MB

Fundamental Building Block for Elastic Storage With Strong Consistency and Reliability

License: Apache License 2.0

Shell 0.06% Go 99.80% Makefile 0.14%

matrixcube's Introduction

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.

matrixcube's People

Contributors

zhangxu19830126 avatar lni avatar reusee avatar lignay avatar cnutshell avatar w-zr avatar yingfeng avatar sukki37 avatar lefthandcold avatar yuzhichang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.