No description
Find a file
Dirk Hoyer fd5f0bcb5a
Some checks failed
ci / openraft (no-features) (push) Successful in 2m28s
ci / integration (loosen-revert) (push) Failing after 1m35s
ci / integration (network-delay) (push) Successful in 8m30s
ci / single-term-leader guard (push) Successful in 1m17s
ci / lint (push) Failing after 2m18s
ci / openraft (serde-only) (push) Successful in 2m32s
ci / openraft (ixt-features) (push) Failing after 1m24s
ci / openraft (all-stable) (push) Failing after 1m22s
ci / macros (push) Successful in 3m33s
ci / integration (default) (push) Successful in 8m2s
ci / memstore (push) Failing after 1m15s
ci: Add Forgejo CI workflow to main branch
Required for Forgejo to recognize workflow triggers on feature branches.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 16:36:18 +01:00
.forgejo/workflows ci: Add Forgejo CI workflow to main branch 2026-03-17 16:36:18 +01:00
.github CI: migrate GitHub Actions from deprecated actions-rs to maintained alternatives 2025-10-28 00:30:27 +08:00
change-log docs: Revise documentation comments 2025-08-13 00:35:20 +08:00
cluster_benchmark change: Migrate RaftStateMachine::apply() from Iterator to Stream 2025-11-06 16:04:51 +08:00
examples feat: example: handle gRPC payload size limit in append_entries 2025-11-10 13:46:36 +00:00
guide CI: upgrade workflow actions 2024-10-15 11:33:53 +08:00
macros chore: standardize Cargo.toml formatting across all workspace members 2025-10-30 07:16:52 +00:00
openraft refactor: progress: remove last_log_id from Inflight::Snapshot 2025-11-10 08:16:12 +00:00
rt-compio chore: standardize Cargo.toml formatting across all workspace members 2025-10-30 07:16:52 +00:00
rt-monoio chore: standardize Cargo.toml formatting across all workspace members 2025-10-30 07:16:52 +00:00
scripts chore: Add helper script to sync branch required checks 2025-10-31 22:10:07 +08:00
stores change: Migrate RaftStateMachine::apply() from Iterator to Stream 2025-11-06 16:04:51 +08:00
tests change: Remove PayloadTooLarge error and automatic retry logic 2025-11-07 11:10:08 +08:00
.gitignore Change: Add read_policy parameter to ensure_linearizable and get_read_log_id 2025-05-13 20:05:40 +08:00
.mergify.yml CI: fix mergify condition according to CI name changes 2023-04-26 14:42:18 +08:00
book.toml Chore: change repo url to https://github.com/databendlabs/openraft 2024-12-02 19:20:43 +08:00
Cargo.toml chore: standardize Cargo.toml formatting across all workspace members 2025-10-30 07:16:52 +00:00
change-log.md docs: Revise documentation comments 2025-08-13 00:35:20 +08:00
clippy.toml Prep for 0.5.1 release. 2020-10-05 21:54:53 -05:00
CONTRIBUTING.md CI: PR has to pass fmt check to merge 2022-01-06 16:01:30 +08:00
derived-from-async-raft.md Chore: change repo url to https://github.com/databendlabs/openraft 2024-12-02 19:20:43 +08:00
LICENSE-APACHE Add license info. 2019-08-05 23:00:58 -05:00
LICENSE-MIT Add license info. 2019-08-05 23:00:58 -05:00
Makefile change: avoid Vec allocation in RaftStateMachine::apply() 2025-10-30 09:55:43 +00:00
raft-essentials.md Doc: correct a typo in the raft-essentials.md 2025-04-14 23:27:18 +08:00
README.md docs: comprehensive documentation improvements across codebase 2025-10-08 11:49:31 +08:00
rust-toolchain chore: update toolchain 2025-10-26 17:22:48 +08:00
rustfmt.toml Chore: disable inline attribute 2024-07-03 19:03:00 +08:00

OpenRaft

Advanced Raft in 🦀 Rust using Tokio. Please on GitHub!

Crates.io docs.rs DeepWiki guides Discord Chat
CI Coverage Status License Crates.io Crates.io

This project intends to improve raft as the next-generation consensus protocol for distributed data storage systems (SQL, NoSQL, KV, Streaming, Graph ... or maybe something more exotic).

Currently, openraft is the consensus engine of meta-service cluster in databend.

Whatever your style, we're here to support you. 🚀 Let's make something awesome together!

Status

  • The features are almost complete for building an application.
  • Performance: Supports 70,000 writes/sec for a single writer, and 1,000,000 writes/sec for 256 writers. See: Performance
  • Unit test coverage stands at 92%.
  • The chaos test has not yet been completed, and further testing is needed to ensure the application's robustness and reliability.

API status

  • OpenRaft API is not stable yet. Before 1.0.0, an upgrade may contain incompatible changes. Check our change-log. A commit message starts with a keyword to indicate the modification type of the commit:

    • DataChange: on-disk data types changes, which may require manual upgrade.
    • Change: if it introduces incompatible changes.
    • Feature: if it introduces compatible non-breaking new features.
    • Fix: if it just fixes a bug.

Versions

Roadmap

Performance

The benchmark is focused on the OpenRaft framework itself and is run on a minimized store and network. This is NOT a real world application benchmark!!!

clients put/s ns/op
256 1,014,000 985
64 730,000 1,369
1 70,000 14,273

For benchmark detail, go to the ./cluster_benchmark folder.

Features

  • Async and Event-Driven: Operates based on Raft events without reliance on periodic ticks, optimizing message batching for high throughput.
  • Extensible Storage and Networking: Customizable via RaftLogStorage, RaftStateMachine and RaftNetwork traits, allowing flexibility in choosing storage and network solutions.
  • Unified Raft API: Offers a single Raft type for creating and interacting with Raft tasks, with a straightforward API.
  • Cluster Formation: Provides strategies for initial cluster setup as detailed in the cluster formation guide.
  • Built-In Tracing Instrumentation: The codebase integrates tracing for logging and distributed tracing, with the option to set verbosity levels at compile time.

Functionality:

Who uses it

Contributing

Check out the CONTRIBUTING.md guide for more details on getting started with contributing to this project.

Contributors

Made with contributors-img.

License

OpenRaft is licensed under the terms of the MIT License or the Apache License 2.0, at your choosing.