Advertisement

ShardingSphere-JDBC与SpringBoot JPA的整合导致读写分离失败

阅读量:

问题

在近期将ShardingSphere JDBC与Spring Boot进行整合的过程中,遇到了一个异常情况:当ORM框架采用JPA时,配置的读写分离策略无法正常生效,所有查询操作依旧默认连接主库,而未切换至从库。然而,使用相同的配置方案切换至Mybatis框架后,该问题则完全不存在。
经过对相关资料的深入查阅,初步判断该异常现象可能与JPA的事务管理机制存在关联。

ShardingSphere负载均衡算法

当前所使用的系统版本为5.1.2,该版本中所采用的负载均衡机制相对基础,本人所配置的策略为ROUND_ROBIN轮询方式。然而,所有负载均衡方案均包含一个隐含的运行逻辑:

当事务被启动时,相关查询操作将直接访问主数据库,而不会转向从数据库进行读取

这一设计逻辑具有较强的合理性。由于事务尚未完成提交,其中涉及的查询操作需要能够获取到未提交的数据内容,这与整体系统的运行规则保持一致。若此时不通过主库执行查询,则无法获取到所需数据。

JPA事务

经调试验证可知,SpringBoot框架中默认采用的JpaRepository具体实现类为SimpleJpaRepository

![在这里插入图片描述](https://ad.itadn.com/c/weblog/blog-img/images/2025

全部评论 (0)

还没有任何评论哟~