在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:wangzheng0822/ratelimiter4j开源软件地址:https://github.com/wangzheng0822/ratelimiter4j开源编程语言:Java 100.0%开源软件介绍:Ratelimiter4jFeaturesRateLimiter是一个高度容错,低延迟,高性能的限流开发库/框架,提供了对HTTP接口的访问限流功能。其特点:
PrerequisiteRateLimit4J需要Java 8及以上版本 Building$ git clone https://github.com/wangzheng0822/ratelimiter4j
$ cd ratelimiter4j/
$ gradle build Quickstart基于内存的限流,如果不需要特殊配置,使用起来非常简单,如下几行代码即可: UrlRateLimiter ratelimiter = new MemoryUrlRateLimiter();
try {
ratelimiter.limit("app-1", "http://www.eudemon.com/v1/user/12345");
System.out.println("passed");
} catch (OverloadException e) {
// business logic
} catch (InvalidUrlException e) {
// business logic
} catch (InternalErrorException e) {
// business logic
} 限流规则配置,放置在classpath下面:ratelimiter-rule.yaml configs:
- appId: app-1
limits:
- api: /v1/user
limit: 100
- api: /v1/order
limit: 50
- appId: app-2
limits:
- api: /v1/user
limit: 50
- api: /v1/order
limit: 50 基于Redis的分布式限流,如果不需要特殊设置,只需要简单配置一下Redis地址,如下: System.setProperty("ratelimiter.redis.address", "127.0.0.1:6379");
UrlRateLimiter ratelimiter = new DistributedUrlRateLimiter();
try {
ratelimiter.limit("app-1", "http://www.eudemon.com/v1/user/12345");
System.out.println("passed");
} catch (OverloadException e) {
// business logic
} catch (InvalidUrlException e) {
// business logic
} catch (InternalErrorException e) {
// business logic
} 限流规则配置,放置在classpath下面:ratelimiter-rule.yaml,同上面的相同 Documentation作者还写了一篇科普文章,发表于Infoq的架构公众号(聊聊架构):微服务接口限流的设计与思考 更加详细配置及其使用方法及其examples,请参看User Guide开发手册 使用前请先确认性能是否满足应用场景,请务必阅读Benchmark性能测试报告 必要情况下请参照测试文档和benchmark code自行测试RateLimiterBenchmarkTest.java Roadmap
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论