Mysql主从延时图解方法
作者:人类幼崽养成记 发布时间:2024-01-24 04:26:29
1.忍受 *
第一种解决办法,很简单,无他,不管他,没有读到也没事。这时业务不需要任何改造,你好,我好,她也好~
如果业务对于数据一致性要求不高,我们就可以采用这种方案。
2.数据同步写方案
主从数据同步方案,一般都是采用的异步方式同步给备库。
我们可以将其修改为同步方案,主从同步完成,主库上的写才能返回。
业务系统发起写操作,数据写主库
写请求需要等待主从同步完成才能返回
数据读从库,主从同步完成就能读到最新数据
这种方案,我们只需要修改数据库之间同步配置即可,业务层无需修改,相对简单。
「不过,由于主库写需要等待主从完成,写请求的时延将会增加,吞吐量将会降低。」
这一点对于现在在线业务,可能无法接受。
3.选择性强制读主
对于需要强一致的场景,我们可以将其的读请求都操作主库,这样「读写都在主库」,就没有不一致的情况。
这种方案业务层需要改造一下,将其强制性读主,相对改造难度较低。
不过这种方案相对于浪费了另一个数据库,增加主库的压力。
4.中间件选择路由法
这种方案需要使用一个中间件,所有数据库操作都先发到中间件,由中间件再分发到相应的数据库。
这时流程如下:
写请求,中间件将会发到主库,同时记录一下此时写请求的 key(操作表加主键等)
读请求,如果此时 key 存在,将会路由到主库
一定时间后(经验值),中间件认为主从同步完成,删除这个 key,后续读将会读从库
这种方案,可以保持数据读写的一致。
但是系统架构增加了一个中间件,整体复杂度变高,业务开发也变得复杂,学习成本也比较高。
5.缓存路由 *
这种方案与中间件的方案流程比较类似,不过改造成本相对较低,不需要增加任何中间件。
这时流程如下:
写请求发往主库,同时缓存记录操作的 key,缓存的失效时间设置为主从的延时
读请求首先判断缓存是否存在
若存在,代表刚发生过写操作,读请求操作主库
若不存在,代表近期没发生写操作,读请求操作从库
这种方案相对中间件的方案成本较低,但是呢我们此时又引入一个缓存组件,所有读写之间就又多了一步缓存操作。
忍受 *
数据库同步写方案
选择性强制读主
中间件选择路由法
缓存路由 *
来源:https://blog.csdn.net/yao583224426/article/details/122217533


猜你喜欢
- 在处理数据的时候,很多时候会遇到批量替换的情况,如果一个一个去修改效率过低,也容易出错。replace()是很好的方法。源数据1、替换全部或
- 在python中gui编程有很多中选择,如果是相对简单的gui的话使用python自带的tkinter即可,但是由于tkinter没有详细的
- 前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少。原因他也大
- 什么是python的迭代如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Ite
- 下面是python中的一个函数计算代码:loops=25000000from math import*a=range(1,loops)def
- 随着网络的发展,人们通过各种方式使用它。今天,网络购物,跟朋友或者不认识的人聊天,管理银行账户,以及一些日常应用,共享照片或视频,等等。事实
- 本文实例讲述了python函数局部变量用法。分享给大家供大家参考。具体分析如下:当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其
- 一、前言嗨,大家好,我是新发。最近需要做个小工具,可以通过python来读写Excel,实现增删改查操作。以前用的是xlrd和xlwt这两个
- 前言孙悟空在花果山称王的时候,特意去了一趟东海,在那里淘到了如意金箍棒。因为身为一个山大王,怎么能没有一件趁手的兵器呢?作为程序员的我们也一
- Go语言基础三切片的定义1. 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。2. 切片的长度可以改变,因此,切
- PHP fprintf() 函数实例把一些文本写入到名为 "test.txt" 的文本文件:<?php $numb
- models.py:from django.db import models # 出版社class Publisher(models.Mod
- 本文实例讲述了PHP类的特性。分享给大家供大家参考,具体如下:对象向下传递特性当一个对象调用一个实例方法,然后在该方法中又去静态调用另一个类
- 1.执行计划简介执行计划是指一条 SQL 语句在经过 MySQL 查询优化器的优化会后,具体的执行方式。MySQL 为我们提供了  
- 本文实例为大家分享了HTML5 Canvas实现的一个画板代码,供大家参考,具体内容如下<!DOCTYPE html><h
- 1. 引言因为在学习遗传算法路径规划的内容,其中遗传算法中涉及到了种群的初始化,而在路径规划的种群初始化中,种群初始化就是先找到一条条从起点
- 如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第四个自然段。以下叙述的脚本包括服务器端脚本和客户端的脚本,服务器端脚本指在服务器上
- 文章主要描述的是SQL Server数据库和Oracle数据库行转列的一种比较典型操作方法,对于有些业务来说,数据在表中的存储与其最终的Gr
- 测试结果: 整个买票流程可以再快一点,不过为了稳定起见,有些地方等待了一些时间完整程序,拿去可用 整个程序分了三个模块:购票模块(
- 本文实例讲述了Python使用内置json模块解析json格式数据的方法。分享给大家供大家参考,具体如下:Python中解析json字符串非