Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ShisoftResearch/bifrost
Pure rust building block for distributed systems
https://github.com/ShisoftResearch/bifrost
consensus data-structrues distributed-systems raft rpc rust rust-library
Last synced: 3 months ago
JSON representation
Pure rust building block for distributed systems
- Host: GitHub
- URL: https://github.com/ShisoftResearch/bifrost
- Owner: ShisoftResearch
- License: mit
- Created: 2016-11-06T20:19:15.000Z (about 8 years ago)
- Default Branch: develop
- Last Pushed: 2024-05-12T01:49:25.000Z (6 months ago)
- Last Synced: 2024-07-16T14:10:52.234Z (4 months ago)
- Topics: consensus, data-structrues, distributed-systems, raft, rpc, rust, rust-library
- Language: Rust
- Homepage:
- Size: 999 KB
- Stars: 156
- Watchers: 14
- Forks: 19
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bifrost
[![Build Status](https://travis-ci.org/ShisoftResearch/bifrost.svg?branch=master)](https://travis-ci.org/ShisoftResearch/bifrost)Pure rust building block for distributed systems
### Objective
The objective of bifrost is to build a solid foundation for distributed systems in rust.
It is similar to one of my Clojure project [cluster-connecter](https://github.com/shisoft/cluster-connector), but no longer require any third-party software like Zookeeper or etcd.
Bifrost will ship with it's own reliable data store based on [raft consensus algorithm](https://raft.github.io/) state machines. Users are also able to build their own reliable data structures by implementing state machine commands.**Bifrost is still in very early stage of development and it is not suggested to be used in any kinds of projects until it is stabilized and fully tested**
### Progress Check List
- [ ] RPC
- [x] TCP Server
- [x] Protocol
- [x] Event driven server
- [x] Sync client
- [x] Async client
- [X] Multiplexing pluggable services
- [X] Shortcut (for both TCP and RPC APIs)
- [ ] Raft (data replication)
- [x] Leader election
- [x] Log replication
- [x] Master/subs state machine framework
- [ ] State machine client
- [x] Sync
- [x] PubSub
- [ ] Master state machine snapshot
- [x] Generate
- [x] Install
- [ ] Generate in chunks
- [ ] Install in chunks
- [ ] Automation
- [ ] Persistent to disk
- [ ] Recover from disk
- [ ] Incremental snapshot
- [ ] Membership changes
- [x] State machine
- [x] New Member
- [x] Delete Member
- [x] Snapshot
- [x] Recover
- [X] Interfaces
- [X] Update procedures
- [x] Cluster bootstrap
- [x] Client
- [x] Command
- [x] Query
- [x] Concurrency
- [x] Failover
- [x] Membership changes
- [x] Subscription
- [ ] Raft Group
- [ ] Tests
- [x] State machine framework
- [x] Leader selection
- [x] Log replication
- [ ] Snapshot
- [ ] Membership changes
- [x] New member
- [x] Delete member
- [ ] Safety
- [ ] Stress and benchmark
- [ ] Stress + Safety
- [ ] Sharding
- [x] Consistent hash
- [ ] Reliable data store
- [x] Client group membership
- [x] Client group leader election
- [x] Map
- [ ] Set
- [ ] Array
- [ ] Queue
- [x] Value
- [x] Number
- [ ] Lock
- [ ] Integration (API)
- [ ] gPRC
- [ ] Utility
- [x] [Global bindings](https://clojuredocs.org/clojure.core/binding)
- [x] Consistent hashing
- [x] Vector clock