1、问题
随着业务发展及数据增长,数据库的数据量出现激增,必须考虑数据库集群的方式来提升性能,读写分离是其中的一种方式,在应用层如何来实现读写分离呢?
2、原理
可以使用spring jdbc中的AbstractRoutingDataSource,其内部用map来记录key到DataSource的映射关系,在获取连接时,会根据key找到对应的DataSource。其类图为
AbstractRoutingDataSource:基于路由的数据源框架基类,根据路由key找到对应的DataSource
IsolationLevelDataSourceRouter:AbstractRoutingDataSource的一个实现类,根据spring的事务隔离级别来路由
DataSourceLookup:路由查找接口类,根据字符串解析得到对应的DataSource