3 个版本 (破坏性更新)
0.3.0 | 2023年8月15日 |
---|---|
0.2.0 | 2023年7月4日 |
0.1.0 | 2023年6月29日 |
1442 在 算法
每月下载 21 次
31KB
821 行
rsbalancer
Rust 库,实现负载均衡算法。
- 轮询
- 加权轮询(类似于 nginx)
- 随机
- 一致性哈希
安装
cargo add rsbalancer
使用
加权轮询
use rsbalancer::Node;
fn main() {
let mut balancer = rsbalancer::weighted_round_robin(vec![
Node::new("ip1", 1), // ip、weight
Node::new("ip2", 1),
Node::new("ip3", 2),
]);
for _ in 0..10 {
println!("{}", balancer.next_id().unwrap());
}
}
一致性哈希
use rsbalancer::Node;
fn main() {
// number of virtual nodes = node.weight * replicas
let balancer = rsbalancer::consistent_hashing(
vec![
Node::new("ip1".to_string(), 1), // ip、weight
Node::new("ip2".to_string(), 1),
Node::new("ip3".to_string(), 1),
],
160, //replicas
);
for random_ip in 0..10 {
println!(
"{} == {}",
balancer
.get_matching_node_id(&random_ip.to_string())
.unwrap(),
balancer
.get_matching_node(&random_ip.to_string())
.unwrap()
.get_id()
);
}
}
依赖项
~310KB