1. sharding-jdbc读写分离
是当当网开源 apache封装,引用只需修改配置文件,和加入pom
如下:yml中配置读写数据源
sharding: jdbc: datasource: names: ds0,ds1 ds0: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:sqlserver://192.168.10.11:1433;DatabaseName=ERP username: sa password: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver ds1: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:sqlserver://192.168.10.10:1433;DatabaseName=ERP username: sa password: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver config: masterslave: load-balance-algorithm-type: round_robin name: ms master-data-source-name: ds0 slave-data-source-names: ds1 props: sql: show: true
引入pom文件:
<dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>io.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-namespace</artifactId> <version>3.0.0</version> </dependency>
强制路由,就是解决读写分离数据同步的问题,当查询由读库查询切换到写库读取
@GetMapping("getAll") public Object getAll(){ HintManager hintManager = HintManager.getInstance(); hintManager.setMasterRouteOnly(); List<User> all = userRepository.findAll(); hintManager.close(); return all; }
第二种方案 是采用AOP方案 比较复杂