数据异构方案

article/2025/11/11 13:01:52

1、定义

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

2、常见应用场景

        分库分表中有一个最为常见的场景,为了提升数据库的查询能力,我们都会对数据库做分库分表操作。比如订单库,开始的时候我们是按照订单ID维度去分库分表,那么后来的业务需求想按照商家维度去查询,比如我想查询某一个商家下的所有订单,就非常麻烦。这个时候通过数据异构就能很好的解决此问题,比如下图

异构维度.png

异构维度


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

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

3、数据异构方向

异构的几种方向.png

异构的几种方向

        在日常业务开发中大致可以分为以上几种数据去向,DB-DB这种方式,一般常见于分库分表后,聚合查询的时候,比如我们按照订单ID去分库分表,那么这个时候我们要按照用户ID去查询,查询这个用户下面的订单就非常不方便了,当然可以使用统一加到内存中去,但这样不太好。所以我们就可以用数据库异构的方式,重新按照用户ID的维度来分一个表,像在上面常见应用场景中介绍的那样。把数据异构到redis、elasticserach、slor中去要解决的问题跟按照多维度来查询的需求差不多。这些存储天生都有聚合的功能。当然同时也可以提高查询性能,应对大访问量,比如redis这种抗量银弹。

4、数据异构的常用方法

4.1、完整克隆

        这个很简单就是将数据库A,全部拷贝一份到数据库B,这样的使用场景是离线统计跑任务脚本的时候可以。缺点也很突出,不适用于持续增长的数据。

4.2、标记同步

        这个是业务场景比较简单的时候,理想情况下数据不会发生改变,比如日志数据,这个时候可以去标记,比如时间戳,这样当发生故障的时候还可以回溯到上一次同步点,开始重新同步数据。

4.3、BINLOG方式

        通过实时的订阅mysql的binlog日志,消费到这些日志后,重新构建数据结构插入一个新的数据库或者是其他存储比如es、slor等等。订阅binlog日志可以比较好的能保证数据的一致性。

4.4、MQ方式

        业务数据写入DB的同时,也发送MQ一份,也就是业务里面实现双写。这种方式比较简单,但也很难保证数据一致性,对简单的业务场景可以采用这种方式。

5、binlog和mq方式重点介绍

5.1、binlog

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

canal异构方式.png

canal异构方式

5.1.2、使用说明

        binglog是数据的日志记录方式,每次对数据的操作都会有binlog日志。现在开源的订阅binlog日志的组件,比如使用比较广泛的canal,它是阿里开源的基于mysql数据库binlog的增量订阅和消费组件。由于cannal服务器目前读取的binlog事件只保存在内存中,并且只有一个canal客户端可以进行消费。所以如果需要多个消费客户端,可以引入activemq或者kafka。如上图绿色虚线框部分。我们还需要确保全量对比来保证数据的一致性(canal+mq的重试机制基本可以保证写入异构库之后的数据一致性),这个时候可以有一个全量同步WORKER程序来保证,如上图深绿色部分。

5.1.3、canal的工作原理:

        先来看下mysql主备(主从)复制原理如下图,在此原理基础之上我们再来理解canal的实现原理就一眼能明白了。

mysql主备复制实现原理.jpg

mysql主备复制实现原理


mysql主备(主从)复制原理,从上层来看,复制分成三步:

  1. master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
  2. slave将master的binary log events拷贝到它的中继日志(relay log);
  3. slave重做中继日志中的事件,将改变反映它自己的数据。
    再来看下canal的原理,如下图:

    canal工作原理.jpg

    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 server的时候要部署多台,来保证高可用。但是canal的原理,是只有一台服务器在跑处理,其它的服务器作为热备。canal server的高可用是通过zookeeper来维护的。
    有关canal更具体的使用和详细原理请参照:https://github.com/alibaba/canal

