大数据之路——数据同步

article/2025/9/11 23:14:12

三、数据技术篇—— 数据同步

    • 3.1 数据同步基础 @
      • 3.1.1 直连同步
      • 3.1.2 数据文件同步
      • 3.1.3 数据库日志解析同步
    • 3.2 数据仓库同步方式
      • 3.2.1 批量数据同步
      • 3.2.2 实时数据同步
    • 3.3 同步遇到的问题
      • 3.3.1 分库分表
      • 3.3.2 增量全量同步的合并@
      • 3.3.3 数据漂移的处理 @

有多种不同应用场景:主数据库和备份数据库之间的数据备份,主系统和子系统的数据更新,不用地域、数据库类型的数据传输交换

3.1 数据同步基础 @

关系型数据库,结构化数据:MySQL、Oracle、DB2

非关系型数据库,非结构化:OceanBase、HBase、MongoDB

对象存储:OSS

文件存储:NAS

名称实现方式
直连同步- 通过定义好的规范接口API基于动态链接库的方式直接连接业务库。
- 配置简单,容易实现,但是对性能影响较大,不太适合。
数据文件同步- 通过约定好的文件编码等,直接从源系统(包含多个异构的数据库系统)生成数据的文本文件,由专门的文件服务器传输到目标系统。
- 由于通过文件上传、下载会造成丢包,且需要上传校验文件(数据量及文件大小)
- 可以增加压缩和加密功能
数据库日志解析同步- 日志文件信息丰富,数据格式稳定,通过解析日志文件获取变化的数据,满足增量数据同步需求
- 通过源系统的进程(操作系统层面,不过数据库),读取日志文档中变化并解析道目标数据文件中。
- 网络协议,保障数据文件正确接收、正确数据、网络传输冗余、文件完整性
- 实时和准实时的能力,毫秒级别延迟
- 缺点:数据延迟(补录数据超出峰值)、投入大、数据漂移

3.1.1 直连同步

请添加图片描述

  1. 通过定义好的规范接口API基于动态链接库的方式直接连接业务库。
  2. 配置简单,容易实现,但是对性能影响较大,不太适合。

3.1.2 数据文件同步

请添加图片描述

  1. 通过约定好的文件编码等,直接从源系统(包含多个异构的数据库系统)生成数据的文本文件,由专门的文件服务器传输到目标系统。
  2. 由于通过文件上传、下载会造成丢包,且需要上传校验文件(数据量及文件大小)
  3. 可以增加压缩和加密功能

3.1.3 数据库日志解析同步

请添加图片描述

  1. 日志文件信息丰富,数据格式稳定,通过解析日志文件获取变化的数据,满足增量数据同步需求
  2. 通过源系统的进程(操作系统层面,不过数据库),读取日志文档中变化并解析道目标数据文件中。
  3. 网络协议,保障数据文件正确接收、正确数据、网络传输冗余、文件完整性
  4. 实时和准实时的能力,毫秒级别延迟
  5. 缺点:数据延迟(补录数据超出峰值)、投入大、数据漂移

3.2 数据仓库同步方式

数据来源的多样性、数据量大

3.2.1 批量数据同步

请添加图片描述

主要针对于离线类型的数据仓库,定期批量同步。数据仓库系统是集成各类数据源的地方,数据类型是统一的。需要将数据转换为中间状态,统一数据格式,由于是结构化的,支持标准的SQL查询,所以所有的数据类型都可以转换成字符串类型。数据传输全内存操作,不读写磁盘。

3.2.2 实时数据同步

请添加图片描述
所产生的日志尽快以数据流的方式不断同步到数据仓库,实现秒级别的刷新。(可以通过解析Mysql的binlog日志来实时获取增量的数据更新,通过消息订阅模式来实现数据的实时同步)

3.3 同步遇到的问题

3.3.1 分库分表

为了使系统有灵活的扩展能力高并发大数据量的处理能力,数据库系统提供分库分表方案。

我们需要一个分布式数据库的访问引擎,通过建立中间状态的逻辑表来整合统一的分库分表的访问

  • 在持久层框架之下,JDBC驱动之上的中间件
  • 与JDBC规范保持一致,解决规则引擎问题
  • 实现了SQL解析、规则计算、表名替换、选择执行单元并合并结果集的功能
  • 解决读写分离和高性能主备切换的问题

3.3.2 增量全量同步的合并@

数据量比较大时,按周期全量同步的方式会影响处理效率。可以每次只同步新变更的增量数据,然后与上一个同步周期获得的全量数据合并,从而获得最新版本的全量数据。

传统的数据整合方案,合并技术以merge方法为主(update+insert),现在大数据平台基本不支持update,比较推荐全外连接(full outer join)+ 数据全量覆盖重新加载(insert overwrite),如日调度。当天的增量数据和前一天的全量数据做全外连接,重新加载最新全量数据。可以采用分区方式,每天保存一个最新的全量版本。

