1 个不稳定版本
0.1.0 | 2023 年 9 月 25 日 |
---|
#511 in 测试
12KB
147 代码行
紧急制动
emergency_brake
是一个简单易用的进程或服务监控工具,当关键依赖失败时,将立即终止进程或服务的执行。
用法
eBrake 创建一个包含最后 N 个样本的移动样本窗口。如果样本窗口中的失败次数超过阈值,则将终止进程或服务。样本窗口是一个循环缓冲区,因此最老的样本将被最新的样本替换。
use emergency_brake::*;
fn main() {
let sample_window_size = 25;
let threshold = 3;
let mut ebrake = EBrake::new(sample_window_size, threshold);
loop:
// Check service status
let service_status: bool = check_service_status('service.foo.com');
// Add the sample to the sample window and trigger if necessary
ebrake.add_sample(service_status);
ebrake.trigger();
// Do something critical
...
}
lib.rs
:
eBrake 创建一个包含最后 N 个样本的移动样本窗口。如果样本窗口中的失败次数超过阈值,则将终止进程或服务。样本窗口是一个循环缓冲区,因此最老的样本将被最新的样本替换。
示例
这将分别使用样本和触发函数。
use emergency_brake::*;
let sample_window_size = 25;
let failure_threshold = 3;
let mut ebrake = EBrake::new(sample_window_size, failure_threshold);
for _ in 0..sample_window_size {
ebrake.add_sample(true);
}
assert_eq!(ebrake.trigger(&Trigger::Panic), false);
这将使用触发_on_sample 函数。
use emergency_brake::*;
let sample_window_size = 25;
let failure_threshold = 3;
let mut ebrake = EBrake::new(sample_window_size, failure_threshold);
for _ in 0..sample_window_size {
ebrake.trigger_on_sample(true, &Trigger::Panic);
}
assert_eq!(ebrake.trigger(&Trigger::Panic), false);
Kelsea Blackwell (c) 2023 请参阅 LICENSE 了解许可信息。
依赖项
~0.3–15MB
~150K SLoC