2019独角兽企业重金招聘Python工程师标准>>>

概述

当单个数据库数据量达到一定程度后,我们可以采用多个从库解决读请求的系统瓶颈。 而写请求的系统瓶颈往往需要通过分库解决。

问题

以用户订单场景为例,用户会有查询订单需求,所以订单的分库需要基于userID做切分。

商家对订单统计纬度也同样有需求,所以单一的基于userID做切分的场景不满足这个场景了。

于是我们需要采用反范式设计来满足两种场景的需求。 采用两份数据冗余,即一份数据基于UserId,一份数据基于PoiId。

数据冗余实现

既然我们有了方案,需求指定具体的技术方案了。

做数据冗余常见有三种方案:

  • 应用层同步双写。
  • 应用层异步双写。
  • 基于底层中间件数据同步。

应用层异步双写

这是最简单的实现方式,在用户下单后,基于分库规则一份请求按userId划分入库,一份请求按poiId划分入库,数据落库才进行下一步请求,数据一致性强。

但是整个请求耗时的时间是两个入库时间的总和,如果在业务高峰期,往往造成时延升高问题,不适用于对时延敏感的系统。

应用层异步双写

将两个同步入库修改为异步入库,采用MQ异步消息投递方式实现,这样可以解决两次写入库带来的时间损耗,但是会引入MQ中间件,系统复杂度有一定的提升。

既然存在了异步队列,两个库之间存在数据不一致时间窗口,不适用于对数据一致性敏感对系统。

基于底层中间件数据同步

引入数据同步中间件,屏蔽了业务层实现数据同步,数据冗余的细节,而是交由底层同步中间件实现,使得开发人员专注于业务开发。

与第二种方案相比,中间件方式基于mysql的binlog实现,所以数据一致窗口更短,可靠性更高。

数据一致性

当然以上三种方式的后两种方式都是异步方式,在分布式场景下都会存在数据一致性问题,强一致性很难,一般业务系统都采用最终一致性。

为保证数据一致性可以采用:异步检测,异步修复。

异步检测

采用离线工具,或定时任务,定时对离线数据源进行扫描,如发现数据不一致进行补偿修复。

数据源扫描粒度视对一致性要求的强度而定。但是大量的数据扫描,耗时较长,效率较低。

为降低全量数据扫描的效率问题,可以设计增量数据扫描方式,设置更适合系统负载的扫描时间窗口,提高扫描检测效率。

如果想更实时扫描,可引入同步扫描方式,引入MQ推送消息,在订阅者接收到消息时,触发数据扫描,扫描时间窗口期内数据,同时进行修正。

转载于:https://my.oschina.net/u/1000241/blog/2051738

如何搞定分库后数据冗余相关推荐

  1. SpringBoot + Sharding JDBC,一文搞定分库分表、读写分离

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 30 分钟. 来自:blog.csdn.net/qq_40378034/article/details/115264837 S ...

  2. acs流程图_两张流程图,搞定ACS后血脂管理

    医脉通导读2016年11月,由法国专家制定的<急性冠脉综合征后血脂管理的共识声明>发表于Eur Heart J Acute Cardiovasc Care.该共识声明改进了急性冠脉综合征( ...

  3. endnote转化成纯文本后_如何用Endnote分分钟搞定参考文献

    原标题:如何用Endnote分分钟搞定参考文献 解螺旋公众号·陪伴你科研的第1924天 Endnote教程第二弹来啦! 写论文离不了对参考文献的引用,Endnote在文献撰写中发挥着重要作用.下面我们 ...

  4. labview 重新启动后上次_还在为labview保存参数而苦恼吗?看看一个vi搞定全部

    2020labview懒人参数存取-升级版 问题:项目编程过程中,参数存取是无论如何也没法避免的一个环节,因为程序设置完成后,下次再打开时如果要执行上次设置的参数,就需要加载上次保存的参数文件.那么以 ...

  5. jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用...

    jmeter上传文件搞了一天,才搞定,没高人帮忙效率就是低,赶紧记下来,以备后用 先用谷歌浏览器抓包,抓到的包类似这样: 在jmeter里添加一个http请求,配置好参数,方法,端口,路径等, 勾选 ...

  6. 网线重新插拔后恢复正常_生活小窍门之网线不够长怎么办,毕亚兹网线连接器轻松搞定...

    很多朋友在家中装修完时候,为了整齐和方便收纳都会把每个屋中的网口和光纤输出口集中到一起,放置到网络箱中,看起来更加整齐划一,但是装修时都不会考虑到网线要预留很长,很多时候都只留了很短的一节网线,还有的 ...

  7. 安装deepin后会删除win10吗_不管是先装Win10还是先装Deepin,启动问题轻松搞定

    本帖最后由 yjgsz 于 2018-10-20 11:01 编辑 一直有人发贴,问关于Win和Deepin双系统启动的问题,电脑硬件和配置复杂多样,深度官方安装程序不能解决所有问题,有人安装deep ...

  8. 筛选后系列填充_Excel2013里筛选后复制粘贴制作成绩表方法大剖析,3分钟搞定...

    在Excel中对某区域数据进行筛选后,有时需要将筛选区域中的一列数据用另一列进行替换.Excel,筛选以后复制数据,只能粘贴到连续区域.所以,经常被问到这样的问题:如何把筛选出来的数据,复制粘贴其他列 ...

  9. 为什么wps数字前面有撇号_表格中输入18位超长的数值后变样了? 别急! 两招搞定!...

    原标题:表格中输入18位超长的数值后变样了? 别急! 两招搞定! 输入超长的数值,就会显示成奇怪的样子, 好端端的身份证号码全都乱套了,为什么? 怎么办?这就为你解答~ 错误一:输入18位数之后变为含 ...

最新文章

  1. 1秒识别200个假大牌 成本降50%  清华阿里邀全国人才用20张图锻造“打假AI”
  2. spring配置文件最全约束
  3. CheckBoxList控件绑定数据和设置选定项
  4. 测试计划和测试计划模板
  5. 「周末观赛指南」国足生死战 NBA将演“大结局”?
  6. 年仅31岁!90后协和博士、医学考研名师刘不言意外离世
  7. halcon中的分水岭算法讲解以及作用和实例
  8. 2020年遥感类期刊SCI期刊影响因子排名—遥感, 地理, 水文类
  9. 表达式的LenB(123程序设计ABC)的值是20吗
  10. 歌曲:后来的我们 歌手:品冠
  11. MySQL在RR级别下到底有没有修复幻读
  12. 初链:高性能去中心化公开账本
  13. CSS3基础入门03
  14. 如何打造高效的团队(五)- 文化
  15. 美团前端必会面试题(附答案)
  16. 达摩院细粒度分类SoftTriple Loss ICCV高引论文深入解读
  17. 抓准痛点就能撬动市场!读屏时代的黑科技非它莫属了
  18. Rasa对话机器人之HelpDesk (一)
  19. 10-206 在员工表中查询1990年以后出生的职工的全部信息
  20. 28个墨迹photoshop笔刷

热门文章

  1. git-svn:通过git来管理svn代码
  2. Android第三十八期 - 评价标签FlowLayout
  3. ORACLE Recyclebin管理及flashback recyclebin中的对象
  4. U盘也玩NTFS权限。
  5. 视频聊天创企Tribe获300万美元种子轮融资
  6. 在Java中使用xpath对xml解析
  7. java 泛型 窜讲
  8. HashMap内部结构深入剖析
  9. 新的一年你该如何起飞
  10. WPF中RadioButton绑定数据的正确方法