暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数字广东数据集成平台从 Datax 到 Apache SeaTunnel 的演进之路

SeaTunnel 2023-08-29
810

点击蓝字 关注我们


作者 | 孟小鹏
编辑整理| Debra Chen

背景介绍


大数据时代,政务在享受大数据带来的管理便利的同时,也面临着数据质量、数据管理、数据共享等问题的挑战。为了提高政府决策的科学性和精准性,提高政府工作效率,优化政府服务,促进政府数字化转型,政务数据交换平台成为政务数据相互流通必不可缺的“桥梁”。


政务数据共享交换平台是指政府部门之间共享数据的平台,通过这个平台可以实现政府部门之间的数据共享、交换和整合,实现政府数据跨层级、跨地域、跨部门、跨系统、跨业务的信息资源共享交换。


由于政务数据共享平台需要实现多个数据源的集成,包括不同部门、不同数据库、不同格式等,其建设和维护都离不开数据集成技术支持。


数字广东在实现数字化转型上一直走在前列,不断在数据共享交换业务场景上进行探索,并将数据集成支持从 DataX 替换为 Apache SeaTunnel。


政务行业在数据交换的业务场景上面临哪些挑战?如何利用 Apache SeaTunnel 数据集成技术支持实现数据价值的最大化?数字广东通过其数据集成技术演进之路,来回答了这些问题。



业务挑战



数字广东是由中国电子三大运营商和腾讯共同成立组成,致力于成为国内领先型的平台型的科技公司。

其产品粤省事承移动政务服务平台作为广东省政府打造的指尖办事利器,是广东省政府实现政务数字化转型的重要依托。在粤省事上,有两个特色的场景,包括全面的政务服务以及疫情防控的场景。

1

政务服务场景











截止 2022 年 5 月,我们已经上线了2,500项服务,有常用的公积金、社保、医保、生活缴费、电子证照,以及护证税务等相关业务。

2

疫情防控场景











还有疫情防控防控相关的业务。疫情三年期间,大家必备的事“一码走天下”,广东发布的粤康码总使用人数达到了2亿,在防控上数字广东总共上线了 73 项服务,提供了实时官方权威的防控动向。

为了支撑现有的数字广东的相关业务,包括数字政府的相关业务,数字广东对于数据的实时性的要求是非常高的,包括数据质量、数据流通的效率等,最终其实都会反映在其数据集成平台的核心能力上,比如平台的稳定性、数据的准确性等,所以在数据同步上面临着一些痛点,数字广东在建设数据同步平台的过程中也踩过不少坑。



数据同步痛点


整个数据同步按照链路来分,可以分为实时链路和离线链路两条链路。目前数字广东离线的链路是基于开源的 DataX 去构建的平台。

1

离线数据同步的痛点











在离线的链路上,数字广东聚焦于如下四个方面:
● 生态不足
● 兼容性不足
● 性能不足
● 扩展性不足

在生态上,数字广东目前基于开源的DataX 去做平台,首先会面临的一个痛点就是生态不足。图右是开源的 DataX 关于关系型数据库和阿里云的数仓数据存储的生态情况。但在政务行业,其面临的生态更加复杂,由于历史原因,数字广东内部存在着较多远古时代的数据库产品,在国产化的要求下,开源 DataX 在生态上有不足的地方,比如缺乏对于达梦、Sybase、Gbase 的支持。

另一个离线数据同步面临的痛点就是兼容性不足。

由于现有的 DataX 架构其实是 readplugin +Framework+writeplugin,但是要去适配各种各样的数据库,所以势必需要兼容不同数据库下的不同的数据类型。DataX 面定义了 6 种类型来做数据的转化和 Mapping,但是对于一些不常用,或者是特殊的数据类型并没有处理好。比如图中的blob 的字段等类型,如果直接使用会出现乱码的情况,以及数据不一致的问题。

图右的代码中,是从 DataX 的 read 端去读取数据,后与现有的DataX 定义的 6种类型之间进行 Mapping 转换。在实际的生产中,比如说针对于 Sybase 等字段就会生成乱码。

