2022
09-20
09-20
spring-data-redis 动态切换数据源的方法
最近遇到了一个麻烦的需求,我们需要一个微服务应用同时访问两个不同的Redis集群。一般我们不会这么使用Redis,但是这两个Redis本来是不同业务集群,现在需要一个微服务同时访问。其实我们在实际业务开发的时候,可能还会遇到类似的场景。例如Redis读写分离,这个也是spring-data-redis没有提供的功能,底层连接池例如Lettuce或者Jedis都提供了获取只读连接的API,但是缺陷有两个:上层spring-data-redis并没...
继续阅读 >
一、创建项目并导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><versi...
项目中需要根据不同业务进行分库,首先是将业务不同业务映射到不同过的数据库(biz-->db,可能存在多对一情况),查看springjdbc源码发现AbstractRoutingDataSource类作为一个数据源路由抽象类,可以担当这个事情,其设计思想也比较简单,首先将多个数据源的映射关系自己维护完成后注入进来,然后自己定义一个路由规则,重点部分见代码:首先可以看到该类是一个抽象类,重点关注变量targetDataSource和resolvedDataSources.其中ta...