1 个不稳定版本

0.1.1 2021年4月23日

异步 中排名 1735

每月 下载 22
scylla-rs 中使用

自定义许可

410KB
928


构建数据驱动分布式系统的框架

Developer documentation portal

Discord StackExchange Apache 2.0 license

关于先决条件入门支持项目加入讨论未来工作LICENSE


关于

后台是一个actor模型框架,旨在使分布式和公平处理变得简单。actor可以定义为单个模块,并组合成完整的应用程序。例如,请参阅使用后台构建的scylla.rschronicle.rs

注意:后台目前正在积极开发中,以提高其可用性。由于未来一段时间内可能会频繁出现破坏性更改,因此不建议在生产环境中使用。

先决条件

actor最佳跨多个并行处理单元使用,因此建议使用后台构建的应用程序在具有多个核心的机器上运行。

入门

actor由四个子特征定义:NameInitEventLoopTerminating。除了Name外,这些类似于生命周期钩子。每个都可以失败并返回一个Need,指示actor的监督者如何处理失败。

actor的监督者是一个简单的actor,它已经被定义为管理它。这可以包括启动、终止和交互。通过在生命周期特征函数中提供的监督者句柄进行通信。此句柄可以是任何内容,但通常通过消息通道执行线程间的安全通信。

为了定义一个由各种参与者组成的应用程序,Backstage 提供了一个 launcher!

launcher!(builder: AppsBuilder {[] -> HelloWorld: HelloWorldBuilder, [] -> Howdy: HowdyBuilder}, state: Apps {});

此宏消耗一个构建器和状态(构建器用于构建启动器的数据结构)并定义一个结构体来持有这些数据。通过为该结构体实现 Builder,您可以定义启动器参与者如何构建其每个依赖项。然后,要启动启动器,请调用构建器

// Create the launcher `Apps` by invoking `AppsBuilder::build()`
let apps = AppsBuilder::new().build();
// Start the launcher
apps.HelloWorld().await.Howdy().await.start(None).await;

支持项目

如果您想为 Backstage 做贡献,请考虑发布一个 错误报告功能请求 或一个 拉取请求

在贡献之前请阅读以下内容

加入讨论

如果您想参与社区,需要帮助设置,有任何与 Backstage 相关的问题,或只是想与其他人讨论 IOTA、分布式注册表技术(DRT)和物联网,欢迎加入我们的 Discord

未来工作

  • 使用进程宏简化参与者创建
  • 统一 Actor 特性到单个
  • 移除 launcher! 宏并用更简单、更可靠的替代方案替换它
  • 添加更多示例和文档
  • 添加单元测试

许可证

(c) 2021 - IOTA Stiftung

IOTA Backstage 在 Apache 许可证(版本 2.0)下分发。

依赖项

~3–5MB
~84K SLoC