另外一个痛点就是性能不足。

这里的性能主要是指多通道的能力。DataX 支持两种模式,一种是table模式,一种是query SQL 模式,也就是我们在生产环境中比较常用的自定义 SQL 的模式。很显然,自定义 SQL更能够满足实际的复杂的生产场景需求。但是目前 DataX 的自定义 SQL 模式只支持单通道的能力,这就会造成同步的性能问题。

图右是 DataX 关于通道能力的分流逻辑,简单来说它会根据 table 模式下进行 channel 的处理,每个 task 会分配对应的数据集,拆分的逻辑目前是按照Max、Mini生成一个 range,有了 range 以后在现有的 DataX 里设置 Channel,最终这里的range和我们的 Channel 进行map,就可以给每个 task 设定独立的数据范围,从而再去调度同步。


在横向扩展上,开源版 DataX 是单机版的,会面临两个问题,一个是单机的瓶颈,一个是单机的性能问题。

首先,单机扩展是非常困难的,处于大数据时代,单机的瓶颈和性能更是无法满足数字广东实际的业务场景和需求。比如图右中我们能看到,扩点 json 里针对于单个 transport 里面的 Channel 默认是 64M,同时默认的容量是 512 条数据,所以这在现有的大数据的背景下,单机的能力远远不能够满足实际的业务场景对于实时性和性能的需求。

整体解决方案











所以,当面临这些所说的问题时,数字广东做了整体的优化方案,主要通过以下四个板块进行了提升。

● 架构升级

我们都知道,DataX 开源版是单机的,所以数字广东基于 DataX 进行了了分布式架构升级。

● 数据源丰富多版本支持

针对生态不足的问题,在现有的生态上做了数据源的丰富,包括国产化新要求里的国产数据库,以及原本已经存在着的主流数据库中的多个版本的支持

● 任务模式

开源 DataX是无法做增量任务的,这里的增量指的是当用户需要对一个任务进行增量处理的时候,前提是需要有一个存储去存储到当前任务上一轮保留下来的增量时间,很显然目前 DataX 并不支持。所以,数字广东在任务模式上做了增强。

● 数据类型兼容优化

数据类型兼容性问题,主要是指插件和数据类型的兼容。针对数据类型兼容,主要针对一些不常见的数据类型,比如 blob 字段,Sybase 字段等,基于开源版本上进行了约 15 种类型的数据兼容工作。

经过整体方案优化,基本上可以满足数字广东目前在政务行业中一些离线场景的数据同步需求。

2

实时数据同步痛点











然而,数字广东在业务的需求上收到越来越多的实时的需求,数据的实时性也变得越来越重要,因为实时产生的价值越来越大。

在实时数据的同步中,数字广东又面临着一些痛点。

DataX 是一个离线架构,数字广东基于它做了离线数据同步平台,但是当面临实时数据同步需求的时候,有两个路线可以选择:第一个是在原有的系统上自研,自研 CDC 采集模块。


理论上是可行,但是会面临着三个比较大的问题,一个是人力成本,数字广东需要投入大量的人力成本;再一个是技术难度,因为在原有的系统上单独做实时,那就意味着要基于现有的DPZ,或者是一些其他的开源的采集的工具,在上面定义自己的数据类型,难度很大;另外,项目的交付上也等不了,公司需要敏捷开发,项目的交付的周期比较快,而且还会面临一个灵魂拷问—难道又要重复造轮子吗?

除了这条路,数字广东的另外一个路线就是集成模式,即集成业界实时采集的框架,比如 Flink CDC。


图右是 Flink CDC的生态,借助 Flintk CDC 的能力可以支持分布式 CDC 的数据同步和写入,一切似乎看起来非常美好,但在集成时仍然面临着问题。在已有的平台上要去集成实时的链路,这会让在数据集成下的  Lambda 架构面临三个非常大的问题:

● 第一个是多条链路,原有的已经成一线的链路去集成一条实时的链路,就是多条链路。

