2.8.3-RC

What's new

2021,牛年来到,万象更新,DataPipeline也更新了2.8.3版本。

在2.8.3版本中,我们在2.8版本中添加了对文件系统类HDFS与FTP数据节点、HashData数据源的支持,提升数据节点支持的广泛性;为了更好地适应大数据量数据同步,数据任务支持使用服务器内存作为数据缓存,提升了数据处理效率;与此同时,我们还对数据加载场景、数据节点可用性校验场景进行了优化,提升系统稳定性。

功能更新

1.数据任务支持使用服务器内存作为缓存方式

消息队列缓存数据流转

在之前的版本里,在数据采集组件从数据源读取数据后,DataPipeline使用消息队列中间件Kafka将数据进行缓存,数据加载组件从消息队列中消费数据,写入数据目的地。

在一些同步场景中,数据源读取速率高于数据目的地写入速率,所以引入消息队列进行数据缓存,提升系统资源的整体利用率。

消息队列数据流转限制

在数据同步过程中,采集数据速率、缓存写入速率、数据加载速率通常是制约DataPipeline产品性能的瓶颈。

采集数据速率与加载数据速率均可通过提升组件配置、使用更多的读取进程、加载进程等方式解决。

而Kafka缓存写入速率受到高可用Kafka集群ACK机制与缓存数据需要落到磁盘上的机制制约,存在一定的性能瓶颈。

与此同时,高可用kafka集群本身在整体系统环境中也需要一定的CPU、内存、网络带宽等系统资源。

因此,在不需要缓存数据的场景,我们提供了使用内存作为缓存的数据流转(同步)方式。

内存缓存数据流转

在2.8版本中,我们提供内存直写同步模式。数据采集组件采集数据后,将会在组件内部的内存中维护一个内存缓存队列,以写入速率反压读取速率,替代消息队列,提升同步速率。

同时减少对Kafka组件的依赖,给系统”减负“,提升系统稳定性。

2.HDFS数据节点

DP在2.7版本的HDFS数据目的地的基础上对HDFS数据节点进行了更多功能的支持和优化。

新版本支持HDFS作为数据源节点以及数据目的地节点,并支持通过HDFS客户端进行 CSV、PARQUET、Avro 类型文件的定时全量读取,以及通过HDFS客户端将源端数据写入HDFS目的地端的CSV、PARQUET、Avro 类型文件,并且支持写入动态文件目录。

3.FTP数据节点

DP在2.7版本的FTP数据目的地的基础上对FTP数据节点进行了更多功能的支持和优化。

新版本支持FTP作为数据源节点以及数据目的地节点,并支持通过 FTP 客户端进行CSV 、Json 类型文件的定时全量读取,以及通过FTP客户端将源端数据写入FTP目的地端的CSV、Json类型文件,并且支持写入动态文件目录。

4.HashData数据源

支持HashData作为数据源节点

DP非常重视对国产数据库的支持。因此在本次更新中,增加了HashData作为数据源节点的支持。

平台支持HashData的版本为开发时当前最新的2.5.x版本,采用JDBC的读取方式。并且支持全量和增量的同步方式。同时执行方式支持定时模式,并支持以常规模式或者corn表达式的方式进行设置。

关键功能优化

1. 数据加载场景优化

在数据写入的过程中,一次插入一条数据得到的数据库反馈最快,数据时效性最高,但数据目的地接收写入SQL的并发有限,SQL执行也需要占用一定资源,故整体写入效率不高。

在2.7版本中,为了提升JDBC写入性能,我们提供了数据目的地写入batch设置,即数据满足一定条件(数据条目数、大小、待写入时间)后一并写入目的地。

在目的地写入数据的批次中,通常会存在同一主键数据被更新多次,同一主键数据被更新多次后删除等场景,为了进一步提升写入效率,对于同一主键的多次操作,我们只同步最后一次的数据,保证数据最终一致性。

随着产品不断深入的支持各类客户场景,保证最终一致性的写入方式确实在部分场景中可以提升写入效率,但在银行核心交易系统数据同步场景中,如账户交易资金变动,在对账计算中,对于同一主键的多次操作只同步最后一次是不能被接受的。

因此,我们提供了数据加载策略增量处理模式配置的全增量模式与精简增量模式来区分上述场景,更好的支持数据同步。

在数据写入过程中,使用的DML写入方式同样对写入效率、写入成功率有较大的影响。在2.7版本中,我们在向目的地写入数据时,一般会采用upsert(merge)语句,即源表与目的地表中数据主键不同执行插入,主键相同执行更新。

这样的写入操作对部分写入场景的支持不够友好,如拉链表、标记删除表等。

在2.8.3版本中,我们将目的地数据加载操作调整成为映射形式,数据源的DML操作标识将被映射成为目的地的数据加载操作。

当前支持的数据加载操作映射有:

  • insert 即目的地执行插入操作;

  • upsert(merge)即源表与目的地表中数据主键主键不同执行插入,主键相同执行更新;

  • update 即目的地执行更新操作;

  • delete 即目的地执行删除操作;

  • ignore 即目的地不执行任何操作;

当目的地插入数据时,可能会出现主键冲突无法插入,我们提供主键冲突策略处理这种情况。

  • 暂停数据任务

  • 继续运行,错误数据进入错误队列

2. 数据节点可用性校验(权限校验)优化

可用性校验将以往版本的连接验证和权限验证合并,提供数据库连接校验和权限校验的功能。您可以通过可用性校验同时实现连接验证和权限验证,即同时测试数据库能否连接成功以及数据库权限校验是否通过,以获得支持/可用的连接模式信息(读取模式+写入模式统称)。

您可以在节点的基本配置中点击「可用性校验」按钮进行可用性校验。校验将先检测数据库连接情况。数据库连接成功后,进入权限验证;数据库如连接失败,将提示您数据库连接失败,不进入权限验证。 可用性校验后,连接模式将显示哪些读取模式和写入模式可用。

其他优化

  1. 数据映射--清洗脚本功能支持获取数据源元数据,并将元数据写入至数据目的地,详见《在清洗脚本中使用数据源元数据》

  2. 节点基本配置展示支持写入模式,详见《可用性校验》

  3. Kafka节点Topic序列化器设置支持批量操作,详见《配置Kafka节点》

  4. 修复一些已知问题。

最后更新于

这有帮助吗?