为了解决数据库主库的读压力,我们通常会第一时间采用读写分离方式,成本低,效果好。在配置读写分离的方法上有很多被大家所采纳的方式,今天学习一种极简的读写分离配置,Lets go ~
下面是使用mysql-connector-java来实现读写分离的配置:
POM:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.4</version>
</dependency>
DataSource:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.ReplicationDriver"/>
<property name="url" value="jdbc:mysql:replication://192.168.157.61:3306,192.168.157.62:3306/DatabaseName?..."/>
<property name="username" value="root"/>
<property name="password" value="root"/>
注意:url这里改写成以“jdbc:mysql:replication://”开头,第一个为master,后面可以跟多个slave,用逗号分隔。
如何生效?这里配合Spring框架,使用Transactional注解的形式来路由,readOnly 默认为:false,设置为true,就可以路由到slave:
@Override
@Transactional(readOnly = true)
public Boolean isOver(){
看到这里,配置及使用统统Over。很多企业在做读写分离采用了方法名拦截的方式来路由,相比而言,更加省事,也不需要注意命名规范。
关于遇到的坑,下一篇文章会写。
网友评论