Expand description
独立的 Raft 共识库。
§概述
本 crate 提供由 step() / tick() 驱动的纯 Raft 共识节点。
存储与应用状态机均可插拔:
storage::Engine— 用于 Raft 日志的有序键值存储。 内置持久化后端storage::BitCask。raft::State— 从已提交日志顺序应用的确定性状态机。net— 可选 TCP + bincode 传输;raft-node/raft-cli二进制基于此。
核心 Node 仍由 step() / tick() 驱动;出站消息经
crossbeam::channel::Sender<raft::Envelope> 发出。进程内部署见 cluster 模块,
多进程部署见 config/node*.yaml + raft-node。
§最小用法
ⓘ
use raft_rust::raft::{self, Log, Node, Options, State};
use raft_rust::storage::BitCask;
use crossbeam::channel;
let (tx, rx) = channel::unbounded();
let log = Log::new(Box::new(BitCask::new("data/node".into())?))?;
let state: Box<dyn State> = Box::new(MyState::default());
let node = Node::new(1, peers, log, state, tx, Options::default())?;
// 通过 node.tick()? 与 node.step(envelope)? 驱动Re-exports§
pub use error::Error;pub use error::Result;pub use raft::encode_session;pub use raft::Envelope;pub use raft::Entry;pub use raft::Index;pub use raft::Key;pub use raft::Log;pub use raft::Membership;pub use raft::MembershipEntry;pub use raft::Message;pub use raft::Node;pub use raft::NodeID;pub use raft::Options;pub use raft::Request;pub use raft::Response;pub use raft::SessionState;pub use raft::State;pub use raft::Status;pub use raft::Term;pub use raft::TICK_INTERVAL;pub use raft::kv;pub use storage::BitCask;pub use storage::Engine;
Modules§
- cluster
- 进程内 Raft 集群运行时:channel 传输、客户端与故障注入。
- config
- 单节点进程配置(YAML)。
- error
- net
- TCP + bincode 传输层(多进程节点)。
- raft
- 实现 Raft 分布式共识协议。
- storage
- Raft 日志使用的键值存储引擎。