A feature-complete, high-performance multi-group Raft consensus library in Go for building fault-tolerant distributed systems.
Dragonboat is a high-performance multi-group Raft consensus library implemented in pure Go. It provides fault tolerance and strong data consistency for distributed systems by handling all technical complexities of Raft, allowing applications to continue operating as long as a majority of servers are available. The library supports thousands of concurrent Raft groups and is designed for scalability and ease of use.
Go developers building distributed systems that require fault tolerance and strong consistency, such as databases, key-value stores, or coordination services. It is also suitable for engineers needing a production-ready Raft implementation with high throughput and low latency.
Developers choose Dragonboat because it is the fastest open-source multi-group Raft implementation, sustaining millions of writes per second with low latency. It offers comprehensive Raft features, extensive testing with Jepsen's Knossos, and flexible integration options for storage and transport, abstracting Raft complexities to focus on application logic.
A feature complete and high performance multi-group Raft library in Go.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Sustains millions of writes per second with low latency, as benchmarks show 9 million writes/sec for 16-byte payloads and sub-5ms P99 latency under load.
Supports thousands of concurrent Raft groups efficiently, enabling horizontal scaling for sharded systems like distributed databases.
Extensively tested with Jepsen's Knossos for linearizability and includes Prometheus metrics and repair tools for fault recovery in real deployments.
Allows custom storage engines (e.g., Pebble, RocksDB) and transport layers with TLS mutual authentication, adapting to diverse I/O technologies.
The v4.0 release will introduce API changes, requiring code adjustments for upgrades, and the master branch is unstable for production use.
Performance can be impacted by Go's garbage collection, though pauses are sub-millisecond, and it's limited to Go ecosystems without native cross-language support.
Despite abstraction, users must grasp Raft concepts and manage multi-group configurations, which adds complexity compared to simpler consensus libraries.