数据交换的构建策略

时间:2022-11-03 11:19:09

数据交换中心的首要目的是屏蔽底层工具的复杂性,以可视化配置的方式提供给企业用户;其次需要考虑,为了解决数据孤岛,需要满足异构存储、异构数据类型的交换需求;同时,还要考虑不同时效要求下的数据互通。因此,数据交换平台需要屏蔽系统底层协议、传输安全、特性组件等信息,让开发人员在数据接入过程中无须关注数据格式转换、数据路由、数据丢失等,只需要关注与业务本身的数据交换部分。企业信息化建设的多种数据源类型,可以通过同步模块的数据源进行统一管理,方便用户快速通过可视化页面执行数据汇聚工作。

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

1、数据源管理

数据源管理主要是管理数据所用的存储,用于平台在做数据交换时,可以方便地对外部存储进行相应的管理。数据源可以是已有系统存储业务数据的地方,作为数据中台的数据来源,也可以是数据应用场景,为应用场景提供结果数据存储的地方。

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

  • 关系型数据库:如Oracle、MySQL、SQL Server、Greenplum等。
  • NoSQL存储:如HBase、Redis、Elasticsearch、Cassandra、MongoDB、Neo4J等。
  • 网络及MQ:如Kafka、HTTP等。
  • 文件系统:如HDFS、FTP、OSS、CSV、TXT、Excel等。
  • 大数据相关:如Hive、Impala、Kudu、MaxCompute、ADB、LibrA、ELK等。
2、离线数据交换

离线数据交换是针对数据时效要求低、吞吐量大的场景,解决大规模数据的批量迁移问题,其实现原理是将不同数据源的交换抽象为从源头数据源读取数据的读取插件,以及向目标端写入数据的写入插件,理论上可以支持任意类型数据源的数据交换工作。采用插件化方式构建,将数据源读取和写入抽象成读取插件、写入插件。

非结构化的数据也可以通过扩展插件方式进行交换,其场景主要是以文件或数据块的方式进行交换,因此只需要适配源或目的存储的相应插件及数据处理的机制,如文件传输,数据块保存为特定格式的文件,即可以满足相应的需求。

  • 读取插件:数据采集模块,负责采集数据源的数据,将数据发送给数据交换核心模块。
  • 写入插件:数据写入模块,不断从数据交换核心模块取数据,并将数据写入到目的端。
  • 数据交换核心模块:用于连接读取插件和写入插件,作为两者的数据传输通道,并处理缓冲、流控、并发、数据转换等核心技术问题。

离线数据同步技术具有以下亮点:

1)前置稽核

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

2)数据转换

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

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

3)跨集群数据同步

由于采用插件化的设计思路,数据同步模块可支持不同集群间的数据同步。例如,从A集群上把数据同步到B集群上,只需要开发A集群的Reader和B集群的Writer,便可以新建数据同步作业对数据进行跨集群迁移。

4)全量同步

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

5)增量同步

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

3、实时数据交换

实时数据交换主要负责把数据库、日志、爬虫等数据实时接入Kafka、Hive、Oracle等存储中,便于后续进行实时计算或供业务查询分析使用。

实时同步有两个核心服务:数据订阅服务(Client Server)、数据消费服务(Consumer Server)。数据订阅服务主要包含数据的订阅和读取、任务实例的启停控制等功能,Client Server采用插件式设计思路,可以支持扩展不同类型的数据订阅读取。

数据消费服务主要包含任务状态控制、数据解析、数据过滤、数据转换、数据写入等功能,通过TCP通信方式和数据订阅方式进行数据读取和传输,经过任务配置的过滤、转换等功能写入到目的端数据源中。数据消费服务也采用插件式设计思路,可以支持目的端扩展不同类型的数据源写入。