DBPack 读写分离功能发布公告
在 v0.1.0 版本我们发布了分布式事务功能,并提供了读写分离功能预览。在 v0.2.0 这个版本,我们加入了通过
UseDB
hint 自定义查询请求路由的功能,并修复了一些 bug。另外,在这个版本,我们还提供了审计日志功能的预览,该功能将在 v0.3.0 正式发布。
修复 bug 情况
PHP 8.0 pdo 抛出
transaction not active
异常Mysql 客户端在给用户发送 sql 执行结果时,如果执行没有异常,发送的第一个包为 OKPacket,该包中有一个标志位可以标识 sql 请求是否在一个事务中。如下图所示:
这个包的内容为:
dbpack 之前的版本将标志位设置为 0,java、golang、.net core、php 8.0 之前的 mysql driver 都能正确协调事务,php 8.0 的 pdo driver 会对标志位进行校验,所以 php 8.0 以上版本在使用 dbpack 协调分布式事务时,会抛出
transaction not active
异常。负载均衡算法反序列化异常
该异常导致读写分离查询请求都以随机算法在 DB 之间执行。
其他 bug。
新增功能
使用 UseDB
hint 自定义查询请求路由
例如:
在查询请求中加入 UseDB
注解,注解的参数为数据源的名称,即可指定 SQL 请求路由到哪个数据源执行。
预览功能
本次版本增加了审计日志功能。可通过在配置中加入 AuditLogFilter
开启,例如:
开启后,DBPack 会以下面的格式记录审计日志:
记录内容如下:
说明
接下来的版本计划:
V0.3.0
审计日志、SQL 请求链路追踪
V0.4.0
敏感数据加解密、限流、熔断
V0.5.0
分库分表功能
本次发布的 v0.2.0 版本可解决用户的分布式事务需求和读写分离需求,两个功能可以结合使用,无需侵入用户业务,体验非常丝滑。
欢迎开源爱好者和我们一起建设 DBPack 社区,加群或参与社区建设,请微信联系:scottlewis。
链接
dbpack: https://github.com/CECTC/dbpack
dbpack-samples: https://github.com/CECTC/dbpack-samples
dbpack-doc: https://github.com/CECTC/dbpack-doc
事件驱动分布式事务设计:https://mp.weixin.qq.com/s/r43JvRY3LCETMoZjrdNxXA
评论