ShardingSphere-JDBC与SpringBoot JPA的整合导致读写分离失败
发布时间
阅读量:
阅读量
问题
在近期将ShardingSphere JDBC与Spring Boot进行整合的过程中,遇到了一个异常情况:当ORM框架采用JPA时,配置的读写分离策略无法正常生效,所有查询操作依旧默认连接主库,而未切换至从库。然而,使用相同的配置方案切换至Mybatis框架后,该问题则完全不存在。
经过对相关资料的深入查阅,初步判断该异常现象可能与JPA的事务管理机制存在关联。
ShardingSphere负载均衡算法
当前所使用的系统版本为5.1.2,该版本中所采用的负载均衡机制相对基础,本人所配置的策略为ROUND_ROBIN轮询方式。然而,所有负载均衡方案均包含一个隐含的运行逻辑:
当事务被启动时,相关查询操作将直接访问主数据库,而不会转向从数据库进行读取
这一设计逻辑具有较强的合理性。由于事务尚未完成提交,其中涉及的查询操作需要能够获取到未提交的数据内容,这与整体系统的运行规则保持一致。若此时不通过主库执行查询,则无法获取到所需数据。
JPA事务
经调试验证可知,SpringBoot框架中默认采用的JpaRepository具体实现类为SimpleJpaRepository。

还没有任何评论哟~
