#maelstrom #actor #request-response

maelstrom_rs

使用 Maelstrom 作为 Actor 编写玩具分布式系统的 Rust 包

1 个不稳定版本

0.1.0 2022年1月23日

#477测试

Apache-2.0

17KB
285 代码行

maelstrom-rs

一个提供 Actor 模型以使用 Maelstrom 开发玩具分布式系统的包。

什么是 Maelstrom?

Maelstrom 是一个通过编写自己的系统来学习分布式系统的平台。它使用 Jepsen 测试库来测试分布式系统的玩具实现。

入门

官方文档中的示例可以在 示例文件夹 中找到。

该包公开

  • 一个可以实现的 Actor trait
  • 一个 Runtime,用于运行它。

示例

use maelstrom_rs::actor::Actor;
use maelstrom_rs::message::{Request, Response};
use maelstrom_rs::error::Error;
use maelstrom_rs::runtime::Runtime;

fn main() {
   let node = EchoActor { node_id: None };
   let mut runtime = Runtime::new(Box::new(node));
   // runtime.start();
}

struct EchoActor {
    node_id: Option<String>,
}

impl Actor for EchoActor {
  fn init(&mut self, node_id: &str, _node_ids: Vec<String>) -> Result<(), Error> {
       self.node_id = Some(String::from(node_id));
       eprintln!("node {} initiated", node_id);
       Ok(())
   }

   fn receive(&mut self, message: &Request) -> Result<Vec<Response>, Error> {
       match message.message_type.as_str() {
           "echo" => unimplemented!(),
           _ => unimplemented!(),
        }
   }
}

依赖项

~0.7–1.4MB
~33K SLoC