d-engine:用于 Rust 的轻量级分布式协调引擎

发布: (2026年1月16日 GMT+8 11:57)
4 min read
原文: Dev.to

Source: Dev.to

概览

轻量级 Raft 实现,旨在嵌入 Rust 应用程序——构建可靠分布式系统的共识层。
秉持简单愿景:让分布式协调变得易于获取、运行成本低、使用简便。
核心理念:倾向于采用简单的架构,而非复杂的架构。

  • 单线程事件循环 – 无竞争条件,严格顺序;在单核上 CPU 绑定,可水平扩展。
  • 角色分离(单一职责原则) – Leader、Follower、Candidate、Learner 各自处理自己的逻辑;主循环仅负责路由事件。
  • 标准 Raft 设计 – 遵循典型的 Raft 架构。

操作模式

嵌入式模式

Runs inside your Rust process.

let engine = EmbeddedEngine::start().await?;
engine.wait_ready(Duration::from_secs(5)).await?;

let client = engine.client();
client.put(b"key".to_vec(), b"value".to_vec()).await?; // Lab numbers only—production performance varies by workload and hardware.

可插拔架构

d-engine provides working implementations (RocksDB storage, KV operations, gRPC transport). When defaults don’t fit, implement the required traits:

pub trait StorageEngine {
    type LogStore: LogStore;
    type MetaStore: MetaStore;
}

pub trait StateMachine {
    async fn apply_chunk(&self, entries: Vec) -> Result;
}

Examples in the repository demonstrate:

  • Sled storage backend.
  • Custom HTTP handlers with HAProxy for high‑availability deployments.

一致性保证

三种读取策略(可针对每个操作或全服务器进行配置):

策略保证典型延迟
LinearizableRead最强保证,法定副本验证~2 ms
LeaseRead基于 Leader 租约的快速路径(需要 NTP)~0.3 ms
EventualConsistency本地读取,可能是陈旧的~0.1 ms

默认设置合理;权衡已记录。

扩展示例

// Start with 1 node (auto‑elected leader)
let engine = EmbeddedEngine::start().await?;

// Scale to 3 nodes later: update config, zero code changes
// See `examples/single-node-expansion`

不需要 Kubernetes 或复杂的设置——只需 Rust + 一个配置文件。

功能概述

  • Raft 共识实现。
  • 可插拔存储(RocksDB、Sled、自定义)。
  • 灵活的一致性(线性一致、租约、最终一致)。
  • 生产就绪的核心;API 正在趋向 v1.0 稳定。
  • 版本 0.2:核心引擎已达生产就绪(1000+ 测试,已通过 TLA+ 与 Jepsen 验证)。

未来方向

  • 云原生部署(Cloudflare、AWS、GCP 存储后端)。时间表取决于早期采用者的实际使用案例。
  • 探索兼容 etcd 的 API 层。

入门

[dependencies]
d-engine = "0.2"
  • GitHub:
  • Documentation:
  • Examples:

如果您在 Rust 中构建分布式系统并且需要共识,代码已经准备好。该仓库包含嵌入式模式、独立模式、自定义存储以及使用 HAProxy 的高可用部署示例。

征集用户

我们正在寻找构建分布式系统的 Rust 开发者,且他们面临真实的难题:

  • 协调瓶颈(共识慢、etcd 集群成本高)。
  • 强一致性需求(领袖选举、分布式锁、元数据存储)。
  • 需要廉价、简洁、可靠协调的生产部署。

理想场景

  • 生产级部署(非玩具项目)。
  • 云原生环境(Cloudflare Workers、AWS Lambda、无服务器模式)。
  • 对成本敏感的使用场景,etcd 过于奢侈。

如果您有具体问题,请在 issue 中提交您的使用案例或直接联系。

许可证与兼容性

  • 许可证: MIT 或 Apache‑2.0
  • 平台: Linux, macOS
  • 最低支持的 Rust 版本 (MSRV): 1.88
Back to Blog

相关文章

阅读更多 »

刚发布 podpdf

封面图片:刚发布的 podpdf https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s...