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

本文介绍了如何使用Spring Boot结合MySQL Router实现读写分离、高可用和负载均衡。通过配置多个数据源,利用Druid连接池,并借助MySQL Router的功能,避免了对MySQL Proxy或MyCat等复杂组件的依赖。数据库路由和事务配置都在代码中进行了详细说明。
摘要由CSDN通过智能技术生成

95d781a2b549856aadbba9d28448e6f3.png

Spring Boot

3cdff669cc3abe369afeb7b61ec12977.png

MySQL

693bdabe1b60c8c1919fec8d3cf5486b.png

MyBatis

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

先多说几句。

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

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

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

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

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

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

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

配置

79956a53510b636eb923802a879514a4.png

appliction.yml

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

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

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

a9e25cb338d0086ea3684500f903a104.png

DBCfg

枚举的数据连接类型:

7ce80fa73678a5ac35b7f487d3787e65.png

DBEnums

数据源动态切换:

3c06368933788e83ae27dc64b8426977.png

DataSourceContextHolder

数据库路由

07cceb4618c75e4613720f0f832553f9.png

RouteDB

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

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

d25f4a47c91b7c069ab72d0ddfd1a2d6.png

MyBatis配置

事务配置:

ab0a5d93d88691260c981b9bb58765a7.png

DBTXCfg

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

c2c1d9b1c7f0835c1406ebcc81d27b71.png

DBAop

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值