阿里大数据之路问道(一)

数据同步

数据同步技术更通用的含义是不同系统间的数据流转,有多种不同的应用场景。主数据库与备份数据库之间的备份,主系统与子系统之间的数据更新,同类型不同集群数据库之间的数据同步。还有不同地域、不同数据库类型之间的数据传输交换,比如分布式业务系统域数据仓库系统之间的数据同步。

数据同步的基础

数据类型多种多样,结构化数据、半结构化数据、非结构化数据。同步方式可以分为三种:直连同步、数据文件同步和数据库日志解析同步
  • 直连同步

    • ODBC\JDBC

  • 数据文件同步

    • 基于FTP

  • 数据库日志解析同步

    • 读取归档日志文件收集变化的数据信息

阿里数据仓库的同步方式

  • 批量数据同步

    • DataX

      • 每天处理2PB左右的批量转换为对应的数据格式写入

      • Framework+Plugin

        • Job

        • Splitter

        • Sub-Job

        • Reader

        • Channel

        • Writer

  • 实时数据同步

    • 服务器集群由成千上万台机器,所产生的日志需要尽快的以数据流的方式不间断地同步到数据仓库。

    • 对业务系统产生的实时数据处理,如双十一实时大屏

    • TT(TimeTunnel)

      • 实时数据传输平台

        • 高性能、实时性、顺序性、高可靠性、高可用性、可扩展性

        • 一种基于生产者、消费者、Topic消息标识的消息中间件,将消息持久化到Hbase的高可用、分布式数据交互系统

        • 生产者

          • 消息数据的生产端

        • 消费者

          • 消息数据的接收端

        • Topic

          • 消息类型的标识

        • Broker

          • 负责处理客户端收发消息数据的请求,然后往HBase取发数据

        • 主动、被动等多种数据订阅机制,订阅端自动负载均衡,消费者自己把我消费策略。对于读写比例很高的Topic,能够做到读写分离,使消费不影响发送。每天实时同步几百TB

数据同步遇到的问题与解决方案

  • 分库分表的处理

    • TDDL

  • 高效同步和批量同步

    • 问题

      • 业务的发展和变化,会新增大批量的数据同步,使用传统方式每天去完成成百上千的数据同步工作

      • 数据源种类丰富,不同类型需要开发人员了解其特殊配置

      • 部分真正的数据需求方

    • 解决方案

      • OneClick产品

        • 对不同数据源的数据同步配置透明化

        • 简化数据同步的操作步骤

        • 降低数据同步的技能门槛

    • 实现

      • 数据的一键化和批量化

      • 一键完成DDL和DML的生成、数据的冒烟测试以及生产环境中测试等

  • 增量和全量同步的合并

    • 数据量过大

      • 传统合并技术

        • update+insert

      • 现在比较推荐的方式

        • full outer join + 数据全量覆盖重新加载

          • 当天的增量与前一天的全量数据做全外连接

  • 同步性能的处理

    • 问题

      • 设置的线程数达不到要求

      • 不懂如何设置线程数

      • 不同的数据同步任务重要成都不一样

    • 负载均衡的解决方案

      • 用户创建数据同步任务

      • 系统提前获知及设定的数据,估算该任务需要同步的数据量、平均同步速度

      • 根据需要同步的总线程数将待同步的数据拆分成相同数量的数据块,一个现成处理一个数据块,并将该任务对应的所有现成提交至同步控制器

      • 同步控制器判断需要同步的总线程数是否大于首轮期望值

      • 同步控制器采用多机多线程的数据同步模式,准备该任务第一轮现成的跳读,优先发送优先级高的

      • 同步控制器准备一定数据量的虚拟线程

      • 任务开始同步

      • 任务同步完成

  • 数据漂移的处理

    • modified_time、log_time、proc_time、extract_time时间不统一

    • 处理方法

      • 多获取后一天的数据

        • proc_time来限制

          • 一个订单是当天支付的,但是第二天凌晨申请退款关闭了该订单,那么下游在统计支付订单状态会出现错误

        • 通过多个时间戳字段限制时间来获取相对准确的数据

          • log_time分别冗余前一天最后15分钟和后一天凌晨开始15分钟 数据,并用modified_time过滤非当天数据,确保数据不会因为系统问题而遗漏

          • 根据log_time获取后一天15分钟的数据;针对此数据,按照主键根据log_time做升序排列去重

          • 全外连接拼接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值