数据库主从数据一致性

来源:互联网 发布:php 获取变量名 编辑:程序博客网 时间:2024/06/05 05:30

DB主从一致性的几种解决方法

起源

现在基本所有的程序中都会用到数据库,而数据库其实就是对所有业务逻辑处理结果的保存,所以不论在什么情况下数据的丢失都不被允许的,最坏的情况也要最小化数据的丢失程度,所以一般情况下,数据源都会至少配有两个节点,一个业务处理使用的节点,一个甚至多个从节点,这些从节点就是我们常说的冷备,业务处理节点(主节点)和备份节点一定的时间间隔内进行数据同步,从而来保证当一个数据源坏掉之后,数据也不会丢失,或着丢失很少(主要看同步的时间间隔)。但是为了提高资源的使用效率,所以有人就提出了,可不可以让冷备也被利用起来,替主节点分担部分压力,所以就提出了读写分离的方案。

读写分离

这里写图片描述 
读写分离提高了资源的利用效率的同时也引出了一个问题,就是由于延时(网络传输,操作)而引起的数据库主从不一致的问题,对于这个问题,给一下集中解决方案。


1-半同步复制

主从不一致的原因是延时引起的,所以要消除这个延时的影响,可以从主库进行CUD操作时进行规避,办法就是等主从同步完成之后,主库上的写请求再返回,就是大家常说的“半同步复制”semi-sync。

请求请求主库主库从库从库CUD操作开始同步同步完成CUD操作完成
  • 方案优点:利用数据库原生功能,比较简单
  • 方案缺点:主库的写请求时延会增长,吞吐量会降低

2-数据库中间件

CUD操作

请求请求中间件中间件主库主库从库从库CUD操作路由同步

R操作

请求请求中间件中间件主库主库从库从库R操作同步未完成同步完成
  • 方案优点:能保证绝对一致
  • 方案缺点:数据库中间件的成本比较高

3-缓存记录写key法

CUD操作

(1)将某个库上的某个key要发生写操作,记录在cache里,并设置“经验主从同步时间”的cache超时时间,例如500ms 
(2)修改数据库

R操作

(1)先到cache里查看,对应库的对应key有没有相关数据 
(2)如果cache hit,有相关数据,说明这个key上刚发生过写操作,此时需要将请求路由到主库读最新的数据 
(3)如果cache miss,说明这个key上近期没有发生过写操作,此时将请求路由到从库,继续读写分离

    • 方案优点:相对数据库中间件,成本较低
    • 方案缺点:方案缺点:为了保证“一致性”,引入了一个cache组件,并且读写数据库时都多了一步cache操作
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 立邦工程漆价格 立邦腻子粉质量怎么样 立邦腻子粉价格 立邦涂料价格表 立邦家具漆价格表 立邦外墙腻子粉价格 立邦乳胶漆代理 立邦木器漆1687价格 立邦2合1乳胶漆怎么样 立邦刷新电话 立邦净味120二合一怎么样 立邦屋得保外墙漆价格 立邦装修公司 立邦氟碳漆价格 立邦竹炭净味五合一价格 立邦内墙涂料价格表 上海立邦涂料有限公司 立邦5合1多少钱一桶 立邦防锈漆价格 立邦净味全效价格 立邦腻子粉怎么样 立邦净味五合一价格表 立邦亮家超白价格 立邦内墙漆价格表 立方漆 大师漆价格 多乐士油漆价格表 ppg大师漆价格表 乳胶漆价格表 多乐士乳胶漆价格表 嘉宝莉漆价格表 立帮漆 多乐士漆价格表 华润漆价格 华润漆价格表 多乐士家丽安净味价格 立隋 立隋txt下载 立隋 为的是 立面图 建筑立面图