5.1.4、注意点

  • 1、确认MySQL开启binlog,使用show variables like 'log_bin'; 查看ON为已开启
  • 2、确认目标库可以产生binlog,show master status 注意Binlog_Do_DB,Binlog_Ignore_DB参数
  • 3、确认binlog格式为ROW,使用show variables like 'binlog_format'; 非ROW模式登录MySQL执行 set global binlog_format=ROW; flush logs; 或者通过更改MySQL配置文件并重启MySQL生效。
  • 4、为保证binlake服务可以获取Binlog,需添加授权,执行 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON . TO 'admin'@'%' identified by 'admin'; FLUSH PRIVILEGES;

5.2、mq方式

MQ异构方式.png

MQ异构方式

        mq的方式,就相对简单,实际上是在业务逻辑中写DB的同时去写一次MQ,但是这种方式不能够保证数据一致性,就是不能保证跨资源的事务。注:调用第三方远程RPC的操作一定不要放到事务中。

6、总结

        本文主要叙述了数据异构的使用场景,方法。这里面涉及到的activemq以及canal并没有深入分析,关于这块的内容可以直接参考相关具体文档,文中已给了链接地址。根据数据异构的定义,将数据异地构建存储,我们可以应用的地方就非常多,文中说的分库分表之后按照其它维度来查询的时候,我们想脱离DB直接用缓存比如redis来抗量的时候。数据异构这种方式都能够很好的帮助我们来解决诸如此类的问题。


http://chatgpt.dhexx.cn/article/sEbYF7hH.shtml

相关文章

数据异构的武器-BINLOG+MQ

2019独角兽企业重金招聘Python工程师标准>>> 1、定义 何谓数据异构,上周交易部门商品的同事过来做分享,又看到这个词,他的PPT里面是 数据库异构。其实我们以前做的事情,也是可以成为数据异构。比如我们将DB里面的数据持…

LVDS差分信号深度详解

博主福利:100G电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__bizMzU3OTczMzk5Mg&hid7&snad5d5d0f15df84f4a92ebf72f88d4ee8&scene18#wechat_redirect -------------------------------------------------------------------…

lvds接口_LVDS,接口,时序讲解,非常好的文章

欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 1.1.1 LVDS接口分类 1.1.1.1 单路6bit LVDS 这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit…

YL芯片LVDS屏幕时序和接口介绍

接口说明 YL芯片使用LVDS接口对外输出图像,芯片支持单8和双8和2路单8同时输出的方式输出图像。 芯片支持VESA (Video Electronics Standards Association) standard and JEIDA (Japanese Electronic Industry Development Association) standard两种输出标准。 LV…

ftp软件是什么如何使用,ftp软件是什么如何使用

ftp软件是什么,ftp软件是一种文件传输下载方式,它是TCP/IP协议栈的一部分;其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可以使用服…

ftp,windows ftp工具哪个好用

说起windows ftp工具,不知道你们有什么推荐。不过小编有很熟悉的windows ftp工具,多多少少也有那么几个觉得特别好用的。不过需要注意的是有很多的ftp工具只能在windows系统上面操作,也有只能在liunx系统上面操作的。在下载的时候一定要看清楚…

ftp软件,国内好用的ftp软件

对于ftp软件,你了解多少?其实一般人也接触不到这种软件ftp软件主要是针对从事网站管理的工作人员比较有利的一款工具。可以帮助他们快速的解决工作中的问题。方便、简单、快捷又明了的解决问题,小编整理了三款国内好用的ftp软件。 第一款&am…

好用的ftp工具,细数四款好用的ftp工具

ftp工具是一种文件传输下载方式,它是TCP/IP协议栈的一部分;其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可以使用服务器管理工具来作为FTP的客…

ftp下载,盘点四款值得推荐的ftp下载软件

ftp下载软件俗称来讲就是ftp软件,是我们常用的一个服务。ftp下载软件主要是网络上用来传送文件的软件。但有些ftp软件传输文件不是特别稳定。今天就来为大家盘点四款值得推荐的ftp下载软件。 第一款:IIS7服务器管理工具 这款软件的Ftp客户端做的是非常…