提出了基于负载均衡思想的数据同步方案:

  • 通过目标数据库的元数据 估算 同步任务的总线程数
  • 系统预先定义的期望同步速度 估算 首轮同步的线程数
  • 业务优先级决定同步线程的优先级。

3.3.3 数据漂移的处理 @

数据漂移时ODS数据的一个顽疾,指ODS表中的同一个业务日期数据中包含前一天或者后一天凌晨附近的数据或者丢失当天的变更数据。

为什么会出现呢?ODS需要承接面向历史细节数据查询需求,需要物理落地到数据仓库的表按时间段来切分进行分区存储,通常按照某些时间戳字段来切分,实际上由于时间戳字段的准确性问题导致数据漂移

时间戳字段分为四类:

  1. 数据库中用来标识数据记录更新时间的时间戳字段 ,modified_time
  2. 数据库日志中用来标识数据记录更新时间的时间戳字段 ,log_time
  3. 数据库表中用来记录具体业务过程发生时间的时间戳字段 ,proc_time
  4. 标识数据记录被抽取到的时间戳字段 ,extract_time

理论上这几个时间应该一致,但是实际上会有差异

  • 数据抽取需要时间,extract_time晚于前三个
  • 前台业务系统手工修正数据时未更新 modified_time
  • 网络、系统压力等问题,log_time或modified_time晚于proc_time

根据一个字段来切分的问题

  • extract_time限制,来获取数据,漂移的问题最明显
  • modified_time限制,会出现不更新时间而导致的数据遗漏,数据记录漂移到后一天
  • log_time限制,网络、系统压力等问题,晚于proc_time,数据记录漂移到后一天
  • proc_time限制,获取到包含一个业务过程所产生的记录,遗漏很多过程变化记录,违背ODS和业务系统保持一致的设计原则

处理方法

  1. 多获取后一天的数据,向后多冗余一些数据,具体时间按照不同业务场景用业务时间proc_time来限制。但是如果在第二天凌晨修改,这条订单的状态就会更新(可能多次更新),变得不准。
  2. 多个时间戳字段来限制时间获取相对准确。

举例

双11时,交易订单漂移到12日。因为下单付钱的时候用支付宝的接口有延迟,导致订单最终生产时间跨天了。log_time和modified_time晚于proc_time。

难点:如果订单只有一个支付业务过程,可以用支付时间来限制就能获取正确数据,但是订单有多个业务过程“下单、支付、成功。每个过程都有相应的时间戳字段,并不只有支付才会漂移

解决方案

  1. 根据实际情况获取后一天15分钟的数据,限制多个业务过程的时间戳字段都是双11当天的,按照主键根据log_time做升序排列去重,获取每个订单首次数据变更的那条记录。
  2. 根据log_time冗余前一天最后15分钟和后一天凌晨15分钟的数据,用modified_time过滤非当天的数据,每个订单按照log_time做降序排列,获取每个订单当天最后一次数据变更的那条记录。
  3. 两份数据按照订单做全连接,把漂移数据补回当天数据中

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

相关文章

关于数据同步的几种实现

关于数据同步的几种实现 概述 关于数据同步主要有两个层面的同步,一是通过后台程序编码实现数据同步,二是直接作用于数据库,在数据库层面实现数据的同步。通过程序编码实现数据同步,其主要的实现思路很容易理解,即有…

数据同步技术

本次旨在分享数据同步技术的相关知识点,包括数据同步概述、数据同步工具、数据库、数据同步到大数据平台。 首先来介绍一下数据同步的概念: 数据同步是为保持数据源与目的地数据一致性而进行的数据传输、处理的过程。 数据同步的场景: 1、主…

几种常见的数据同步方式

