6 个版本

1.0.0-rc.52022 年 4 月 2 日
1.0.0-rc.42022 年 3 月 31 日
1.0.0-rc.22022 年 3 月 25 日
1.0.0-rc.12022 年 3 月 13 日
0.1.0-alpha.12022 年 3 月 8 日

#446科学

AGPL-3.0 或更新版本

165KB
3.5K SLoC

高性能分布式工作集合

Crates.io Crates.io docs.rs Lines of code GitHub contributors GitHub commit activity

动机。 这是在基于 specpaxos 的基础上进行改进的尝试。传统上,系统工作很难评估和比较,因为将所有考虑的工作重新实现为相同的可比较模型需要大量的努力,而直接运行它们的原始代码库通常无法给我们提供可比较的结果。类似于 specpaxos,这个代码库提供了一个通用的基础,用于重新实现和评估,并提供了一些流行的作品的实现,作为解决方案的第一步。

为了保持公平性和尽可能简单,代码库有意避免了框架中的过多特定优化。例如,所有依赖项要么是标准库,要么是标准社区选择。这是一个具有高性能架构和抽象的代码库,以及对其的直接参考实现。

为什么命名为 Oskr? 这个名字来源于奥斯卡(学院奖),因为这个项目的核心是基于一个专门的actor模型。

它也是“来自金门(更准确地说,新加坡 117418)的过度设计的系统”的缩写,以及项目标志“o”range“s”aku“r”的缩写。

基准结果。 详细说明正在进行中。

协议 工作进程数量 批量大小 最大吞吐量(Kops/秒) 最小平均延迟(us)
非副本 1 - 2011.256 10.751
非副本签名 1 - 11.799 91.647
非副本签名 14 - 154.064 99.327
PBFT 14 自适应 121.200 716.799
PBFT 14 100 122.334 -
HotStuff 14 自适应 98.654 2195.455
HotStuff 14 100 98.491 -

设置。 要运行此项目,您必须从源代码编译。crates.io 上有一个发布版本,但它只是一个占位符,无法使用。目的是在 doc.rs 上托管文档。

Ubuntu 上的先决条件

  • 最新的稳定 Rust 工具链。
  • 编译 DPDK:任何有效的 C 构建工具链,mesonninja-buildpython3-pyelftools
  1. 递归克隆仓库。

  2. 编译 DPDK:meson setup target/dpdk src/dpdk && ninja -C target/dpdk

  3. 运行单元测试: cargo test --lib

  4. 构建基准可执行文件: cargo build --release

    编译后的可执行文件与rte共享对象动态链接,因此如果您将可执行文件传输到远程机器运行,请确保远程工作目录中存在target/dpdk

  5. 创建部署配置。创建描述文件 deploy/quad.config,写入以下行

    f 1
    replica 12:34:56:aa:aa:aa%0
    replica 12:34:56:bb:bb:bb%0
    replica 12:34:56:cc:cc:cc%0
    replica 12:34:56:dd:dd:dd%0
    multicast 01:00:5e:00:00:01%255
    

    将MAC地址替换为网络卡的地址,并确保网络能够对这些MAC地址发送的包进行L2转发。对于运行PBFT,多播行是可选的。

  6. 创建签名密钥文件。使用以下命令生成副本0的签名密钥文件

    openssl ecparam -genkey -noout -name secp256k1 | openssl pkcs8 -topk8 -nocrypt -out deploy/quad-0.pem
    

    运行该命令三次以生成 deploy/quad-{1,2,3}.pem

  7. 启动副本0

    sudo ./target/release/replica -m pbft -c deploy/quad -i 0
    

    然后启动副本1、2和3,在分配给它们的服务器上使用相应的 - 选项。

  8. 启动客户端

    sudo ./target/release/client -m pbft -c deploy/quad
    

    您可以使用 -t 来启动多个客户端,它们并发发送请求,或使用 - 来扩展发送持续时间。

请将 - 传递给可执行文件以了解其他选项。

依赖关系

~9–21MB
~293K SLoC