欢迎来到网际学院,让您的头脑满载而归!

Spring Boot与MySQL Router读写分离、高可用、负载均衡

发布日期:2017-12-07 10:41:27 作者:管理员 阅读:1589

Spring BootMySQLMyBatis这篇文章要结合以下文章来看:《Spring boot+MyBatis+PageHelper+JSON》《极简Spring Boot搭建、开发、部署》《CentOS6.8安装MySQL5.7》《M

Spring Boot与MySQL Router读写分离、高可用、负载均衡

Spring Boot与MySQL Router读写分离、高可用、负载均衡

Spring Boot

Spring Boot与MySQL Router读写分离、高可用、负载均衡

MySQL

Spring Boot与MySQL Router读写分离、高可用、负载均衡

MyBatis

这篇文章要结合以下文章来看:

Spring boot+MyBatis+PageHelper+JSON

极简Spring Boot搭建、开发、部署

CentOS6.8安装MySQL5.7

MySQL5.7主从复制

MySQL读写分离 使用MySQL Router

先多说几句。

一般中小型的项目,搞个1主多从就可以了,如果对高可用有要求,双主多从就够够的了。这时候结合我们的工程,完全就可以搞读写分离了,就是配置多个数据源,调用Dao或Mapper的时候走不同的数据源连接而已。

大家一般使用读写分离的时候,MySQL可能更多是用MySQL Proxy或者MyCat。

但是MySQL Proxy这个组件啊,怎么说它呢,大家可以去看官网,这个组件就从来没有发布过正式版,全是Alpha,官方自己都不建议用,也是奇葩了。

而MyCat呢,功能又太强大。满汉全席虽然好,但是我就是想吃个红柳烤串而已。MySQL Router够用了。

读写分离其实不用MySQL Router也行,但是它还有高可用、负载均衡的功能,就省了我们在代码里实现了。大家可以进行测试,本文就不测试了。

另外MySQL Router实现了MySQL的高可用,它自己的高可用可以使用Keepalived,有关KA的使用可以参考《Keepalived+Nginx高可用安装部署(含Nginx+Tomcat负载均衡)

以上应该写在上一篇的,当时时间紧,就挪到这里吧。

配置

Spring Boot与MySQL Router读写分离、高可用、负载均衡

appliction.yml

很简单,就是配两个数据源,一读一写。我使用的是Druid,用的是最简单的配置,具体的配置项大家可以看DruidAbstractDataSource这个类。

接着是一些配置类,一个个来:

DBCfg,根据配置文件配置数据源:

Spring Boot与MySQL Router读写分离、高可用、负载均衡

DBCfg

枚举的数据连接类型:

Spring Boot与MySQL Router读写分离、高可用、负载均衡

DBEnums

数据源动态切换:

Spring Boot与MySQL Router读写分离、高可用、负载均衡

DataSourceContextHolder

数据库路由

Spring Boot与MySQL Router读写分离、高可用、负载均衡

RouteDB

如果我们不是用MySQL Router,而是配置了多个从库的话,这里应该做一些处理,写个轮询、随机访问之类的规则。不过负载的事由MySQL Router做了,这里就不用制定规则了。

MyBatis的配置,这里放在了Spring Boot的启动类里,实际工作中应该单写一个类比较合适:

Spring Boot与MySQL Router读写分离、高可用、负载均衡

MyBatis配置

事务配置:

Spring Boot与MySQL Router读写分离、高可用、负载均衡

DBTXCfg

数据库连接切换AOP,切换是放在Service里:

Spring Boot与MySQL Router读写分离、高可用、负载均衡

DBAop

至此,读写分离就完成了。


Copyright oneie ©2014-2017 All Rights Reserved. 所有资料来源于互联网对相关版权责任概不负责。如发现侵犯了您的版权请与我们联系。 网际学院 版权所有
免责声明  商务合作及投稿请联系 QQ:86662817