数据仓库的特性之一是集成,即首先把未经过加工处理的、不同来源的、不同形式的数据同步到ODS层,一般情况下,这些ODS层数据包括日志数据和业务DB数据。对于业务DB数据而言(比如存储在MySQL中),将数据采集并导入到数仓中(通常是Hive…

内网穿透frpc ,frps的使用

情况是这样的,公司内网中一个设备接了路由器下发的地址,内网地址是192.168.1.100,可以访问我的台式机,但我的台式机访问192.168.1.100是无法连通的 这种情况下,在我机器上运行frps.exe,frps.ini如下 [com…

Frp内网穿透——frps服务端部署

由于现在IPv4地址的短缺,在国内不可能每个设备都会分配到一个公网IP,因此从公网中访问自己的私有设备向来是一件难事儿。本次带大家了解一下frp内网穿透的服务端教学,让你也能够部署一个内网穿透服务。 frp简介 通俗的说,frp是一…

记一次使用frpc/frps进行内网穿透

1. 前提条件: 有一个公网ip,这里用x.x.x.x代替 2. 配置 【服务器端】 S_NUMBER是一个端口号 #服务端口 bind_port S_NUMBER #监听地址 bind_addr 0.0.0.0 #认证token token xxxx【客户端】(也就是需要被内网穿透的服务器) C_NUMBER是一个端口号 …

内网穿透神器Frps一键安装脚本及设置教程

frps 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。 *因为frps是go语言写的,所以在路由器上使用的时候&#…

frpc和frps 内网穿透越狱插件

内网穿透、frp、frpc、frps https://zhaoboy9692.github.io/repo 越狱源 https://zhaoboy9692.github.io/repo 苦于在ios越狱下没有frp穿透使用 特地开发了的越狱插件 基于最新frp0.48编译 ios14.6测试没问题 有问题及时反馈

使用frps和frpc实现内网穿透

内网穿透的作用包括跨网段访问一个局域网中的一台主机。 如上图,假设我们想要通过主机A访问主机C,但是主机A和主机C绑定的都是私有ip地址,所以它们之间是无法直接进行通信的。要想使得A和C能够进行通信,就需要用到内网穿透的技术。…

frp服务端(frps) 安装及使用

FRP官方文档 https://gofrp.org/docs/ 服务端安装 环境 ubuntu 22.04 下载 Github 的 Release 中下载到最新版本的客户端和服务端二进制文件 可以指定你的目录,这里用 /usr/local/frp cd /usr/local/frp wget https://github.com/fatedier/frp/releases/dow…

CentOS Frp内网穿透:Frps+Nginx反向代理

目录 服务器使用配置 一、Nginx安装 二、Frps安装 三、frpc安装 服务器使用配置 CentOS 7.6 CPU: 2核 内存: 4GB 一、Nginx安装 参考《Centos配置Nginxtomcat》,这里就不做过多阐述 二、Frps安装 这里使用的是阿里源 #下载脚本 wget https://code.aliyun.com…

nginx反向代理frps frpc穿透

frps 和 nginx 在同一台机器,假设ip192.168.166.17 1. frps服务器端配置 测试时,frps服务器跟nginx在同一台机器(192.168.166.17),理论上可以不在同一台机器,nginx可以代理http请求,发给frps服务端。 frps.ini # fr…

利用空闲服务器搭建frps服务端-实现穿透代理

利用frps代理Tcp或者udp或其它类型的连接 1、什么是frps/frpc frps是代理的服务端、frpc是代理的客户端,使用方数据传输到服务端,服务端再将数据传输到提供方,从而达到相互访问的目的。 2、什么是穿透 穿透就是客户端A和客户端B都没有公网…

利用frps进行内网穿透

这里使用的是传统穿透方法,需要一个有公网ip的中转节点去告知 看最下面,用最新版的frps 1、注意 服务器和客户机之间的数据传输全部经过中转服务器,传输速度将受制于中转服务器的上下行带宽。 2、穿透原理 其实就是客户端A绑定端口发送数…

使用frps建立内网穿透从而实现外界连接内网电脑的全教程

1. 说明 我有台服务器,但它在内网里,我需要通过ssh方式访问它,目前可以采用:向日葵等商业软件,RustDesk等开源软件。或者,《自建内网穿透服务器》。 本教程把实现上述功能的所有步骤罗列出来,以…

frp 内网穿透服务器搭建frps服务端和frpc客户端

1 工具 一台具有公网ip的服务器 2 下载frp frp下载地址 打开上面的frp下载地址 公网服务器上 打开下载文件 frps是服务端,在公网服务器上部署 frpc是客户端,在需要内网穿透的电脑上部署 1. frps配置 首先我这用的是win公网服务器 (linux…

内网穿透配置(FRP)

目录 0、内网穿透的一般场景 1、内网穿透配置 a、frp软件下载 b、frp 的配置 3、通过 frp 实现远程连接 4、设置 frpc / frps 开机启动的方法 5、设置frp安全连接的方法 0、内网穿透的一般场景 放假回家怎么远程连接学校实验室的服务器? 先分析一波&#x…

FRP入门篇

目录 一、前言 1、概述 2、原理 3、支持功能 4、适用场景 二、环境准备 三、使用 1、安装包下载 2、服务端部署 2.1、上传安装包 2.3、启动服务端 3、客户端部署 3.1、代理服务准备 3.2、上传安装包 3.3、客户端配置 3.4、启动客户端 4、功能验证 一、前言 1、…

frps内网穿透

1 原理讲解 frp工作原理 服务端运行,监听一个主端口,等待客户端的连接; 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型;服务端fork新的进程监听客户端指定的端口; 外网用户连接到客户…

2021大数据架构、高性能、数据治理面试题

2021大数据架构、高性能、数据治理面试题 需要自取:https://url80.ctfile.com/f/32319880-516640957-aba608 (访问密码:1000)