12 个版本
0.4.2 | 2022 年 1 月 7 日 |
---|---|
0.4.1 | 2021 年 2 月 1 日 |
0.4.0 | 2020 年 9 月 24 日 |
0.3.5 | 2020 年 7 月 21 日 |
0.3.0 | 2019 年 11 月 13 日 |
#806 在 并发
每月 152 次下载
用于 10 个 crate(3 个直接使用)
200KB
3.5K SLoC
Bastion Executor
最新版本 |
|
许可协议 |
|
构建状态 |
|
下载量 |
|
Discord |
|
Bastion Executor 是基于 NUMA 感知 SMP 的容错执行器
Bastion Executor 是一个高可用、容错的异步通信导向执行器。Bastion 的主要思想是提供一个具有容错能力的完全异步运行时,以便在高负载下工作。
与其他执行器的不同之处在于
- 使用基于 SMP 的执行方案来利用多核上的缓存亲和性,并且执行在系统资源上均匀分布,这意味着利用了全部系统资源。
- 为调度器队列使用 NUMA 感知分配,并利用服务器工作负载的局部性。
- 针对创建中间件和与 actor 模型(如并发和分布式通信)一起工作而量身定制。
注意: Bastion Executor 与其框架实现无关。它使用 lightproc 来封装并提供对基于 future 的工作负载的容错能力。您可以使用 lightproc 来在 Bastion Executor 上运行工作负载,而无需框架。
示例用法
use bastion_executor::prelude::*;
use lightproc::proc_stack::ProcStack;
fn main() {
let pid = 1;
let stack = ProcStack::default()
.with_pid(pid)
.with_after_panic(move || println!("after panic {}", pid.clone()));
let handle = spawn(
async {
panic!("test");
},
stack,
);
let pid = 2;
let stack = ProcStack::default().with_pid(pid);
run(
async {
handle.await;
},
stack.clone(),
);
}
依赖项
~2.6–5MB
~87K SLoC