作家
登录

数据异构的武器 - BINLOG+MQ

作者: 来源: 2017-09-14 10:06:11 阅读 我要评论

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!


1、定义

3.4、MQ方法

何谓数据异构,上周交易部分商品的同事过来做分享,又看到这个词,他的PPT琅绫擎是 数据库异构。其实我们以前做的工作,也是可以成为数据异构。比如我们将DB琅绫擎的数据持久化到REDIS琅绫擎去,就是一种数据异构的方法。如不雅要下个定义的话:把数据按需(数据构造、存取方法、存取情势)异地构建存储。

mysql主备复制实现道理

2、常见应用处景

分库分表中有一个最为常见的场景,为了晋升数据库的萌芽才能,我们都邑对数据库做分库分表操作。比如订单库,开端的时刻我们是按照订单ID维度去分库分表,那么后来的营业需求想按照商家维度去萌芽,比如我想萌芽某一个商家下的所有订单,就异常麻烦。这个时刻经由过程数据异构就能很好的解决此问题,比如下图

异构维度

总结起来大年夜概有以下几种场景

  1. 数据库镜像
  2. 数据库及时备份
  3. 多级索引
  4. search build(比如分库分表后的多维度数据萌芽)
  5. 营业cache刷新
  6. 价格、库存变更等重要营业消息

3、数据异构偏向

几种异构方法

在日常营业开辟中大年夜致可以分为以上几种数据去向,DB-DB这种方法,一般常见于分库分表后,聚号绫侨芽的时刻,比如我们按照订单ID去分库分表,那么这个时刻我们要按照用户ID去萌芽,萌芽这个用户下面的订单就异常不便利了,当然可以应用同一加到内存中去,但如许不太好。所以我们就可以用数据库异构的方法,从新按照用户ID的维度来分一个表,像在膳绫擎常见应用处景中介绍的那样。把数据异构到redis、elasticserach、slor中去要解决的问题跟按照多维度来萌芽的需求差不多。这些存储生成都有聚合的功能。当然同时也可以进步萌芽机能,应对大年夜拜访量,比如redis这种抗量银弹。

4、数据异构的常用办法

3.1、完全克隆

这个很简单就是将数据库A,全部拷贝一份到数据库B,如许的应用处景是离线统计跑义务脚本的时刻可以。缺点也很凸起,不实用于持续增长的数据。

3.2、标记同步

这个是营业场景比较简单的时刻,幻想情况下数据不会产生改变,比如日记数据,这个时刻可以去标记,比如时光戳,如许当产生故障的时刻还可以回溯到上一次同步点,开端从新同步数据。

3.3、BINLOG方法

经由过程及时的订阅mysql的binlog日记,花费到这些日记后,从新构建数据构造插入一个新的数据库或者是其他存储比如es、slor等等。订阅binlog日记可以比较好的能包管数据的一致性。

mysql主备(主大年夜)复制道理,大年夜上层来看,复制分成三步:

  1. master将改变记录到二进制日记(binary log)中(这些记录叫做二进制日记事宜,binary log events,可以经由过程show binlog events进行查看);
  2. slave将master的binary log events拷贝到它的中继日记(relay log);
  3. slave重做中继日记中的事宜,将改变反竽暌钩它本身的数据。

营业数据写入DB的同时,也发送MQ一份,也就是营业琅绫擎实现双写。这种方法比较简单,但也很难包管数据一致性,对简单的营业场景可以采取这种方法。

5、binlog和mq方法重点介绍

5.1、binlog

5.1.1、订阅binglog日记异构流程图

5.1.2、应用解释

binglog是数据的日记记录方法,每次对数据的操作都邑有binlog日记。如今开源的订阅binlog日记的组件,比如应用比较广泛的canal,它是阿里开源的基于mysql数据库binlog的增量订阅和花费组件。因为cannal办事器今朝攫取的binlog事宜只保存在内存中,并且只有一个canal客户端可以进行花费。所以如不雅须要多个花费客户端,可以惹人activemq或者kafka。如上图绿色虚线框部分。我们还须要确保全量比较来包管数据的一致性(canal+mq的重试机制根本可以包管写入异构库之后的数据一致性),这个时刻可以有一个全量同步WORKER法度榜样来包管,如上图深绿色部分。

5.1.3、canal的工作道理

再来看下canal的道理,如下图:

cannal实现道理比拟较较简单(参照膳绫擎的mysql主备复制实现道理):

   4.  canal模仿mysql slave的交互协定,假装本身为mysql slave,向mysql master发送dump协定

   5.  mysql master收到dump请求,开端推送binary log给slave(也就是canal)

   6.  canal解析binary log对象(原始为byte流)

canal异构方法


  推荐阅读

  天堑变通途 看华为边缘计算如何CROSS物理与虚拟世界

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 【51CTO.com原创稿件】如不>>>详细阅读


本文标题:数据异构的武器 - BINLOG+MQ

地址:http://www.17bianji.com/lsqh/37404.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)