3 releases (breaking)
0.3.0 | Aug 15, 2023 |
---|---|
0.2.0 | Jul 4, 2023 |
0.1.0 | Jun 29, 2023 |
#1575 in Algorithms
21 downloads per month
31KB
821 lines
rsbalancer
A rust library that implements load balancing algorithms.
- round robin
- weighted round robin(like nginx)
- random
- consistent hashing
Installation
cargo add rsbalancer
Usage
Weighted round robin
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());
}
}
Consistent hashing
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()
);
}
}
Dependencies
~310KB