ftp上传软件,推荐5款好用的ftp上传软件

ftp上传软件现在有很多种,而且各有各的特点,至于ftp上传软件哪个好用呢?不得不说,ftp的存在让很多人能够更方便地实现分享及获取资源,一个好的资源共享环境应该由大家来维护。一款好用的ftp上传软件让我们能够更好地上…

ftp下载工具,ftp上传下载工具使用指南,几款好用的ftp客户端软件推荐

第一款:iis7服务器管理软件 它是一款免费而且专业的ftp多站点管理软件,而且可以实现ftp定时备份的功能。除此之外,它还是一款强大的服务器集成管理器,可以批量管理windows及linux服务器及vps。 下载地址:iis7服务器批量管理 效…

ftp客户端软件,3款值得推荐的ftp客户端软件

对于ftp客户端软件,你了解多少?其实一般人也接触不到这种软件。ftp客户端软件主要是针对从事网站管理的工作人员比较有利的一款工具。可以帮助他们快速的解决工作中的问题。方便、简单、快捷又明了的解决问题,下面有三款ftp客户端软件的介绍。…

免费ftp服务器,盘点三款好用的免费ftp服务器

免费ftp服务器主要是网络上用来传送文件的工具。但有些免费ftp服务器传输文件不是特别稳定。今天就来为大家盘点三款好用的免费ftp服务器。 第一款:IIS7服务器管理工具 这款软件的Ftp客户端做的是非常棒的,不仅具有批量操作功能,还具有定时…

ftp客户端软件有哪些,有哪些ftp客户端软件值得推荐?

不知道大家对于ftp客户端软件的要求普遍是什么,但是我的要求是很简单的,主要就是好用,方便容易上手,使用起来很容易,不要太复杂的。其实我对于ftp软件的要求应该是大部分网站工作者的基本要求吧。下面是我使用过的比较…

ftp服务器软件,推荐几款免费的ftp服务器软件,ftp客户端下载

推荐五款免费的ftp客户端 1、iis7服务器管理软件 它是一款免费而且专业的ftp多站点管理软件,而且可以实现ftp定时备份的功能。除此之外,它还是一款强大的服务器集成管理器,可以批量管理windows及linux服务器及vps。 下载地址:iis7服务器批…

服务器ftp软件,盘点五款容易上手的服务器ftp软件

ftp软件是一种文件传输下载方式,它是TCP/IP协议栈的一部分;其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可以使用服务器管理工具来作为FTP的客…

ftp服务器软件 性能对比,常用ftp服务器软件介绍

导读:对于服务器远程文件的管理,最常见的就是使用ftp服务器软件进行管理,上传下载文件等操作,可以轻松实现本地上传文件到服务器,以及从服务器下载文件到本地,快捷方便简单,接下来我们重点介绍几…

FTP工具,3款FTP工具推荐

什么是FTP工具?FTP工具用来上传建站程序到网站空间的工具。FTP工具是每位站长必不可少的软件,无论做网站还是一般的FTP服务器,一个稳定功能强大的FTP工具都能帮助你节省很多时间和精力。接下来我为大家推荐几款个人经常使用的FTP工具。 1.IIS…

推荐7款超级好用的终端工具 —— SSH+FTP

1、Cmder 下载地址:https://cmder.net/ Cmder是一个代替cmd的终端工具。只能操作Windows。 它的好处是: 支持大部分Linux命令,比如ls鼠标选中默认复制,鼠标右击粘贴美观的界面,可以自定义背景 解压,双…

ftp客户端软件,8款最受欢迎的ftp客户端软件

对于ftp客户端软件,你了解多少?其实一般人也接触不到这种软件。ftp客户端软件主要是针对从事网站管理的工作人员比较有利的一款工具。可以帮助他们快速的解决工作中的问题。方便、简单、快捷又明了的解决问题,下面有六款ftp客户端软件的介绍。 第一款:IIS7服务器管理工具 …