阿里巴巴数据同步
2023-10-05 09:54:04 15 举报
阿里巴巴数据同步
作者其他创作
大纲/内容
源系统
批量数据同步首先实时性不高 有历史数据 直接定义离线数仓 一般历史数据处理的数仓:对各类数据源 存储 管理 分析 将结果数据定时同步到业务系统 但是数据库种类特别多 有列式存储 行存储 还有开源的 非开源的 就好像都是人 但不是一个国家的人 要实现各类数据库系统与数据仓库系统之间的批量双向数据同步,就需要先将数据转换为中间状态,统一数据格式
消费者
数据文件
TaskGroup
统一标准API
数据同步基础数仓的特性之一 集成源业务系统的数据类型多种多样有些存储在数据库表中 阿里云对象存储 OSS文件存储 NAS针对不同的数据类型及业务场景选择不同的同步方式
数据文件同步
job
生产者
TDDI阿里巴巴的TDDl就是这样一个分布式数据库的访问引擎 通过建立中间状态的逻辑表来整合统一分库分表的访问TDDl是在持久层框架之下 JDBC驱动之上的中间件 它与JDBC规范保持一致 有效解决了分库分表的规则引擎问题 实现了数据库配置信息的统一管理
实时数据同步所产生的日志需要尽快以数据流的方式不间断地同步到数据仓库有些应用还需对数据进行实时的处理 汇总 实现秒级刷新 建立一个数据交换中心 通过专门的模块从每台服务器源源不断的读取 Mysql里面的就获取增量的数据以流的形式同步到数据交换中心 通知所有订阅了这些数据的数据仓库系统来获取
同步方式
Reader
阿里数据仓库的同步方式特点一:数据来源的多样性特点二:数据量上
数据漂移处理
writer
Channel
数据加载模块
OneClick真正实现了数据的一键化和批量化同步,一键完成 DDL 和 DML 的生成、数据的冒烟测试以及在生产环境中测试等因 此,阿里巴巴通过极少的人力投入,实现了数据同步的集中化建设和管理:改变了之前各数据开发人员自行同步带来的效率低、重复同步和同步配置质量低下等问题,大大降低了数据同步成本。
split
task
每一个Task 都由 Task Group启动
数据同步任务中 不知道如何设置首轮同步的线程数 导致同步任务因得不到合理的 CPU 资源而影响同步效率 阿里实践出了一套基于负载均衡思想的新型数据同步方案 核心思想就是通过目标数据库的元数据估算同步任务的总线程数 提升优先级
直连同步
缺点数据延迟:业务系统批量写 导致系统一次承受不了投人较大:中间需要部署一个系统实时抽取数据数据漂移和遗漏:一个日期 可能有两天的数据
数据库日志解析同步
数据同步
优点性能好效率高对业务系统影响较小
生产者:产生消息 向TT集群发送消息数据消费者:接收消息 从TT集群获取消息数据TopiC:消息类型的标识Broker模块:负责收发数据请求 往HBase取发消息
对于删除操作提供三种解决方式1.不管是不是删除操作 获取同一主键最后的那条流水2.获取最后一条流水 如果最后一条是删除操作 则往回取3.如果最后一条是删除操作 则直接过滤如何选择 根据前端如何删除数据的
Broker1
业务库直连的方式对源系统的性能影响较大 当执行大批量数据同步时会降低甚至拖垮业务系统的性能 不太适合从业务系统到数据仓库系统的同步
日志解析模块
Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则,异常退出,进程退出值非0
Scheduler模块
调用
由于通过文件服务器上传、下载可能会造成丢包或错误,确保数据文件同步的完整性,除了上传数据文件本身以外,还会上传一个校验文件,该校验文件记录数据文件的数据量和文件大小等校验信息,给下游目标系统验证数据同步的准确性。在从源系统生成数据文件的过程中,可以增加压缩和加密功能,传输到目标系统以后,再对数据进行解压缩和解密 , 这样可以大大提高文件的传输效率和安全性
通过源系统的进程,读取归档日志文件用以收集变化的数据信息 通过网络协议,实现源系统和目标系统之间的数据文件传输相关进程可以确保数据文件的正确接收和网络数据包的正确顺序,并提供网络传输冗余,以确保数据文件的完整性数据文件被传输到目标系统后,可通过数据加载模块完成数据的导人,从而实现数据从源系统到目标系统的同步 实现了实时与准实时同步的能力 广泛应用于从业务系统到数据仓库系统的增量数据同步应用之中数据库日志抽取都是增删改查 落地到目标表时我们需要根据主键去重按照日志时间倒排序获取最后状态的变化情况
文件服务器
根据配置并发数(默认5个)组成一个一个的TaskGroup
将相对于昨天的更新和新增的数据导入 将昨天的全量数据和今天的数据全外连接 重新加载最新的全量数据(推荐) 全量更新的性能比update 要高得多
数据同步遇到的问题与解决万案
目标系统
同步性能的处理
增量与全量同步的合并
通过定义好的规范接口API 和基于动态链接库的方式直接连接业务库配置简单,实现容易,比较适合操作型业务系统的数据同步
HBase集群
每一个Task启动后都会启动一个线程完成任务同步
DataX架构设计
高效同步和批量同步
DataX:多方向高自由度的异构数据交换服务产品将数据从数据源读出 将数据转为中间状态 维护数据的传输缓存等工作数据在 DataX 中以中间状态存在, 并在目标数据系统中将中间状态的数据转换为对应的数据格式后写入采用Framework+Plugin 的开放式框架实现 数据传输过程中全内存操作 不读写磁盘 也没有进程间的通信概念:2PB数据 3小时以内
TimeTunnel(TT)基于生产者 消费者 Topic消息标识 的消息中间件 将消息数据持久化到HBase的高可用 分布式数据交互系统具有高性能、实时性、顺序性、高可靠性、高可用性、可扩展性特点支持主动 被动 数据订阅机制 订阅端自动负载均衡 消费者自己把握消费策略读写分离 使消费不影响发送 支持订阅历史数据,可以随意设置订阅位置,方便用户回补数据针对订阅有强大的属性过滤功能,用户只需关心自己需要的数据即可概念:每秒十几万交易量 延迟控制在3秒以内
TCP/IP协议
多获取一天的数据通过多个时间戳来准确获取数据
当数据源包含多个异构的数据 从源系统生成数据文件 两边 约定好的文件编码、大小、格式 由文件服务器 负责接收文件加载到目标系统
Broker2
Broker3
分库分表处理
0 条评论
下一页