从零开始画自己的DAG作业依赖图(一)--前期准备

这篇具有很好参考价值的文章主要介绍了从零开始画自己的DAG作业依赖图(一)--前期准备。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:

由于业务场景需要展示作业之间的依赖关系,由于一些开源的插件和当前的业务逻辑有一些冲突,个人打算尝试从零开始,一点点实现自己的DAG图。同时用博客记录自己实现过程和总结,不正确的地方,欢迎指正提升。

场景分析:

  1. 数据开发中常常有作业之间的依赖,在执行作业的时候,可能会出现有些作业失败,或者重试,这时候,运维或者开发的人,需要有一个很直观的图去展示作业之间的依赖,这时候DAG 依赖流程图就是一个很好的展现形式。
  2. 大数据场景下,可能会出现很多节点,甚至可能达到上千,甚至上万的节点,节点之间的边有可能也会很多,大的数据下,图的渲染时间需要考虑在内
  3. 用户有可能在看了图之后,想直接重跑或者查看某个节点的上下游节点,等等运维操作
  4. 用户可能需要图拖动某个算子,点击某个算子,复制某些算子的名称等一些操作

实现目标:

基于以上客户的要求,我们大致明确要实现目标和需求,梳理如下

  1. 用图的方式展示作业之间的依赖,基本能力要达到
  2. 图要能够支撑大数据场景,在很多节点下
    • 节点之间布局清晰
    • 节点的之间的连线不要重叠,少交叉
    • 图能够支持缩放,拖动
    • 图中节点支持拖动
  3. 图要支持运维能力
    • 悬浮某个节点 ,展示该节点的上下游,能够区分上下游节点
    • 选中某个节点,以及支持选中某个节点全部上游或者下游节点
    • 右键可以定制化业务操作,例如作业实例的重跑,停止
    • 作业名称支持复制
    • 选中具体某个节点可以展示该节点的信息面板
  4. 优化提升
    • 提供鸟瞰图的功能,保证大数据下可以查找节点
    • 提供搜索功能,能够精准在图上定位出要找的作业

交互设计稿:

基于以上目标,设计稿大致如下

从零开始画自己的DAG作业依赖图(一)--前期准备

技术选型:

一般的DAG,就两种方式,一种是canvas实现,另外一种就是svg,由于svg 对于事件处理比较简单,但是性能会差一些,后续如果svg 性能搞不定,可以使用canvas优化,新手,所以这里我选择了svg。用了svg.js,这个开源的插件,封装了一些简单的svg 函数,可以减少部分工作量。

实现过程概览:

个人打算分一下几个方面,逐步实现。

  1. 规划,背景,交互设计方案,技术选型
  2. 节点的分层布局算法
  3. 节点之间的线条路径
  4. 图上运维--右键,选中,节点复制等
  5. 图上事件--缩放,平移,节点拖动等
  6. 后期优化--纵向排列优化
  7. 后期优化--鸟瞰图以及搜索框及其他
  8. 后期优化--大数据节点优化

基本工作已经准备完了,接下来开搞!

本文由华为云发布。文章来源地址https://www.toymoban.com/news/detail-446482.html

到了这里,关于从零开始画自己的DAG作业依赖图(一)--前期准备的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零开始 Spring Boot 38:Lombok 与依赖注入

    图源:简书 (jianshu.com) 在之前的文章中,我详细介绍了 Lombok 的用法,考虑到在 Spring 中使用依赖注入(DI)是如此的频繁,因此有必要讨论使用 Lombok 时可能对依赖注入造成的影响。 我们都知道,Spring 中的依赖注入分为三种情况: 通过属性进行依赖注入。 通过构造器进行依

    2024年02月08日
    浏览(57)
  • 从零开始快速构建自己的Flink应用

    本文介绍如何在 mac 下快速构建属于自己的 Flink 应用。 在 mac 上使用homebrew安装 flink: 查看安装的位置: 进入安装目录,启动 flink 集群: 进入 web 页面:http://localhost:8081/ 基于模板直接构建一个项目: 在项目的 DataStreamJob 类实现如下计数的功能: 在上面的例子中,我们使用

    2024年02月20日
    浏览(41)
  • 搭建openstack前期准备

    使用准备好的centos7.5.1804的版本镜像搭建两台主机,大致配置如下 安装好centos后先关闭防火墙:  配置本地hosts配置: 然后分别把centos7.5的镜像和iaas2.4的镜像挂载上传到/opt/目录下,并配置好yum源:    然后安装ftp 并配置好compute结点的yum: controller和compute安装先电的包:      然后开

    2024年02月14日
    浏览(28)
  • LeetCode 刷题记录——从零开始记录自己一些不会的

    1. 最多可以摧毁的敌人城堡数目 题意 思路 两层循环,太low了 用一个变量记录前一个位置 代码 2. 到达终点的数字 题意 思路 代码 3. 单词的压缩编码 题意 思路 代码 思路2 去找到是否不同的单词具有相同的后缀,我们可以将其反序之后插入字典树中。例如,我们有 “time”

    2024年02月09日
    浏览(51)
  • MetaGPT前期准备与快速上手

    大家好,MetaGPT 是基于大型语言模型(LLMs)的多智能体协作框架,GitHub star数量已经达到31.3k+。 接下来我们聊一下快速上手 一、环境搭建 python 环境最好是 3.9 1.python 环境 利用 anaconda 创建 python3.9 的虚拟环境 2. MetaGpt 下载 也可以采取以下方式 二、MetaGPT配置 1.调用 ChatGPT API

    2024年01月22日
    浏览(30)
  • IOS逆向前期环境准备笔记

    ios系统由于效验问题,只能升级不能降级,需要特别注意, 刷系统可以在爱思上搞定; 越狱推荐使用u盘镜像及本地启动盘制作: 注意,要进去bios,关闭安全启动,不然直接失败: Checkra1n镜像:https://share.weiyun.com/kr63NENg 其他工具:https://blog.6ziz.com/jailbreakdownload 参考教程:

    2024年02月11日
    浏览(30)
  • 构建自己的ChatGPT:从零开始构建个性化语言模型

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月15日
    浏览(31)
  • 一篇SEO指南:新手如何从零开始优化自己的网站

    在如今的数字时代,拥有一个优化良好的网站对于任何企业或个人来说都是至关重要的。但是,对于SEO新手来说,如何从零开始优化自己的网站可能是一项看似艰巨的任务。在本文中,我们将为您提供一份SEO指南,帮助您了解从零开始优化自己的网站的过程。 确定您的目标关

    2024年02月02日
    浏览(93)
  • 使用 Git&GitHub 的前期准备

    本节包含 SSh Key 的设置,从 GitHub 上创建一个仓库,并 clone 到本地,然后对其进行更改,提交,同步到仓库。需要已经下载好了 Git ,并且已经创建了一个 GitHub 账户 1.1 创建 SSH Key 运行这条命令,然后直接敲两次回车就可以。第一次回车是将 SSH 密匙存放在默认的路径下,第

    2024年01月20日
    浏览(29)
  • 【UE Sequencer系列】01-前期准备

    新建一个工程 在虚幻商城中将我们需要的三种资产导入到新建的工程中 打开工程可以看到导入的资产 新建两个文件夹,一个用来存放音频,一个用来存放所有的Sequencer 导入音频(只支持wav格式) 选中声波,创建一个sound cue 打开“Forge”关卡 改变视口布局 第一个视口选择“

    2023年04月09日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包