spring MVC、mybatis配置读写分离

原创 2013年12月18日 11:34:24

1.环境:

   3台数据库机器,一个master,二台slave,分别为slave1,slave2

    

2.要实现的目标:

   ①使数据写入到master

   ②读数据时,从slave1和slave2中读取

    以此来实现数据库的读写分离

3.原理:

   使用mysql驱动自带的replicationDriver来实现,replicationDriver简单来说就是存在两个Connection,一个masterConnection,一个slaveConnection;

   当setReadonly(true)就把currentConnection=slaveConnection,反之设置为masterConnection

4.实现步骤:

①jdbc.properties

## 使用ReplicationDriver而不是driver
jdbc.driverClassName=com.mysql.jdbc.ReplicationDriver 
## 使用的是jdbc:mysql:replication://
jdbc.url=jdbc:mysql:replication://master:3306,slave1:3306,slave2:3306/test2?characterEncoding=utf8 
jdbc.username=root
jdbc.password=123456
②使用spring的事物,把读操作设置为readonly=true

<!-- 配置dataSource -->
  <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource"
		id="dataSource">
		<property name="driverClassName" value="${jdbc.driverClassName}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
		<property name="url" value="${jdbc.url}"></property>
  </bean> 
  
  <!-- transaction configuration-->
   <bean id="transactionManager"
	class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource" />
  </bean> 
  
  <!-- 定义事务通知 -->  
	<tx:advice id="txAdvice" transaction-manager="transactionManager">  
	    <!-- 定义方法的过滤规则 -->  
	    <tx:attributes>  
	        <!-- 所有方法都使用事务 -->  
	        <tx:method name="*" propagation="REQUIRED"/>  
	        <!-- 定义所有get开头的方法都是只读的 -->  
	        <tx:method name="get*" read-only="true"/>  
	    </tx:attributes>  
	</tx:advice>  
	  
	<!-- 定义AOP配置 -->  
	<aop:config>  
	    <!-- 定义一个切入点 -->  
	    <aop:pointcut expression="execution (* com.most.service.*.*(..))" id="services"/>  
	    <!-- 对切入点和事务的通知,进行适配 -->  
	    <aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>  
	</aop:config>  
  
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource" />
	<property name="configLocation" value="/WEB-INF/conf/mybatis-config.xml" />
  </bean>

所有以get开头的方法被调用时,readonly = true


ps:这个只是实现了读写分离,master与slave之间的数据同步使用mysql replication即可



Spring实现数据库读写分离/spring事务配置解释(Annotation/Spring AOP/Reflection)

项目开发中读写的频率差距很大,所以实现读写分离:主库(master)中非实时读取的查询交给负载均衡的从库(slave),查询cpu的消耗和写入的io延时,保证DB系统的健壮性。 最终问题,分布式事务的...
  • typa01_kk
  • typa01_kk
  • 2016年04月11日 18:59
  • 6592

mysql+spring+mybatis实现数据库读写分离[代码配置]

mysql+spring+mybatis实现数据库读写分离[代码配置]
  • xtj332
  • xtj332
  • 2015年02月26日 16:50
  • 37399

Spring和MyBatis实现数据的读写分离

1.Spring实现数据库的读写分离 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询,S...
  • he90227
  • he90227
  • 2016年04月26日 10:07
  • 10527

使用spring aop实现业务层mysql 读写分离

spring aop , mysql 主从配置 实现读写分离,下来把自己的配置过程,以及遇到的问题记录下来,方便下次操作,也希望给一些朋友带来帮助。 mysql主从配置参看:http://blog....
  • huoyunshen88
  • huoyunshen88
  • 2014年07月03日 17:35
  • 14470

springmvc+mybatis+druid+mysql proxy读写分离配置

1、先配置好mysql proxy方式的主从复制,参考我之前转载的文章:CentOS 7 下MySQL 5.7.12主从复制架构配置记录(亲自验证可行); 2、用mysql  Connector...
  • juan0728juan
  • juan0728juan
  • 2016年08月17日 12:00
  • 2820

springmvc mybatis aop 读写分离 代码实现

关于项目配置,以前的博客都有,我就不多提了,我只发有差异的地方 package com.fileServer.datasource; import org.apache.commons.lan...
  • u014535678
  • u014535678
  • 2018年01月22日 16:25
  • 47

spring+ibatis实现读写分离(分享我的开源项目)

先吐槽下博客园,每天都推荐水帖不说,正经的分享技术的博客还他妈的不让上首页,我在那里投入了那么多汗水,什么垃圾东西。spring+ibatis实现读写分离 特点 无缝结合spring+ibatis,...
  • tangyanbo1110
  • tangyanbo1110
  • 2015年06月26日 12:04
  • 1201

Spring+Mybatis透明实现读写分离

背景网上有好多读写分离的实践,所应对的业务场景也不一样,本方法主要是应对中小型互联网产品的读写分离。数据库环境:1台master;2台slaver适用框架:spring+mybatis操作数据库的简单...
  • johnstrive
  • johnstrive
  • 2016年09月20日 16:58
  • 1578

Spring MVC+jdbcTemplate+MySql实现读写分离

现如今,数据库读写分离已经不在是新鲜的话题,很多数据统计网站 、访问量高的网站都会使用这项技术。解决网站响应慢、服务器承载压力过大的方案其实有很多,而读写分离只是其中一种实现方案。有的时候读写分离并不...
  • zbraccp
  • zbraccp
  • 2016年12月29日 10:01
  • 316

Spring和MyBatis实现数据的读写分离

1.Spring实现数据库的读写分离 现在大型的电子商务系统,在数据库层面大都采用读写分离技术,就是一个Master数据库,多个Slave数据库。Master库负责数据更新和实时数据查询...
  • xyw591238
  • xyw591238
  • 2016年04月28日 14:09
  • 2268
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring MVC、mybatis配置读写分离
举报原因:
原因补充:

(最多只允许输入30个字)