0.0.15 • Published 4 years ago

@czwcode/graph-core v0.0.15

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

运行点作为触发点的时候,怎么保证过去作用域的内容还能执行到

优化运行逻辑

当前已经有了运行状态,并且指定了作用域,当该次任务运行到一个阶段后,触发了另外一个任务 4种触发任务类型

  • 运行任务的点
  • 完全重复
  • 运行任务的上游点
    • 将要运行的点与触发点要触发任务重复
  • 运行任务的下游点
    • 运行点全部重复
  • 运行任务的无关点
    • 两个图之间没有关系,各自运行

多图获取

  • 入参
    • 运行的点,以及运行的作用域
    • 当前触发的点,以及当前触发的作用域
  • 出参
    • 获取多图

多图合并,生成最小图

  • 清理重复节点
  • 构成一个新图
  • 获取图的运行路径

用图的方式,来维护任务之间关系

用 DAG(有向无环图) 来描述任务之间的依赖关系,是一个比较常见的调度依赖实现方式。 For example, suppose you have a list of tasks where some tasks have to wait on others before they can begin. You can model this using an acyclic directed graph:

  • 环检测
  • 状态管理(任务失败 && 任务Pending)
    • 获取从起点 到 终点间经历的所有点
  • 任务依赖管理
    • 所有的任务都应该在依赖的任务完成之后才执行
  • 任务流合并
    • 运行时的图 是 全局图的子图,临时任务图将会和运行图进行合并,合并完,将以最新的子图,完成所有任务
    • 任务触发,通过作用域全选子图,并通过触发点,在子图寻找将要运行的路径上所有的点
  • 任务取消(性能优化)
    • 当任务流还在进行时,新的任务流触发了,将会取消所有在新的任务流中将被触发的任务,从而避免任务的重复执行
  • 任务中断
    • 当任务正在执行时,有新的任务节点触发了,将会中断所有在新的任务流中将被触发的任务
  • 任务失败 & 任务重试
    • 当任务失败后,将会终止所有后续的任务,并提供从当前任务节点的信息,当前错误的任务链,用户可以进行重试
  • 多任务链,并行执行
    • 多个任务链,当没有任务依赖的时候,将会并发执行

报表中,我最关注什么

作为一个常年奋斗在撸报表一线的开发人员,业务同学最关注的是啥?页面好看?动画酷炫?不,是数据,数据,数据的准确性(重要的事情说三遍)

就我的经验而言,业务同学对数据容忍度为 错误提示 > 空数据 > 错误数据。

总结下来就是,你要么给出正确的数据,要么干脆就别给我,不然我那种错误数据分析了一轮又一轮,还得到一个错误的结论,最后告诉我数据是错的?

作为前端,分析可能让页面数据错误的原因

  • 后端数据错误 请清空数据, 并给出错误提醒, 不然我会以为这是我这次查询到的
  • 竞态问题
    • 连续请求,返回数据的时序问题
    • 筛选错误,没有阻断,没有提醒,导致拿着不符合预期的筛选条件去请求

另外一个比较验证的问题就是页面的性能问题了,通常数据报表的数据量都会比较大

  • 如何保证最小的渲染次数
  • 如何渲染最少的数据量(虚拟滚动)

糟糕的页面表现?

大多数的页面糟糕都是由于 竞态问题导致的

  • 比如筛选切换的时候,第一次请求比第二次请求回来的更晚?
    • 大多数情况不会出现?简单的场景,当后端做了请求缓存,我第二次请求命中的是缓存,就很可能发生这样的问题
  • 当你再一小段时间内进行多次筛选的操作,你的数据请求还可控吗?
  • 请求失败之后,用户没有体感?我用了错误的数据分析了半天?
  • 请求失败之后,怎样重试?
0.0.15

4 years ago

0.0.14

4 years ago

0.0.12

4 years ago

0.0.13

4 years ago

0.0.10

4 years ago

0.0.11

4 years ago

0.0.7

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago