当Dolphinscheduler 1.3.x中的工作流中的任务和任务关系和先前的工作流程以大的JSON方式保存到数据库中Process_definiton表的Process_definition_json字段时。JSON字段也很大。使用时,需要解析JSON,这非常昂贵,并且无法重复使用任务。基于大型JSON,工作流版本和任务版本没有良好的实施计划,否则它将导致大量数据冗余冗余冗余冗余冗余减少。
因此,社区计划启动了JSON拆卸项目,并实现了需求的需求:
这里
这里
这里
从以上三种情况下,我们知道控制器的输入参数的每个参数可以在t_ds_process_definition表中找到对应的,因此表中的数据如下所示,如下所示。
工作流只是DAG的一种形式。该任务是通过工作流程组织的。同时,组织之间有任务之间的关系,即依赖关系。就像绘画板一样,绘画板上有一些模式,工作流程是绘画板,模式是任务,以及之间的关系模式是依赖项。调度的核心是调度任务,依赖项只是调度的序列。目前,整个工作流程仍在解决。拆卸后,安排单个任务。它是基于此想法来设计拆卸的想法,因此需要三个表,工作流定义表,任务定义表和任务关系表。
基于此设计思想扩展到版本,它不过是这三个表,每个表都添加了日志表的新保留版本。
查看现有情况,现有字段(process_definition_name,desc,desc,conterns,connects)的“保存接口”日志,除任务外,JSON中仍然剩下。
因此,我们可以看到工作流定义表:
从表字段中可以看出,日志表仅具有两个字段,而不是主表操作员,aperate_time
在这种情况下,AB Workflow任务的JSON
dep_c工作流任务的JSON
preengation_teest Workflow任务的JSON
从情况下,我们可以知道,壳/依赖/条件类型节点的JSON组成(其他任务类似于Shell),并且在Pretasks徽标前依赖性。条件增强结构相对固定,并且依赖性结构是复杂的。依赖性和条件类型任务的因结构不相同。因此,为了统一,我们将条件恢复和总体取决于参数。
这样,我们确定了T_DS_TASK_DEFINITION表
注意:开发版本和版本1.3.6版本差异,开发版本已替换为DESC的描述,并添加了延迟时间
预处理徽标前依赖性节点,当前节点在关系表中使用后徽标。由于当前节点必须存在,并且前节点不一定存在,帖子不能为空,并且假erast可能为空。
复杂依赖的场景
社区将提供升级层,该层支持表数据根据新表结构过渡到存储,因此您可以直接部署DS2.0升级软件包,然后执行升级程序。未来,请继续关注。
作者:Zheng Caiyun大数据团队
关于作者:Li Jinyong,Zheng Caiyun数据平台建筑师,Apache Dolphinscheduler的核心贡献者,本文基于Apachecon Asia Asia 2021 Summit的Jinyong同学讲座