Django中的读写分离(sqlite3,mysql)高可用、高并发、高吞吐 配置一主多从

一、读写分离


1.读写分离的由来(高可用、高并发、高吞吐)


在实际生产中,由单台mysql作为独立的数据库是完全不能满足实际需求的,无论在安全性,高可用性高并发性以及高吞吐高可用、高并发)等各个方面。因此,一般来说都是通过主从复制(Master-Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力 这样的方案来进行部署与实施的。
读写分离 基本的原理是让主数据库处理增删改操作(INSERT、DELETE、UPDATE),而从数据库处理SELECT查询操作。


2.读写分离的目的


数据库的写操作是比较耗时的(写10000条数据到oracle可能要3分钟)。但数据库的读操作速度较快(从oracle读10000条数据可能只要5秒钟)。
所以读写分离解决的是,数据库的写入,影响查询的效率。


3.什么时候进行读写分离


数据库不一定要读写分离,如果程序使用数据库较多,更新少,查询多的时候情况下会考虑使用,利用数据库主从同步。


4.读写分离的优点


可以减少数据库的压力,提高性能。
主从复制以及读写分离在实际应用中,对于 都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发性等各个方面都是不能完全满足实际需求的。因此,通过主从复制的方式来同步数据、再通过读写分离来提升数据库的并发负载能力。


二、读写分离具体在django项目中的应用


第一步:settings中配置数据库


在这里插入图片描述
在这里插入图片描述
涉及到 django服务如何选择使用数据库:

写:master —》 default

读: slave库 ——》 slave


第二步:模型同步


如果使用mysql数据库首先应该建库 ,使用sqllit3 不需要创建库

进行数据的迁移,同步表结构,但只需要同步到slave数据库中

在这里插入图片描述


第三步:配置读写分离


将读写分别使用不同的数据库
自动模式

重写方法:

  • 重写的是 数据库路由提供的方法
  • db_for_read() 读数据库的配置 slave
  • db_for_write() 写数据库的配置 master -》 default

① 在项目的主目录中创建一个脚本文件,自定义数据库路由


在这里插入图片描述


② 在settings中配置


配置指定的数据库路由
在这里插入图片描述


③使用


注册后,不能用注册的账号登录

发现
在主数据库中有注册的用户
在这里插入图片描述
而在从数据库中却没有该用户的信息
在这里插入图片描述
按照配置,将数据写在了master库,没有写在slave库中

原因: 数据库之间进行数据同步,需要在数据库中进行配置


三、 配置一主多从


1. 一主多从概念


在这里插入图片描述
问题: 如何选择slave,数据库集群关于选择slave加一个权重,负载均衡


2. 随机选择slave库处理


第一步:在settings中配置多个从库


在这里插入图片描述


第二步: 在py文件中加上random函数,随机选择从库


在这里插入图片描述


四、如果是使用mysql数据库,那么只需改动数据库配置


在这里插入图片描述


五、一主多从方案(随机和分库分表)


https://blog.csdn.net/oLingTing/article/details/92649272
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一主多从方案

在这里插入图片描述


  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值