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

842

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

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

DataSourceX 模块的作用

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

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

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

数据源中心添加数据源

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

image.png

image.png

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

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

image.png

image.png

FlinkSQL任务-数据源配置

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

image.png

image.png

image.png

RDB SQL运行

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

image.png

On Yarn任务日志

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

image.png

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

DataSourceX 模块的设计

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

统一的 Client 接口

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

image.png

插件隔离加载

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

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

image.png

Client 对象统一代理

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

image.png

连接池化管理

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

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

image.png

资源的统一管理

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

image.png

Taier 1.3 新版本

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

技术改造

• DataSourceX 融合

• 部署优化

数据开发

• 任务支持指定队列运行

• 任务数据源绑定

新增功能

• 新增Flink Standalone

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

视频回放&PPT获取

视频回看:

www.bilibili.com/video/BV1wW…

课件获取:

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

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

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