购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.2 数据汇聚产品

从上文的介绍中可以了解到,各式各样的工具都无法独立满足企业复杂的数据汇聚场景。从数据类型来看,有结构化数据和非结构化数据;从作业实效性来看,有离线数据同步和实时数据同步。另外,数据汇聚是后续数据处理、加工作业的起点,因此,相应的同步、汇聚任务调度及状态要能够有效地与上下游形成依赖,借助统一调度的能力构建数据作业流。

数据汇聚产品首先要考虑的是屏蔽底层工具的复杂性,以可视化配置的方式提供给企业用户;其次需要考虑,为了解决数据孤岛问题,应满足异构存储、异构数据类型的同步需求;最后,还要考虑不同时效要求下的数据互通。因此,数据汇聚产品需要屏蔽系统底层协议、传输安全、特性组件等信息,让开发人员在数据接入过程中无须关注数据格式转换、数据路由、数据丢失等,而只需要关注与业务本身相关的数据同步、汇聚部分。

在构建数据同步、汇聚链路的实践过程中,基于异构数据源、异构厂商集群、数据应用时效性和相关技术栈等因素考虑,需要采取不同的同步策略:离线数据同步和实时数据同步。但是在产品形态上,两种同步服务可以采用相同的可视化同步配置策略,以降低用户操作成本。

1.数据源

数据汇聚是将数据从一个存储点搬运到另一个存储点的动作,在搬运之前,需要让系统知晓数据原来在哪,搬运目的地在哪,以及如何连接,这样才能顺利进行数据同步与汇聚。这就需要对数据库连接方式进行配置、记录,即数据源管理。

数据源可以是已有系统存储业务数据的地方,作为数据中台的数据来源,也可以是数据应用场景,为应用场景提供结果数据存储的地方。

根据业务系统及数据应用场景的不同,数据源也有不同的选择。例如,广告场景对时效性要求很高,相应地,对数据源读性能的要求就会很高,有些场景对于大批量数据的多维分析有需求,因此数据源需要具备对大批量数据进行多维分析的能力。针对这些场景,涉及的数据源会有很多种,大致可以分成以下几类。

❑关系型数据库:如Oracle、MySQL、SQL Server、PostgreSQL、DB2、King-Base、达梦、ClickHouse、TiDB等。

❑NoSQL:如Redis、MongoDB、Elasticsearch、OTS、Neo4J等。

❑MPP型数据库:如Greenplum、AnalyticDB for PostgreSQL、GaussDB、GBase等。

❑网络及MQ:如Kafka、Pulsar等。

❑文件系统:如HDFS、FTP、OSS等。

❑大数据相关:如Hive、Impala、Presto、Kudu、MaxCompute、LibrA、ELK等。

2.抽取与加载程序

数据汇聚、同步需要从源头数据源读取数据,并写入目标数据源。在实现上,抽象为从源头数据源读取数据的读取插件,以及向目标端写入数据的写入插件,理论上可以支持任意类型数据源的数据同步工作。

结构化数据和非结构化数据都可以通过扩展插件的方式进行同步。对于结构化数据,主要场景是将原始数据库中的数据复制到目标表,在源头数据端通常采用数据查询或者捕捉日志变化的方式获取数据,根据不同的需求设计开发适配插件。非结构化数据则有更多汇聚同步方法,常规的场景主要是以文件或数据块的方式进行同步,因此只需要适配源或目标存储系统的相应插件及数据处理的机制。例如文件传输,将数据块保存为特定格式的文件,即可满足相应的需求。一些非结构化数据由于规模比较大,并且全部搬运的意义不大(比如某个区域的监控录像),那么通常在传输过程中直接对视频流内容进行识别,并提取关键信息,最后写入目标端结构化存储系统中以降低存储成本。这类场景对读取和写入插件的适配要求没有变化,但在同步过程中增加了计算环节,需要数据处理模块发挥作用。

读取插件 :数据采集模块,负责采集数据源的数据,将数据发送给数据同步核心模块。

写入插件 :数据写入模块,不断从数据同步核心模块取数据,并将数据写入目标端。

数据同步核心模块 :用于连接读取插件和写入插件,作为两者的数据传输通道,并处理缓冲、流控、并发、数据转换等核心技术问题。

3.同步模式

离线数据同步与实时数据同步是数据汇聚、同步的两种同步模式。

