架构的存储高性能- 读写分离

架构的存储高性能- 读写分离

读写分离的基本原理是将数据库读写操作分散到不同的节点上,其基本架构如下图所示。
在这里插入图片描述
读写分离的基本实现如下:
(1)数据库服务器搭建主从集群,一主一从、一主多从都可以。
(2)数据库主机负责读写操作,从机只负责读操作。
(3)数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据。
(4)业务服务器将写操作发给数据库主机,将读操作发给数据库从机。

读写分离的实现逻辑并不复杂,但在实际应用过程中需要应对复制延迟带来的复杂性。
以MySQL为例,主从复制延迟可能达到1s,如果有大量数据同步,延迟1分钟也是有可能的。主从复制延迟会带来一个问题:如果业务服务器将数据写入到数据库主服务器后立刻(1s内)进行读取,此时读操作访问的是从机,主机还没有将数据复制过来,到从机读取数据是读不到最新数据的,业务上可能会有问题。例如,用户刚注册完后立刻登录,业务服务器会提示他“你还没有注册”,而用户明明刚才已经注册成功了。
解决主从复制延迟有几种常见的方法。
(1)写操作后的读操作指定发给数据库主服务器。
例如,注册账号完成后,登录时读取账号的读操作也发给数据库主服务器。这种方式和业务强绑定,对业务的侵入和影响较大,如果哪个新来的程序员不知道这样写代码,就会导致一个bug。
(2)读从机失败后再读一次主机。
这就是通常所说的“二次读取”,二次读取和业务无绑定,只需要对底层数据库访问的API 进行封装即可,实现代价较小,不足之处在于如果有很多二次读取,将大大增加主机的读操作压力。例如,黑客暴力破解账号,会导致大量的二次读取操作,主机可能顶不住读操作的压力从而崩溃。
(3)关键业务读写操作全部指向主机,非关键业务采用读写分离。
例如,对于一个用户管理系统来说,注册+登录的业务读写操作全部访问主机,用户的介绍、爱好、等级等业务,可以采用读写分离,因为即使用户改了自己的自我介绍,在查询时却看到了自我介绍还是旧的,业务影响与不能登录相比就小很多,还可以忍受。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值