Bucket4j适配GaussDB开源验证总结
Bucket4j 是一个用于 Java 的强大速率限制库,可灵活控制资源访问速率,保护系统资源并提升用户体验。 主要功能:
- Bucket4j 是一个 Java 速率限制库,用于控制对资源的访问速率。它可以限制在特定时间内对某个操作的执行次数,确保系统资源不被过度消耗。
- 提供多种速率限制策略,如固定速率限制、弹性速率限制等。可以根据不同的业务需求选择合适的限制策略。
- 支持分布式环境下的速率限制,可以通过外部存储(如数据库、缓存等)来实现跨多个节点的统一速率限制。
提供简洁的 API,易于集成到现有的 Java 应用程序中。
一 bucket4j集成过程
1. 下载 OpenSourceForHuaweiDemoJava 项目,并新建bucket4j分支
2. 在resource-server的pom中引入依赖,部分依赖如下图
3. 配置 application.yml,添加数据库和bucket4j配置,bucket4j配置如下:
4. 配置Bucket,关键代码如下:
5. 配置Filter
开始采用spring boot中Filter的用法,集成后发现拦截不生效,查看项目后,要采用Apache servicecomb中Filter的用法,改正后的关键代码如下:
6. 创建数据库及表
1. 创建SCHEMA: bucket4j
2. 创建表:CREATE TABLE IF NOT EXISTS bucket(id SERIAL8 PRIMARY KEY, state BYTEA, expires_at BIGINT);
二 DEMO验证过程
1. 编写验证接口,参考Apache servicecomb框架,在项目中新建Bucket4jDemoService接口及实现
2. 部署DEMO
3. 接口验证,浏览器访问 edge-service提供的访问地址
1. 接口验证
删除pom中bucket4j的postgresql依赖,将该模块的文件复制到resource-server中,修改源码中的语句insertSqlQuery,修改后如下 :
并重新部署
连续请求该接口,会报错:如下图,等5秒再请求,又可以正常请求
根据trace id参看错误日志
2. 数据库
- 点赞
- 收藏
- 关注作者
评论(0)