基于DAG模型的血缘管理平台

1 篇文章 0 订阅
1 篇文章 0 订阅

背景

● 公司数据源多种多样,互相依赖也多,全靠文档(文档搜索能力极差)以及大脑记忆
● 强依赖经验(老员工),对新人极度不友好
● 不知道本部门的数据走向 下游有哪些数据引用,比如 ogg/redis/es/mq/数据同步任务等

以上问题,导致发版时经常遗漏脚本(比如mysql新增了字段 es或者oracle表没有加等)

基于以上原因,决定做一个系统,将所有数据源以及数据流向进行维护,方便查看血缘关系,但是苦于无人理解这个项目要做什么,以及要怎么做,导致没人支持去做,也就意味着没有对应的开发资源给我

最后决定自己去做一个,做出来了,如果觉得还行,再进行推广;反之,就当是自己学习的一个项目

技术选型

前面也提到了,没有人支持,以及对应的开发资源给我,但是本人又非常想尝试一下,决定前后端自己做(java后端开发,不会前端,海豚的前端还是有些深度的)

之前一直有在了解dolphinscheduler(海豚调度)项目,看过一部分源码,并且在阿里云搭建过集群,将其中一部分功能用到之前做过的项目中(比如基于mysql的注册中心/调度/DAG等等)

在想做这个项目之前,就决定参考dolphinscheduler(海豚调度)的任务形式去做,前端可拖拽,并且形成DAG图 ,可以使数据流向一目了然,也是我认为最适合的方式

该项目非常依赖前端,前端体验差,也就意味着没人愿意用

最后决定前后端都参考dolphinscheduler的架构,进行开发

前端

  • vite
  • vue3
  • jsx
  • AntV X6(图编辑)
  • echarts
  • naive-ui
  • pinia
  • vue-router
  • axios
  • typescript

海豚调度的前端确实很有深度,看懂还是有点困难的,特别是没做过前端的,但是结构设计很不错,我很喜欢,扩展性很强

后端

  • jdk17(新项目采用17先做出基础功能,后续准备尝试jdk21)
  • springBoot(单体架构足够)
  • mybatis/mybaits-plus

规划

采用海豚调度的架构,先做第一版

首页

汇总维护的信息 进行数据资产/血缘大盘展示

安全中心

维护租户/用户/告警组等基础信息

监控中心

  • 监控服务器/数据库指标信息
  • 审计日志

数据源中心

  • 维护数据源信息(mysql/oracle等)
  • 可以根据源信息 获取数据库schema信息
  • 进行后续的字段级展示/探测/分析/

项目管理

  • 以项目为维度进行维护(一个部门可以是一个或多个项目,只有管理员可以创建项目(防止维护的到处都是,不知道采用哪一个))
  • 创建血缘基本信息
  • DAG图展示/图谱展示

血缘探测

  • 探测所有项目维护的信息,进行探测,分析
  • 未维护的信息 比如触发器/存储过程等
  • 告警

DBMS管理

为什么希望有DBMS功能?

  • 每次都需要开发手写DDL语句,繁琐 浪费时间 规范不统一,比如强制要求有创建时间,创建人等字段以及注释
  • 测试环境创建完脚本后 可能N天/N月后才会发布到生产,目前是开发自己记录脚本信息(记事本/语雀/飞书文档等)
  • 手动记录,血缘系统无法自动感知到数据变更

虽然99.99%的概率会被老板否决,但是还是决定做一个,自己尝试一下,自己用,用来记录自己开发的脚本,减少自己漏发脚本可能导致的生产事故

SQL血缘解析(还没考虑好要不要做)

可以先看下下面的开源项目
SQLLineage
在这里插入图片描述

● sqlflow
在这里插入图片描述

openAPI

● 对外提供查询接口 输入目标表 ,返回所有依赖的任务 发布时校验脚本
● …

演示

采用海豚调度的架构

在这里插入图片描述

创建节点

mysql

在这里插入图片描述

oracle

在这里插入图片描述

redis

在这里插入图片描述

es

在这里插入图片描述

其他

  • 触发器
  • 存储过程
  • link
  • clickhouse
  • doris
  • spark
  • flink
  • cdc
  • http
  • shell
  • 数据同步任务(datax/sqoop/seatunnel)
  • xxlJob
  • kafka
  • rabbitmq
    ● …

总结

主要希望解决公司数据资产维护以及数据血缘问题,当然最后大概率成为自己学习的一个项目

Apache DolphinScheduler是一个新一代分布式大数据工作流任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,整个数据处理开箱即用”。它以 DAG(有向无环图) 的方式将任务连接起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill任务等操作。目前已经有像IBM、腾讯、美团、360等400多家公司生产上使用。 调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinSchedulerDolphinScheduler 的定位是大数据工作流调度。通过把大数据和工作流做了重点标注. 从而可以知道DolphinScheduler的定位是针对于大数据体系。 DolphinScheduler是非常强大的大数据调度工具,有以下一些特点:1、通过拖拽以DAG 图的方式将 Task 按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态;2、支持丰富的任务类型;3、支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill 任务等操作;4、支持工作流全局参数及节点自定义参数设置;5、支持集群HA,通过 Zookeeper实现 Master 集群和 Worker 集群去中心化;6、支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计;7、支持补数,并行或串行回填数据。课程会带大家构建DolphinScheduler大数据调度平台,实战讲解多种任务调度配置,会基于案例讲解DolphinScheduler使用,让大家在实战中掌握DolphinScheduler。 DolphinScheduler 发展很快 很多公司调度都切换到了DolphinScheduler,掌握DolphinScheduler调度使用势在必行,抓住新技术机遇,为跳巢涨薪做好准备。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值