当前位置: 首页 > 工具软件 > Crate > 使用案例 >

Rust 限流算法crate调研

薛滨海
2023-12-01

简介:

本文介绍几个Rust中实现了限流算法的crate。

背景:

最近工作需要实现限流算法。所以调研了一些限流算法。

最终认为令牌桶算法比较适合我们的业务场景。想着rust应该有现成的库可以复用,所以简单看了下。

几个可选的crate

1、leaky_bucket - Rust

基于tokio 异步的,实现了令牌桶算法,通过acquire接口来获取令牌。获取不到的时候会阻塞当前协程。

use leaky_bucket::RateLimiter;

let limiter = RateLimiter::builder()
    .initial(10)
    .build();

limiter.acquire(10).await;

2、ratelimit_meter - Rust

这个crate实现了GCRA 算法和漏桶算法

3、leaky_bucket_lite - Rust

和leaky_bucket差不多。不过更轻量级。特点是获取令牌的时候才会填桶、是惰性的。支持async和sync以及非线程安全的sync。

4、ratelimit - Rust

下载量最多的一个库。是多线程的。获取不到令牌会阻塞当前线程。

5、ratelimit_rs - Rust

很轻量级的一个库,不过并不是线程安全的,如果需要在多线程间使用,需要自己做好线程安全。这个库目前下载量还很小。

 参考:

时间窗口、滑动窗口、漏桶、令牌桶

分布式服务限流实战,已经为你排好坑了_技术管理_dbaplus社群_InfoQ精选文章

分布式限流器

如何设计一个分布式限流器(distributed rate limiter) | Honly's Blog

分布式限流 - SegmentFault 思否

dubbo 限流策略

Dubbo之限流分析 - 掘金

dubbo/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter at be7dc7f397ce66b2240bc2534128e6ddddda9688 · apache/dubbo · GitHub

nginx限流

Nginx 的两种限流方式 - 开发者头条

 类似资料: