博客 DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块

DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块

   数栈君   发表于 2022-12-28 13:41  530  0

熟悉Taier的小伙伴们应该都知道,在11月7日发布的Taier1.3新版本中,我们融合了「DataSourceX 模块」。这是十分重要的一个变化,移除Taier外部插件依赖,新增数据源插件相关特性,支持后续Taier对接更多的RDBMS类型的SQL任务。


本篇文章,就带大家详细了解一下DataSourceX 的作用及设计。


01

DataSourceX 模块的作用


为什么说 DataSourceX 是一个非常重要的模块?


在 Taier 中 RDB SQL 任务的运行,向导模式的数据同步、实时采集、FlinkSQL 任务配置都是依托数据源来进行的,其中保证数据源的正常使用以及 RDB SQL运行、任务所需的库、表、字段等信息的获取都是依靠 DataSourceX 模块来做的。


下文展开聊聊Taier-DataSourceX 模块的具体功能。


数据源中心添加数据源

数据源中心添加数据源时需要进行数据源连通性检测,确保数据源是真正可用的,具体就是通过调用 DataSourceX 模块来实现。连通性检测通过之后,可以进行数据源的保存,并在任务中进行引用。


数据同步任务-数据源配置

数据同步任务源表结果表配置中的表、字段等信息都是通过 DataSourceX 模块进行获取。


FlinkSQL任务-数据源配置

FlinkSQL 中源表 topic 获取、数据预览等,结果表维表字段、数据预览等都是通过 DataSourceX 模块进行实现。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/ee7e808a34c075c1c91aa8d4bd8c5110..jpg
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/15df0b6a71d5bd6323b1f7f3ea99fc75..jpg
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0e762de95ff30267c8b1ab7338644f99..jpg

左右滑动查看更多


RDB SQL运行

Taier 1.3版本中,RDB SQL任务和数据源进行了绑定,不需要再像之前一样在控制台配置计算引擎,DataSourceX 中支持的RDB数据源都可以做RDB SQL的运行,比如像 OceanBase SQL 就可以通过 DataSourceX 模块来运行。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/75f88d91ec7535e537d21cf7da12228e..jpg


On Yarn任务日志

On Yarn 任务运行结束的聚合日志通过 DataSourceX 模块进行获取。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/666bb2cb293a2d32a9e3cd344943e8ec..jpg


Taier-DataSourceX 其他功能

  //  

• Taier-DataSourceX 模块统一了各种数据源间的相同操作,提供了一组相同的接口来对不同的数据源进行操作,使得 Taier 可以更轻松的集成不同的数据源,支持更多的 RDB SQL 和数据源


• Taier-DataSourceX 模块支持几十种 RDB 数据源并支持开启池化管理,支持 hdfs、ftp、s3 等存储组件,支持 mongoDB、es、redis 等非关系型数据库 


• Taier-DataSourceX 模块本身支持并统一了 kerberos 认证逻辑,对于支持开启 kerberos 认证的数据源,Taier 本身并不关心底层的实现逻辑,而是交由 DataSourceX 模块来完成


• Taier-DataSourceX 模块基于 ChildFirstClassLoader 并结合 SPI 支持在同一个应用中对接不同版本的数据源,如 Taier 可以同时支持 Hive1.x、Hive2.x、Hive3.x 三种不同版本的 Hive


02

DataSourceX 模块的设计


了解完 DataSourceX 的丰富功能之后,接下来带大家了解Taier-DataSourceX 模块的设计。


统一的 Client 接口

Taier-DataSourceX-api 模块定义了 SPI 服务接口,具体实现由 Taier-DataSourceX-plugin 来完成。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8dced681087bc2ab00f1eccff40f69a7..jpg


插件隔离加载

Taier-DataSourceX 会对每一个类型的数据源模块打包成一个单独的 jar 并放到指定目录。


Taier-DataSourceX-api 模块为每个插件包初始化一个 ChildFirstClassloader 隔离加载不同的数据源实现对象,解决多版本驱动同时加载的类冲突问题。


Client 对象统一代理

Taier-DataSourceX 模块加载的 Client 对象是通过动态代理生成的代理对象,方便进行统一的异常处理、重试、超时、上下文 Classloader 的切换等处理。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/d1e85f0a0b43786da30365c86bcbc7b9..jpg


连接池化管理

Taier-DataSourceX 模块针对 RDB 数据源或其他数据源进行的统一池化管理,支持开启连接池,为相同的数据源初始化一个连接池,控制资源使用和提升程序运行效率。


针对不开启连接池的连接进行统一管理,及时清理过期连接。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/d1de7dc5dc8505ae46cdbcd0316a117a..jpg


资源的统一管理

Taier-DataSourceX 模块针对初始化的 Classloader、Client 对象、执行线程池进行统一管理,在插件包变更、新增、删除时动态检测并销毁或新增资源。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/0bdf70eaf466da63af549d1cd0e621c8..jpg


03

Taier 1.3 新版本


Taier自今年2月份开源之后,得到了社区开发者的广泛支持,我们积极吸收社区开发者的意见建议,不断迭代版本,已于11月7日发布了全新的1.3 版本,进行了多项功能改动。


Taier

技术改造

• DataSourceX 融合

• 部署优化


Taier

数据开发

• 任务支持指定队列运行

• 任务数据源绑定


Taier

新增功能

• 新增Flink Standalone

• 新增Python、Shell任务,新增ClickHouse、Doris SQL任务


 视频回放&PPT获取  

>视频回看:

https://www.bilibili.com/video/BV1wW4y1T7EC/?spm_id_from=333.337.search-card.all.click


>课件获取:

关注公众号“数栈研习社”,后台私信“Taier”获得直播课件



想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack



0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群