1 个不稳定版本

0.0.1 2024 年 5 月 6 日

#38 in #raft-consensus

MIT 许可证

30KB
551

Rust Build MIT licensed

Railyard

Railyard 是使用 Tonic gRPC 框架实现的 Raft 一致性算法。此项目旨在为构建需要高可用性和容错能力的分布式系统提供可重用的基础。

⚠️ 注意:实验性 ⚠️

Railyard 目前处于早期开发阶段。它不应在生产系统中使用,因为它尚未经过测试,可能还会进行重大更改和改进。

入门

要将 Railyard 集成到您的项目中,请将其添加到 Cargo.toml 中的依赖项

[dependencies]
railyard = "0.1.0"

通过将其包含在您的 Rust 应用程序中初始化和运行一个 Railyard 集群

use railyard::Railyard;

#[tokio::main]
async fn main() {
    let my_cluster = Railyard::new_server("node_id", vec!["peer1:port", "peer2:port"]).await;
    my_cluster.run().await;
}

有关详细示例和用法,请参阅 示例 目录,并参考 API 文档

运行示例

Cargo Run

要本地运行服务器示例,请设置端口号和至少 2 个其他节点

cd examples/server
cargo run -- -p 8001 --peer 127.0.0.1:8002 --peer 127.0.0.1:8002 --peer 127.0.0.1:8003 &
cargo run -- -p 8002 --peer 127.0.0.1:8002 --peer 127.0.0.1:8001 --peer 127.0.0.1:8003 &
cargo run -- -p 8003 --peer 127.0.0.1:8002 --peer 127.0.0.1:8001 --peer 127.0.0.1:8002 &

为了帮助启动集群,examples/server 目录包含一个 start_cluster.sh 脚本,该脚本将启动一个包含 3 个节点的集群

./examples/server/start_cluster.sh

Docker Compose

要使用 Docker Compose 运行服务器

docker-compose up

这将默认启动一个包含 3 个节点的集群,并自动配置节点以监听端口 8000。

测试

一旦集群运行,就可以使用 grpcurl 测试 API

grpcurl -plaintext -import-path ./proto -proto cluster_management.proto -d '{"entries": ["test"]}' '[::1]:8001' railyard.ClusterManagement/AppendEntries

资源

许可证

此项目受 MIT 许可证 的许可。

依赖项

~12–21MB
~376K SLoC