关系型数据库 读写分离

 

一。概述

 

读写分离数据库实例一般采用主从方式。

多主多从方式,虽能整体提高数据处理能力,但多主之间数据同步,数据一致性问题,暂无较完善的开源解决方案。

目前大多数系统采用一主多从的方式。主为读写实例,从为读实例。请求随机,轮训或加权(多从读实例负载均衡策略)等分配到不同从读实例。

主通过异步,半异步方式复制数据到从。

主从异步复制数据,写及时读,从读实例数据尚未完成同步,就有可能读到过期数据。读写分离,要解决写及时读到最新数据的问题。

读写分离一般在应用层添加读写分离中间件或在数据存储层添加数据库代理(上层无感知)来实现读写分离。

 

读写分离本身是数据层的领域问题,设计方案上,最好对上层透明。代理模式基本做到无感知,只需要修改一下应用中数据库地址。目前分库分表中间件,处理分库分表同时,也实现了读写分离的功能。

 

二。读写分离,一主多从读写请求分配原则

场景

分配到主读写实例

根据多从实例负载策略分配到某个从读实例

备注

SQL所有写

 

 

SQL同一个本地事务内读写

 

 

SQL无本地事务的读

 

从读实例都不存在或下线,还是分配到主读

SQL修改表结构语句

 

 

 

三。代理模式阿里云RDS读写分离

一主多从,代理模式,数据存储层读写分离。

  • 应用修改

修改数据库连接地址。

  • 运维修改

添加读实例。

 

四。中间件模式Sharding-JDBC

对应用不透明,有一定工作量。

  • 应用修改。
  1. 引入jar包。
  2. 添加主从数据源配置

 

 

五。广义业务读写分离

 

 

 

(一)公司内部运营与企业B端(医院,医院医生)用户,C(居民)端用户读写分离

(二)B端医院与医院医生与C端居民用户读写分离

六。复杂搜索与日常OLTP数据读写分离

  •  

 

七。不建议读写分离情况

  • 数据量不大。
  • 写多读少。
  • 访问量不大,不需要读写分离。

 

八。TiDB

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值