1 个不稳定版本
0.0.1 | 2024 年 5 月 6 日 |
---|
#38 in #raft-consensus
30KB
551 行
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