4个版本 (重大更新)
0.4.0 | 2024年3月2日 |
---|---|
0.3.0 | 2020年12月9日 |
0.2.0 | 2020年12月8日 |
0.1.0 | 2020年12月7日 |
在算法中排名第923
每月下载量204次
在 2 crates中使用
40KB
105 代码行
phi-detector
这是Phi累加故障探测器算法的Rust实现,该算法在下面的图中描述得非常清楚。使用此算法可以检测远程服务器故障。
lib.rs
:
这是Phi累加故障探测器的实现。
为了减少内存占用,实际上并不存储ping或间隔,只维护用于计算正态分布的两个值。这不仅将内存占用减少到常量值,而且将每个ping的计算成本降低到常量。
内存占用为什么很重要?想象一下,如果你的应用程序与成千上万的远程服务器通信,并且你想要为每个服务器维护故障探测器。显然,每个服务器为故障探测器花费100MB的成本是过于昂贵的。
use phi_detector::PingWindow;
use std::time::Duration;
// Create a window with a interval 100ms.
let mut window = PingWindow::new(Duration::from_millis(100));
window.add_ping(Duration::from_millis(150));
window.add_ping(Duration::from_millis(80));
// Now the window has intervals [100ms, 150ms, 80ms]. Average is 110ms.
let normal_dist = window.normal_dist();
// If the server is down for 5s, it should be failure.
let phi = normal_dist.phi(Duration::from_millis(5000));
if phi > 12. {
panic!("The server is down");
}