首页
/ Bucket4j 新增对 MariaDB 的支持

Bucket4j 新增对 MariaDB 的支持

2025-07-01 22:11:37作者:范垣楠Rhoda

在分布式系统中,限流是一个非常重要的功能。Bucket4j 是一个基于令牌桶算法的 Java 限流库,它提供了多种存储后端支持。最新发布的 8.8.0 版本中,Bucket4j 新增了对 MariaDB 数据库的支持。

背景

MariaDB 是 MySQL 的一个流行分支,在许多生产环境中被广泛使用。虽然 MariaDB 和 MySQL 高度兼容,但在某些细节上还是存在差异。在之前的版本中,Bucket4j 只提供了 MySQL 的支持,用户在使用 MariaDB 时不得不依赖 MySQL 的 JDBC 驱动,这带来了不必要的依赖问题。

技术实现

新的 MariaDB 支持是通过 MariaDbSelectForUpdateBasedProxyManager 类实现的。这个类采用了 SELECT FOR UPDATE 的数据库锁机制来保证分布式环境下的原子性操作。主要特点包括:

  1. 事务管理:通过 JDBC 连接实现了完整的事务生命周期管理,包括开始事务、提交、回滚等操作。

  2. CRUD 操作

    • 使用 INSERT IGNORE 语句处理初始记录插入
    • 通过 UPDATE 语句更新令牌桶状态
    • 使用 SELECT FOR UPDATE 获取并锁定记录
    • 提供 DELETE 语句支持删除操作
  3. 异常处理:对 SQLException 进行了统一封装,转换为 Bucket4j 自定义异常。

与 MySQL 实现的区别

虽然 MariaDB 实现与 MySQL 实现在功能上相似,但有以下关键改进:

  1. 移除了对 MySQL JDBC 驱动的强制依赖
  2. 使用了 MariaDB 官方推荐的连接方式
  3. 针对 MariaDB 的特性进行了优化

测试保障

为了确保新功能的可靠性,实现中包含了基于 Docker 的集成测试,验证了在各种场景下的正确性,包括并发访问、事务隔离等关键特性。

使用建议

对于已经在使用 MariaDB 的用户,建议升级到 8.8.0 版本以获得更好的兼容性和性能。新用户可以直接使用这个实现来构建基于 MariaDB 的分布式限流方案。

这个新增功能进一步丰富了 Bucket4j 的生态系统,使得在 MariaDB 环境下的限流实现更加简单和可靠。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
154
1.98 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
508
44
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
194
279
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
992
395
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
940
554
communitycommunity
本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息
339
11
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
146
191
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Python
75
70