● 在多条链路下系统要进行改造,会在单独实施的旁路进行重复的开发,比如原本是基于DataX 的一条同步链路,这里又需要基于 Flink 和 Flink CDC重复开发一条旁路。

● 在多套路径下,对现有的运维也是一种挑战,他们不仅要支持原有的离线的平台运维,还要维护实时的 Flink 这一套技术栈。

所以,数字广东渴望有一个数据同步的产品能够解决其实时离线面临的痛点问题,希望有统一的技术栈,不会因为多条链路需要重复的开发,也不会因为需要支持多条链路要应对各种各样的技术栈的运维挑战和压力。



数据集成平台选型与演进之路


归纳好对于实时数据同步痛点的需求后,数字广东开始了数据集成平台的技术选型。

总结一下其诉求,就是成年人的世界,既要,又要,还要。


既需要有丰富的生态、分布式的架构、流批一体、高性能,又要有活跃的社区。

在通过比较长时间的调研后,Apache SeaTunnel 脱颖而出,其与数字广东诉求的匹配度是最高的。目前,SeaTunnel 已有数百家企业正在使用,在分布式流批一体的架构下支持三种引擎,并且社区也即将发布了对应的 Web 端,来提升应用性。SeaTunnel Web 端包括了调度、job 的定义、监控告警等。



用户期望


在未来展望上,数字广东在产品的迭代和反馈两个方面有着期待。

首先,数字广东数据同步平台会坚持以 Apache SeaTunnel 为底座进行产品迭代,目前已经在开发阶段中,最终会在这套平台上去落地实施明线的两条链路,把现有的明线的链路平滑地迁移到新平台中。

此外,针对实际场景,数字广东在监控指标和 CDC 的生态上提出了自己的期待,希望社区在 CDC 上可以更加丰富,满足其在实际生产环境中更加复杂的 CDC 场景。目前社区主要还是支持两种 SQL Server和 MySQL CDC。


另外,关于任务指标监控,上图是数字广东通过 Zeta 引擎跑的批处理作业,这里的指标有时间、读写记录以及失败记录,但其希望有有更多的中间态的状态,比如流控相关,每秒的数据调数,每秒的数据量大小数据等指标,这样在实际生产环境中,用户就可以更方便地了解任务的实际情况。

作者介绍


孟小鹏 数字广东 技术经理

数字广东技术委员会专业委员

Apache SeaTunnel&DataX Contributor

华北电力大学计算机系研究生


Apache SeaTunnel





Apache SeaTunnel 是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步和转化的数据集成平台

仓库地址: 
https://github.com/apache/seatunnel

网址:
https://seatunnel.apache.org/

Apache SeaTunnel 下载地址:
https://seatunnel.apache.org/download
 
衷心欢迎更多人加入!

我们相信,在「Community Over Code」(社区大于代码)、「Open and Cooperation」(开放协作)、「Meritocracy」(精英管理)、以及「多样性与共识决策」等 The Apache Way 的指引下,我们将迎来更加多元化和包容的社区生态,共建开源精神带来的技术进步!

我们诚邀各位有志于让本土开源立足全球的伙伴加入 SeaTunnel 贡献者大家庭,一起共建开源!

提交问题和建议:
https://github.com/apache/seatunnel/issues

贡献代码:
https://github.com/apache/seatunnel/pulls

订阅社区开发邮件列表 : 
dev-subscribe@seatunnel.apache.org

开发邮件列表:
dev@seatunnel.apache.org

加入 Slack:
https://join.slack.com/t/apacheseatunnel/shared_invite/zt-1kcxzyrxz-lKcF3BAyzHEmpcc4OSaCjQ

关注 Twitter: 
https://twitter.com/ASFSeaTunnel

精彩推荐




Apache SeaTunnel Connector 使用文档和使用案例有奖征稿来了!一起玩开源




加大火力!优秀用户案例有奖征集活动等你投稿




讲师征集令 | Apache SeaTunnel Meetup 分享嘉宾火热招募中!



一键三连-点赞在看转发⭐️!

文章转载自SeaTunnel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论