1 个不稳定版本
0.1.1 | 2021年4月23日 |
---|
在 异步 中排名 1735
每月 下载 22 次
在 scylla-rs 中使用
410KB
928 行
构建数据驱动分布式系统的框架
关于 ◈ 先决条件 ◈ 入门 ◈ 支持项目 ◈ 加入讨论 ◈ 未来工作 ◈ LICENSE
关于
后台是一个actor模型框架,旨在使分布式和公平处理变得简单。actor可以定义为单个模块,并组合成完整的应用程序。例如,请参阅使用后台构建的scylla.rs和chronicle.rs。
注意:后台目前正在积极开发中,以提高其可用性。由于未来一段时间内可能会频繁出现破坏性更改,因此不建议在生产环境中使用。
先决条件
actor最佳跨多个并行处理单元使用,因此建议使用后台构建的应用程序在具有多个核心的机器上运行。
入门
actor由四个子特征定义:Name
、Init
、EventLoop
、Terminating
。除了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