3 个版本 (破坏性更新)

0.3.0 2023年8月15日
0.2.0 2023年7月4日
0.1.0 2023年6月29日

1442算法

每月下载 21

MIT 许可证

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