码迷,mamicode.com
首页 > 编程语言 > 详细

springboot-读写分离

时间:2019-02-11 18:32:24      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:使用   复杂度   cal   写入   情况下   缓存   越来越大   size   瓶颈   

为什么需要读写分离

当项目越来越大和并发越来大的情况下,单个数据库服务器的压力肯定也是越来越大,最终演变成数据库成为性能的瓶颈,而且当数据越来越多时,查询也更加耗费时间,当然数据库数据过大时,可以采用数据库分库分表,同时数据库压力过大时,也可以采用Redis等缓存技术来降低压力,但是任何一种技术都不是万金油,很多时候都是通过多种技术搭配使用,而本文主要就是介绍通过读写分离来加快数据库读取速度

实现方式

读写分离实现的方式有多种,但是多种都需要配置数据库的主从复制

方式一

数据库中间件实现,如Mycat等数据库中间件,对于项目本身来说,只有一个数据源,就是链接到Mycat,再由mycat根据规则去选择从哪个库获取数据

方式二

代码中配置多数据源,通过代码控制使用哪个数据源,本文也是主要介绍这种方式

优点

1.降低数据库读取压力,尤其是有些需要大量计算的实时报表类应用

2.增强数据安全性,读写分离有个好处就是数据近乎实时备份,一旦某台服务器硬盘发生了损坏,从库的数据可以无限接近主库

3.可以实现高可用,当然只是配置了读写分离并不能实现搞可用,最多就是在Master(主库)宕机了还能进行查询操作,具体高可用还需要其他操作

缺点

1.增大成本,一台数据库服务器和多台数据库的成本肯定是不一样的

2.增大代码复杂度,不过这点还比较轻微吧,但是也的确会一定程度上加重

3.增大写入成本,虽然降低了读取成本,但是写入成本却是一点也没有降低,毕竟还有从库一直在向主库请求数据

 

实践:

application.yml

spring:
  datasource:
    master: # 写账户
      jdbc-url: jdbc:mysql://localhost:3306/otadb
      username: root
      password: 123456
    slave1: # 只读账户
      jdbc-url: jdbc:mysql://localhost:3306/otadb1
      username: root
      password: 123456
    slave2: # 只读账户
      jdbc-url: jdbc:mysql://localhost:3306/otadb2
      username: root
      password: 123456

多数据源配置

 

 

springboot-读写分离

标签:使用   复杂度   cal   写入   情况下   缓存   越来越大   size   瓶颈   

原文地址:https://www.cnblogs.com/qjm201000/p/10362790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!