Expand description
Openraft
§API status
Openraft API is currently unstable.
Incompatibilities may arise in upgrades prior to 1.0.0
.
Refer to our Change-Log for details.
Upgrade Guides explains how to upgrade.
Each commit message begins with a keyword indicating the type of change:
DataChange:
Changes to on-disk data types, possibly requiring manual upgrade.Change:
Introduces incompatible API changes.Feature:
Adds compatible, non-breaking new features.Fix:
Addresses bug fixes.
§Openraft Document
If you’re starting to build an application with Openraft, check out
To maintain an Openraft cluster, e.g., add or remove nodes, refer to
cluster_control
:cluster_formation
describes how to form a cluster;dynamic membership
describes how to add or remove nodes without downtime;node lifecycle
describes the transition of a node’s state;
When upgrading an Openraft application, consult:
To learn about the data structures used in Openraft and the commit protocol, see
feature_flags
;data
:Vote
is the core in a distributed system;Log pointers
shows how Openraft tracks entries in the log;Leader lease
explains leader lease for a Leader and a Follower;Extended membership
explains how members are organized in Openraft;Effective membership
explains when membership config takes effect;
protocol
:
Contributors who want to understand the internals of Openraft can find relevant information in
internal
:- Architecture shows the overall architecture of Openraft;
- Threading describes the threading model of Openraft;
Finally, the archived and discarded documents:
obsolete
describes obsolete design documents and why they are discarded;
Modules§
- This mod is a upgrade helper that provides functionalities for a newer openraft application to read data written by an older application.
async
runtime interface.- The default log entry type that implements
RaftEntry
. - Error types exposed by this crate.
- A trait for time instants.
- This mod defines the identity of a raft log and provides supporting utilities to work with log id related types.
- Raft metrics for observability.
- The Raft network interface.
- Public Raft interface and data types.
- The Raft storage interface and data types.
- Testing utilities for OpenRaft.
- Openraft Document
Re-exports§
pub use network::RPCTypes;
pub use network::RaftNetwork;
pub use network::RaftNetworkFactory;
Traits§
- Configuration of types used by the
Raft
core engine.
Re-exports§
pub use crate::async_runtime::AsyncRuntime;
pub use crate::async_runtime::TokioRuntime;
Enums§
- Defines various actions to change the membership, including adding or removing learners or voters.
Structs§
- The runtime configuration for a Raft node.
Enums§
- Error variants related to configuration.
- Log compaction and snapshot policy.
- All possible states of a Raft node.
Re-exports§
pub use crate::entry::Entry;
pub use crate::entry::EntryPayload;
pub use crate::instant::Instant;
pub use crate::instant::TokioInstant;
pub use crate::log_id::LogId;
pub use crate::log_id::LogIdOptionExt;
pub use crate::log_id::LogIndexOptionExt;
pub use crate::log_id::RaftLogId;
Structs§
- The currently active membership config.
- The membership configuration of the cluster.
- This struct represents information about a membership config that has already been stored in the raft logs.
Re-exports§
pub use crate::metrics::RaftMetrics;
Structs§
- An implementation of trait
Node
that contains minimal node information. - EmptyNode is an implementation of trait
Node
that contains nothing.
Traits§
- A Raft
Node
, this trait holds all relevant node information. - A Raft node’s ID.
Re-exports§
pub use crate::raft::Raft;
Structs§
- The state of membership configs a raft node needs to know.
- A struct used to represent the raft state which a Raft node needs.
Type Aliases§
- Id of a snapshot stream.
Structs§
- The identity of a segment of a snapshot.
Re-exports§
pub use crate::storage::LogState;
pub use crate::storage::RaftLogReader;
pub use crate::storage::RaftSnapshotBuilder;
pub use crate::storage::Snapshot;
pub use crate::storage::SnapshotMeta;
pub use crate::storage::StorageHelper;
Structs§
- An error that occurs when the RaftStore impl runs defensive check of input or output. E.g. re-applying an log entry is a violation that may be a potential bug.
Enums§
- What it is doing when an error occurs.
- A storage error could be either a defensive check error or an error occurred when doing the actual io operation.
Structs§
- Error that occurs when operating the store.
Traits§
- Convert error to StorageError::IO();
Enums§
- Violations a store would return when running defensive check.
Traits§
- Similar to
AsRef<T>
, it does a cheap reference to reference conversion, but with the ability to returnNone
if it is unable to perform the conversion to&T
.
Type Aliases§
- The unique identifier of a leader that is already granted by a quorum in phase-1(voting).
Structs§
- LeaderId is identifier of a
leader
. Vote
represent the privilege of a node.
Traits§
- A trait defining application specific data.
- A trait defining application specific response data.
Macros§
- Define types for a Raft type configuration.
Re-exports§
pub use anyerror;
Structs§
- AnyError is a serializable wrapper
Error
.
Attribute Macros§
- This proc macro attribute optionally adds
Send
bounds to a trait.