日期:2014-05-16  浏览次数:20464 次

【转】spring 数据库读写分离

什么是数据库的读写分离

数据库的读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主(master)数据库提供写操作,从(slave)数据库提供读操作,其实在很多系统中,主要是读的操作。当主(master)数据库进行写操作时,数据要同步到从(slave)的数据库,这样才能有效保证数据库完整性。主(master)数据库同步到从(slave)数据库,从数据库一般由多台数据库组成这样才能达到减轻压力的目的。这里还要注意处理好负载均衡

?

使用spring的动态路由实现数据库读写分离

Spring2.0.1以后的版本已经支持配置多数据源,并且可以在运行的时候动态加载不同的数据源。通过继承AbstractRoutingDataSource就可以实现多数据源的动态转换。目前做的项目就是需要访问2个数据源,每个数据源的表结构都是相同的,所以要求数据源的变动对于编码人员来说是透明,也就是说同样SQL语句在不同的环境下操作的数据库是不一样的。具体的流程如下:

1.建立一个获得和设置上下文的类

?

[java]?view plaincopy
  1. package?com.lvye.base.dao.impl.jdbc;??
  2. /**?