All Projects → opaugam → Rsm

opaugam / Rsm

Licence: mit
distributed computing toolkit in rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Rsm

Atomix
A reactive Java framework for building fault-tolerant distributed systems
Stars: ✭ 2,182 (+12735.29%)
Mutual labels:  consensus-algorithm, raft
Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (+558.82%)
Mutual labels:  consensus-algorithm, raft
Awesome Consensus
Awesome list for Paxos and friends
Stars: ✭ 1,619 (+9423.53%)
Mutual labels:  consensus-algorithm, raft
Raft
Raft Consensus Algorithm
Stars: ✭ 370 (+2076.47%)
Mutual labels:  consensus-algorithm, raft
FISCO-BCOS
FISCO BCOS是由微众牵头的金链盟主导研发、对外开源、安全可控的企业级金融区块链底层技术平台。 单链配置下,性能TPS可达万级。提供群组架构、并行计算、分布式存储、可插拔的共识机制、隐私保护算法、支持全链路国密算法等诸多特性。 经过多个机构、多个应用,长时间在生产环境中的实践检验,具备金融级的高性能、高可用性及高安全性。FISCO BCOS is a secure and reliable financial-grade open-source blockchain platform. The platform provides rich features including group architecture, cross-chain communication protoc…
Stars: ✭ 1,603 (+9329.41%)
Mutual labels:  synchronization, raft
lol
A Raft implementation in Rust language. The name is not a joke.
Stars: ✭ 130 (+664.71%)
Mutual labels:  raft, consensus-algorithm
Copycat
A novel implementation of the Raft consensus algorithm
Stars: ✭ 551 (+3141.18%)
Mutual labels:  consensus-algorithm, raft
MIT6.824-2021
4 labs + 2 challenges + 4 docs
Stars: ✭ 594 (+3394.12%)
Mutual labels:  raft, consensus-algorithm
Crossbeam
Tools for concurrent programming in Rust
Stars: ✭ 4,180 (+24488.24%)
Mutual labels:  lock-free, synchronization
Bus
Efficient, lock-free, bounded Rust broadcast channel
Stars: ✭ 368 (+2064.71%)
Mutual labels:  lock-free, synchronization
Dissertation
Sources for my PhD dissertation on the Raft consensus algorithm
Stars: ✭ 638 (+3652.94%)
Mutual labels:  raft
Distributed Computing
distributed_computing include mapreduce kvstore etc.
Stars: ✭ 654 (+3747.06%)
Mutual labels:  raft
Raft Java
Raft Java implementation which is simple and easy to understand.
Stars: ✭ 783 (+4505.88%)
Mutual labels:  raft
Server
The Etebase server (so you can run your own)
Stars: ✭ 826 (+4758.82%)
Mutual labels:  synchronization
Typesense
Fast, typo tolerant, fuzzy search engine for building delightful search experiences ⚡ 🔍 ✨ An Open Source alternative to Algolia and an Easier-to-Use alternative to ElasticSearch.
Stars: ✭ 8,644 (+50747.06%)
Mutual labels:  raft
Yac
A fast, lock-free, shared memory user data cache for PHP
Stars: ✭ 782 (+4500%)
Mutual labels:  lock-free
Outlookcaldavsynchronizer
Sync Outlook with Google, SOGo, Nextcloud or any other CalDAV/CardDAV server
Stars: ✭ 560 (+3194.12%)
Mutual labels:  synchronization
Ffsubsync
Automagically synchronize subtitles with video.
Stars: ✭ 5,167 (+30294.12%)
Mutual labels:  synchronization
Ipfs Sync
Live IPFS directory synchronization.
Stars: ✭ 16 (-5.88%)
Mutual labels:  synchronization
Exchange Core
Ultra-fast matching engine written in Java based on LMAX Disruptor, Eclipse Collections, Real Logic Agrona, OpenHFT, LZ4 Java, and Adaptive Radix Trees.
Stars: ✭ 801 (+4611.76%)
Mutual labels:  lock-free

RSM (Replicated State Machines)

Overview

Rust crate providing basic blocks for building distributed systems. It features low level primitives built on atomics as well as higher level constructs such as a Raft toolkit.

The intent is to be able to quickly incorporate non-trivial functionalities in your code, for instance being able to elect a leader or synchronize a proper draining sequence between multiple threads. There are two catches: a) the crate does not implement network I/O and you are responsible for using whatever you prefer, b) it uses half-duplex communication, e.g message passing without direct acknowledgement.

Features

  • Fast user-space synchronization primitives built on atomics: lock, read-write lock, gate, once, semaphore, events and more!
  • Basic finite state-machine automata, great for building actor systems!
  • Fast Raft protocol 100% implemented as an automaton.
  • Convenient Python frontend to act as a network I/O proxy.

Please note this is still a work in progress I am working on regularly. It is a great educational resource for whoever wants to learn how things like locks or finite state-machine work. It is not yet published on https://crates.io/ but will be soon.

Example

You often want to experiment when building your next distributed system and want to concentrate on what matter most. You can efficiently use Python as a front-end, for instance to enable gRPC I/O between your nodes, processing configuration files, etc!

The aptly named grpc example provides the protobuf API definition to encapsulate messages, a python front-end buffering over unix pipes and sub-processing a rust executable. Try it (assuming you both have python and grpc installed):

$ cargo build --bin grpc
$ cd examples
$ mkdir api
$ python -m grpc_tools.protoc -I. --python_out=./api --grpc_python_out=./api api.proto
$ python peer.py ../target/debug/grpc --id 0

Et voila, a raft peer is up and running ready to communicate to form a cluster!

Support

Contact [email protected] for more information about this project.

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].