Skip to main content

Crate raft_rust

Crate raft_rust 

Source
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 日志使用的键值存储引擎。

Macros§

errdata
按格式字符串构造 Error::InvalidData
errinput
按格式字符串构造 Error::InvalidInput