20 个版本

0.4.5 2022 年 1 月 7 日
0.4.4 2021 年 2 月 1 日
0.4.3 2020 年 9 月 24 日
0.4.1-alpha.12020 年 7 月 30 日
0.1.4-alpha.12019 年 7 月 27 日

并发 中排名第 305

Download history 81/week @ 2024-03-11 50/week @ 2024-03-18 70/week @ 2024-03-25 126/week @ 2024-04-01 36/week @ 2024-04-08 50/week @ 2024-04-15 57/week @ 2024-04-22 32/week @ 2024-04-29 30/week @ 2024-05-06 33/week @ 2024-05-13 37/week @ 2024-05-20 29/week @ 2024-05-27 42/week @ 2024-06-03 26/week @ 2024-06-10 29/week @ 2024-06-17 31/week @ 2024-06-24

每月 131 次下载
用于 7 Crates(直接使用 4 个)

Apache-2.0/MIT

620KB
10K SLoC



最新版本 Crates.io 许可协议 Crates.io
文档 [堡垒] Documentation (Bastion) 下载次数 Crates.io
文档 [堡垒执行器] Documentation (Bastion Executor) Discord
文档 [LightProc] Documentation (LightProc) 构建状态 Build Status

高可用分布式容错运行时

堡垒是一个高可用、容错的运行时系统,具有动态、以调度为导向的轻量级进程模型。它通过轻量级进程实现提供了类似actor模型的并发,并利用所有系统资源,确保最多一次的消息传递。


使用方法

堡垒附带默认的一对一策略根监督器。您可以使用此监督器自动启动受监督的任务。

入门

使用以下方法将 bastion 包含到您的项目中

bastion = "0.4"

文档

官方文档托管在 docs.rs

示例

查看 入门示例,位于 bastion/examples

示例 覆盖了该包的可能用例。

特性

  • 基于消息的通信使该项目成为一个精简的actor系统网络。
    • 无需Web服务器、奇怪的恶作剧、强制实现的trait和静态调度。
  • 运行时容错使其成为分布式系统的良好候选。
    • 如果您想要Erlang的气味和Rust的强大特性,那就对了!
  • 完全异步运行时,具有NUMA感知和缓存友好的SMP执行器。
    • 尽可能利用硬件局部性。它是为服务器设计的。
  • 监督系统使管理生命周期变得容易。
    • 在特定条件下终止应用程序或重启子进程。
  • 自动成员发现、集群形成以及在集群成员之间的自定义消息传递。
    • 使用或不使用zeroconf,从任何地方使用单个actor块启动您的堡垒集群。
  • 一种主动IO系统,它除了依赖于futures之外不依赖任何其他东西。
    • Bastion的主动IO具有scatter/gather操作,io_uring支持等等...

保证

  • 所有消息最多交付一次。
  • 完全异步的系统设计。
  • 使用fort的异步程序边界。
  • 动态监督监督者(在执行过程中添加子树)
  • futureslightproc层上管理生命周期。
  • 更快的中间件开发。
  • 最重要的是容错性。

为什么选择Bastion?

如果您对以下任何问题的回答是肯定的,那么Bastion正是您所需要的

  • 我想要主动IO吗?
  • 我的项目中需要容错性吗?
  • 我讨厌实现奇特的Actor特征吗?
  • 我不需要web服务器来运行actor系统,对吧?
  • 我想让我的现有代码变得坚不可摧吗?
  • 我对编排系统有一些信任问题吗?
  • 我想实现自己的应用程序生命周期吗?

Bastion生态系统

Bastion生态系统旨在为您提供自定义的方式。如果您不需要,或者如果您是新手,您可以在不了解底层工作原理的情况下安装并使用Bastion。我们希望很快在这里见到您。

Nuclei

Nuclei是一个可以在没有执行器限制的情况下独立使用的主动IO系统。它也是Bastion IO系统的动力来源。您可以在这里了解更多关于Nuclei的信息,查看Nuclei的仓库以获取更复杂的使用案例。

LightProc

LightProc是Rust的轻量级进程抽象。

它使用带生命周期回调的未来来实现像Erlang一样的进程,并包含基本的pid来识别进程。所有未来中的panic都会传播到上层。

Bastion Executor

Bastion Executor是一个NUMA感知的基于SMP的容错执行器,具有高可用性和面向异步通信。

它与框架实现无关。它使用lightproc来封装并提供对基于未来的工作负载的容错性。您可以使用lightproc与未来一起在Bastion Executor上运行工作负载,而无需拥有框架。

Agnostik

Agnostik是在您的应用程序和异步执行器之间的一层。它允许您在不更改应用程序代码的情况下平滑且容易地切换执行器。有效功能包括runtime_bastion(默认),runtime_tokioruntime_asyncstdruntime_nostd(即将推出)。

运行时架构

运行时由用户构建。只有根监督以电池包含的方式提供。工作代码、工作组冗余、监督者及其监督策略由用户定义。

监督策略定义了如何处理子actor失败,子actor可以失败多久,以及重新创建子actor之前需要等待多长时间。正如其名所示,一对一策略意味着监督策略仅应用于失败的子actor。全一对一策略意味着监督策略也应用于所有actor兄弟。一对一监督用于根监督者,而子组可能具有不同的策略,如rest-for-one或one-for-all。

Bastion Architecture

社区

寻求帮助

请访问我们的Discord或使用StackOverflow

讨论和开发

我们使用Discord进行开发讨论。也请随时在GitHub上提交问题,请求功能,报告bug,评论设计等!更多的互动和想法越好!

为Bastion做出贡献 开源助手

欢迎所有贡献,包括bug报告、bug修复、文档改进、增强功能和想法。

有关如何贡献的详细信息,请参阅GitHub上的贡献指南.

许可协议

许可证选择以下之一:

任选其一。

FOSSA Status

FOSSA Status

依赖关系

~7-22MB
~338K SLoC