Mysql主从延时图解方法

作者:人类幼崽养成记 时间:2024-01-24 04:26:29 

1.忍受 *

第一种解决办法,很简单,无他,不管他,没有读到也没事。这时业务不需要任何改造,你好,我好,她也好~

如果业务对于数据一致性要求不高,我们就可以采用这种方案。

2.数据同步写方案

主从数据同步方案,一般都是采用的异步方式同步给备库。

我们可以将其修改为同步方案,主从同步完成,主库上的写才能返回。

Mysql主从延时图解方法

  • 业务系统发起写操作,数据写主库

  • 写请求需要等待主从同步完成才能返回

  • 数据读从库,主从同步完成就能读到最新数据

这种方案,我们只需要修改数据库之间同步配置即可,业务层无需修改,相对简单。

「不过,由于主库写需要等待主从完成,写请求的时延将会增加,吞吐量将会降低。」

这一点对于现在在线业务,可能无法接受。

3.选择性强制读主

对于需要强一致的场景,我们可以将其的读请求都操作主库,这样「读写都在主库」,就没有不一致的情况。

Mysql主从延时图解方法

这种方案业务层需要改造一下,将其强制性读主,相对改造难度较低。

不过这种方案相对于浪费了另一个数据库,增加主库的压力。

4.中间件选择路由法

这种方案需要使用一个中间件,所有数据库操作都先发到中间件,由中间件再分发到相应的数据库。

Mysql主从延时图解方法

这时流程如下:

  • 写请求,中间件将会发到主库,同时记录一下此时写请求的 key(操作表加主键等)

  • 读请求,如果此时 key 存在,将会路由到主库

  • 一定时间后(经验值),中间件认为主从同步完成,删除这个 key,后续读将会读从库

这种方案,可以保持数据读写的一致。

但是系统架构增加了一个中间件,整体复杂度变高,业务开发也变得复杂,学习成本也比较高。

5.缓存路由 *

这种方案与中间件的方案流程比较类似,不过改造成本相对较低,不需要增加任何中间件。

Mysql主从延时图解方法

这时流程如下:

  1. 写请求发往主库,同时缓存记录操作的 key,缓存的失效时间设置为主从的延时

  2. 读请求首先判断缓存是否存在

  • 若存在,代表刚发生过写操作,读请求操作主库

  • 若不存在,代表近期没发生写操作,读请求操作从库

这种方案相对中间件的方案成本较低,但是呢我们此时又引入一个缓存组件,所有读写之间就又多了一步缓存操作。

  • 忍受 *

  • 数据库同步写方案

  • 选择性强制读主

  • 中间件选择路由法

  • 缓存路由 *

来源:https://blog.csdn.net/yao583224426/article/details/122217533

标签:Mysql,主从延时,数据库
0
投稿

猜你喜欢

  • 用Python判断奇偶数示例

    2021-03-17 22:18:22
  • Python数据类型转换详解

    2021-03-04 04:11:13
  • Python利用arcpy模块实现栅格的创建与拼接

    2021-10-07 22:39:37
  • 客户端和服务端的编码“陷阱”

    2007-12-21 19:19:00
  • ASP.NET MVC从控制器中获取URL值

    2023-07-09 18:30:08
  • CentOS 7.2 Yum编译安装MySQL 5.6

    2024-01-19 06:03:18
  • 深入探讨opencv图像矫正算法实战

    2022-06-03 16:20:39
  • Python之基础函数案例详解

    2023-07-09 19:43:24
  • 一文学会使用OpenCV构建文档扫描仪

    2023-08-02 12:35:05
  • asp如何对文件进行操作?

    2009-11-20 18:31:00
  • 详解thinkphp+redis+队列的实现代码

    2024-05-11 10:08:34
  • MySQL 函数过程递归

    2008-07-25 19:32:00
  • JSONObject使用方法详解

    2024-05-03 15:06:47
  • Python 如何展开嵌套的序列

    2022-10-12 03:15:37
  • Python如何实现转换URL详解

    2021-06-28 20:23:46
  • Jquery对数组的操作技巧整理

    2024-04-22 22:32:52
  • Server_Name与Http_Host的区别

    2008-06-19 13:39:00
  • MySQL 8.0 对 limit 的优化技巧

    2024-01-19 02:24:38
  • tensorflow转onnx的实现方法

    2022-07-08 23:04:51
  • 浅析python打包工具distutils、setuptools

    2021-03-30 14:45:14
  • asp之家 网络编程 m.aspxhome.com