数据库的读写分离
来源:互联网 发布:直到世界的尽头知乎 编辑:程序博客网 时间:2024/03/29 22:29
一般来说,我们web应用的数据库都是读多写少。为了保证数据库的读写速度,我们可以采用读写分离的方案。
简单来说,有一个(或多个)主库,主库负责数据库的写操作(insert, update, delete),有一个(或多个)从库,从库负责数据库的读操作(select)
这样我们需要保证的是:
1. 主从库的数据一致
2. 主库只负责写数据
3. 从库只负责读数据
实现读写分离的方法一般有如下几种
1. 硬编码:将读写分离的逻辑写入到业务代码中,由应用层开发程序员来实现读写分离。
这样的缺点是无法动态更换数据源,比如有一台从库服务器宕机了,只能修改代码并重启web服务器才能更换数据源,这会导致我们的网站一定时间内无法访问
2.使用中间件来实现读写分离
这样的好处是不需要应用层开发关注读写分离,无需修改源程序;另外也可以动态更换数据源而无需重启服务器
缺点是程序依赖于中间件,会导致切换数据库变得困难;另外由中间件做了中转代理,性能有所下降;
3.用Spring基于应用层实现
原理:
在进入Service之前,使用AOP来做出判断,是使用写库还是读库,判断依据可以根据方法名判断,比如说以query、find、get等开头的就走读库,其他的走写库。
另外:如果1主多从,假设主数据库故障或者某台从数据库故障,该如何?
答:可以考虑用nginx或者haproxy直接负载均衡到多个从mysql上,nginx和haproxy默认就都有故障移除的功能,主数据库也可以采用双主模式但是一台不工作,用keepalived关联两台服务器,一台主故障直接切换到另一台主上面,这个时候所有的从数据库也需要做切换
阅读全文
0 0
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 数据库的读写分离
- 字符串格式间相互转换
- 三种方式实现网页二级菜单
- Python核心团队计划2020年停止支持Python2,NumPy宣布停止支持计划表
- 为什么 Facebook 活得春风得意,而人人网却半死不活?
- linux虚拟机能ping通windows主机,windows主机ping不通linux虚拟机的解决办法
- 数据库的读写分离
- CentOS7打开终端快捷键
- 美团点评架构再调整,王兴凭什么同时杠上阿里滴滴饿了么
- 智能社:javascript教程(基础)
- Python限制属性
- 请求参数接收
- 自己对IAAS和PAAS的看法
- React学习笔记_动态注入reducer
- 当程序员写不出代码了,该怎么办?