引言
小伙伴们,大家好,距离上次数睿通 2.0 更新已经过去了两个月的时间,开年确实比较忙,没法沉下心来集中开发,所以更新速度慢了一些,还望谅解,本次主要是完善了 ETL 流程引擎,ETL 初步可用,但目前支持的组件有限,日后会逐渐开放各种类型组件的支持,同时也添加了资产总览页面,可以对数据资产进行直观的展现,最后,应用户需求,编写了详细的操作手册,希望能帮助用户更好的了解和使用系统。主要更新点如下:
- ETL 完善:初步可用,构建了较为完整的 ETL 生命周期,运行流程时可以实时查看日志,同时支持历史流程的日志查看
- 资产总览完善:添加资产总览页面,方便直观展现数据资产信息
- 操作手册:完成了详细操作手册的编写,方便用户更好的使用产品
- 数据集成部分情况下的内存泄漏问题处理修复
- 系统部分页面美化,后台逻辑整体优化完善
- 修复用户反馈的 BUG
下面来让我们一起看一下本次更新,同时我也会介绍一下 ETL 技术实现的细节。
ETL流程引擎的设计与实现
1.1 整体架构设计
数睿通 2.0 的 ETL 流程引擎采用了基于 DAG(有向无环图)的设计思想,通过将复杂的数据处理流程抽象为节点和边的组合,实现了灵活且可靠的数据处理流程。系统的核心组件包括:
-
Pipeline(流程):作为流程的顶层抽象,管理整个数据处理流程的生命周期。每个 Pipeline 包含多个 Node 和 Edge
-
Node(节点):ETL 处理的最小执行单元,采用组件化设计。每个节点都是一个独立的处理器,封装了特定的数据处理逻辑。节点的属性包括执行优先级、超时时间、失败处理策略等。系统支持多种类型的节点,如数据抽取节点、转换节点、加载节点等。
- Edge(边):定义节点之间的数据流转关系。
1.2 核心功能实现
1.2.1 流程编排与存储
流程编排采用分层存储策略,将流程定义、节点配置、边关系分别存储,通过关联关系维护流程的完整性。系统使用事务机制确保数据一致性,当流程保存时,会在一个事务中完成以下操作:
- 保存流程基本信息,包括名称、描述、调度策略等
- 保存节点信息,包括节点类型、配置参数、执行策略等
- 保存边的信息,记录节点间的连接关系
1.2.2 DAG 校验机制
系统实现了严格的 DAG 校验机制,确保流程图中不存在环,避免死循环执行。校验过程采用深度优先搜索算法,主要包括以下步骤:
- 构建邻接表:将边的信息转换为邻接表形式,便于图的遍历
- 初始化访问状态:使用 Map 记录节点的访问状态
- 深度优先搜索:从每个入度为 0 的节点开始,进行深度优先遍历
- 环检测:通过维护访问栈,检测是否存在回路
1.2.3 节点执行顺序确定
系统采用多维度的节点排序策略,确保最优的执行顺序:
- 依赖关系优先:根据 DAG 的拓扑结构确定基础执行顺序
- 权重排序:节点可以设置权重,权重高的节点优先执行
1.2.4 节点执行机制
节点执行采用插件化设计,每种类型的节点都是一个单独的执行组件,便于修改维护和后期扩展,执行过程包含以下阶段:
- 参数校验:验证节点配置的完整性和合法性
- 任务执行:调用相应的执行器执行任务
- 结果处理:处理执行结果,进行数据流转
1.2.5 数据流转实现
系统支持多种数据流转方式:
- 直接传递:小数据量直接通过内存传递
- 消息队列:实时流数据通过消息队列传递
1.3 执行记录追踪
系统实现了完整的执行记录追踪机制,包括:
- 执行状态记录:详细记录每个节点的执行状态、开始时间、结束时间等
- 日志管理:采用分级日志策略,支持节点级别和流程级别的日志记录
- 性能指标采集:记录执行时间、资源消耗等性能指标
- 异常信息追踪:详细记录异常堆栈,便于问题定位
资产总览
本次更新添加了资产总览页面,可以帮助用户更加直观的查看数据资产的相关统计信息,比如资产分类统计,资产增长趋势,热门资源 top5 等
操作手册
本次更新提供了系统的详细操作手册,精确到按钮级别,可以帮助用户更好的理解和使用系统,手册目录,
结语
本次更新内容到这里就结束了,ETL已初步可用,后面会陆续开放各种组件的使用,这需要时间去开发,大家耐心等待即可,感兴趣的朋友也可以尝试自己二开扩展,节点组件采用的是工厂模式管理,二次扩展十分方便。平台也会对现有的功能进行不断迭代优化,努力让产品变得更加健壮,好用。
下个版本预计更新内容如下:
- 添加多种 ETL 组件支持,满足数据的个性化处理
- 优化数据集成和数据开发,完善相关操作步骤
- API 接入支持
- 文件接入支持
- 添加审计日志
争取下个版本能在4月底之前跟大家见面。
目前源码,部署指南,讲解视频等相关资料是付费加入知识星球获取的,对于目前实现的功能来说,这个价格可以说是非常便宜了,再次感谢大家的关注与支持,现在 AI 技术十分火爆,平台后期也准备接入 AI 大模型,构建本地知识库,帮助用户更好得处理和使用数据。
感兴趣的朋友请关注公众号 螺旋编程极客 加入星球,我们一起成长,一起进步。