针对数据时效要求低、吞吐量大的场景,主要采用离线模式。在过去网络带宽紧张、业务数据库性能瓶颈很低时,主要使用该模式。当时,大部分企业将数据同步任务放在夜间执行,以降低对业务的影响,并在完成同步后处理数据、加工业务指标、生成报表,以供业务人员次日查阅。这种方式需要在任务执行前进行开发、测试、验证和发布,并由系统代理在次日启动程序进行同步。

而对于时效要求高、需要频繁实时获取最新数据的业务场景,就需要采用实时模式。实时同步支持将关系型数据库、消息队列中间件等多种数据源作为数据源端,通过读取数据库日志或者订阅消费的方式持续读取数据,将新增数据或者变更数据写入目标存储系统。实时同步可以在任务发布后立即开始同步,并且能够在网络抖动等造成同步中断后断点续传。

随着硬件性能的提升以及软件方案的成熟,流(实时)与批(离线)的界限越来越模糊,流批逐渐一体化。在过去,相同的数据同步内容需要单独开发任务,流批一体化后只需要开发一次同步任务,在执行时再根据资源、业务需求、数据存储要求自动或手动切换同步模式就能响应业务要求,从而大幅降低研发和维护成本。

4.同步范围

数据是具备生命周期属性的要素,大部分数据的价值会伴随时间的推移而减弱,但不会完全消失。企业在数据汇聚时,要充分考虑目标数据对当下业务的重要程度、存储与计算成本、过去业务变化的价值影响等因素,选择汇聚全部数据(全量同步)还是只汇聚最近产生的数据(增量同步)。

❑全量同步:全量数据同步分为表全量同步和库全量同步(整库同步)两种方式。表全量同步每次读取表中全量数据并写入;库全量同步是把库中所有表进行数据同步,要求源端和目标端的表名称、结构相同,允许目标表不存在,不存在时自动创建目标表。

❑增量同步:增量同步分为新增、覆盖和更新三种策略。新增策略主要通过在目标端创建新分区或者直接追加写数据实现。覆盖和更新策略在同步配置时选择唯一键,根据唯一键对比同步中的数据和目标端数据,结合增量策略来判断数据是应覆盖还是更新。

数据汇聚产品中,既可以单独进行全量数据同步和增量数据同步,也可以将二者结合使用,先进行全量同步,然后自动进行增量同步,从而大幅降低技术人员的操作成本,无须重复设置。

5.其他产品特性

数据汇聚与同步除了对数据传输有要求,对传输数据内容的规范性和安全性及传输过程的稳定性都有一定要求。

(1)前置稽核

在开始源端数据同步前,可以进行数据质量规则校验,根据配置规则的阻塞、告警等策略控制数据同步是否运行。

(2)数据转换

数据转换是指将各类非标准数据转换成标准数据格式,并且将转换后的数据推送到大数据平台指定的位置或库表。在数据同步、传输过程中,存在用户对于数据传输进行定制化的场景,包括字段截取、替换、编码转换等操作,可以借助ETL的T(Transform,转换)过程实现。

在配置数据同步作业的字段映射关系时,可以对每个字段定义转换函数,例如字符串截取函数dx_substr、字符串替换函数dx_replace、字符串过滤函数dx_filter,还支持用户用Groovy自定义转换逻辑。

(3)传输加密

数据中台通常建设在本地环境,与外网隔离,在数据传输过程中相对安全,不容易发生数据泄露,但也存在混合云、公有云部署的模式,为了防止数据泄露,在传输过程中会采取SASL认证等机制保证数据安全。也可以采用先在源端加密再传输到目标端的方式进行解密,但对计算资源的开销较高,除非是涉密数据、隐私数据,其他类型数据使用这种方式传输的性价比并不高。

(4)流量控制

数据存储、数据计算、网络资源都影响着数据传输的快慢,数据汇聚、同步任务也因业务的优先级、源系统的并发限制等需要调整资源占用比例。在产品中,可以调整内存的分配、运行的优先级别、传输速率等多项指标,以满足不同场景下的数据汇聚需求,同时充分利用硬件资源。 ZpBrbSYPGDTZ8LDiUT18TmBmIfwjBX3Udx50gHr4fhz/xFZKAl8u26QlOl5kPWBB

点击中间区域
呼出菜单
上一章
目录
下一章
×