在传统设计理念下,流程图的可视化、作业流的定义设计功能,随着作业量增加,越来越难用,越来越不适用是一个难以避免的问题。就这两个问题,我给大家分享一下TASKCTL是如何转变思路、如何突破、如何带来一些更理想的效果。同时,我也希望通过此次分享,带来一些抛砖引玉的效果,希望业界更多同仁,就批量调度技术更多的问题,敢于突破,使整个批量调度技术变得更完善、更易用。

第一部分:两大问题的再分析

在传统理念下,流程图可视化与作业流程定义方式不适用这两大问题,并不是孤立的,它们之间是相互影响,并相互恶化的。它们问题的核心都来源于一个共同的设计理念。

(一)传统作业依赖关系组织方式是两大问题的共同根源

传统作业依赖需求表

以上表格是传统方式对作业信息依赖关系组织的基本形态,作业之间的依赖关系采用属性记录的方式(有些调度设计不是前依赖,而是采用子作业后依赖方式,但本质是一样的)。这种方式,每条作业信息记录都是独立平等的,其中依赖关系只是每个作业的一个属性。我们认为,这种基本信息组织理念,对于小规模的作业信息组织影响不大,但对于大规模作业信息组织,就会影响到流程图展示,作业设计方式的适用性问题。

(二)对作业设计方式的影响:对话框方式不如Excel方式

(1)对话框方式不如Excel方式的原因

首先,是对作业设计方式的影响。从信息组织的记录特征出发,我们很容易想到对话属性框的设计方式。通过每个属性框的输入,完成作业各种属性信息的定义。但当我们面临大量作业信息的编辑时,很快就会发现对话框还不如直接编辑Excel。在Excel中,无论对更多信息的查看、编辑、拷贝、粘贴,都比对话框方便得多。

也许,你会说,我用的不是对话框方式,而是图形拖拽方式设计,很直观的。但实际上,拖拽编辑的直观是表面现象,背后依然是繁琐的对话框方式。这也是很多专业的调度软件,在实际使用场景中,宁愿选择 Excel方式主要原因之一。使用拖拽,可能只有两种情况,一是新手,二是唯一的设计方式(比如ETL工具),你没有更良好的选择。

(2)Excel带来的新问题

如果我们只关注编辑管理效率,相比对话框方式,Excel显然得到很大提升。但Excel的作业设计方式,又带来以下两个难以避免的问题:

第一个问题:脱机方式,与系统不能实时互动。我们采用了excel方式,单从编辑的角度,是提高不少效率。但Excel毕竟是第三方软件,不能与你的系统实时互动,它不能真实理解你每个属性的含义,不能实时检验你的信息,比如重复性,合法性。这一切,可能只有在导入的时候才知道。这些需求需求,你可能说,我可以通过二次开发Excel完成。没错,你可以做到。但我只想说,早知如此,何必当初,你又何必在调度软件里费那么大的力气,设计相应的对话框作业定义功能呢?

第二个问题:作业关系梳理很麻烦。采用excel,由于是脱机的方式,在excel中,我们很难实时直观的知道作业之间的关系,这对于作业间的依赖关系设计、修改,都变得非常困难。

(3)如果Excel方式是好的选择,那我们就应该多点匠心,多点优化。

虽然Excel有以上两个问题,但客观上,它的编辑管理效率比单纯的对话框方式,要高出很多。既然这样,我们为什么不多点匠心,将excel平面表格的方式集成到调度软件当中,这至少会使用户体验度,得到大幅度的提升。

(三)对流程图可视化的影响:线条大量交叉、排版混乱使流程图缺失直观性

(1)关系的自由组织,客观上难以避免凌乱的关系

由于作业之间的依赖关系,采用属性定义的方式,使你可自由定义作业间的多个依赖关系,但随着作业数的增多,你就很难控制这些关系的实际形状。一张蜘蛛网似的关系图,可能就此诞生了。

(2)人工编辑图形,同样难以避免凌乱的关系线条

为了避免凌乱的线条,你可能会想到图形编辑方式。毕竟在图形的向导下,可避免一些复杂的线条。但随着作业数的增多,首先是编辑变得异常困难,其次是在增删改的过程当中,线条的重构,重新排版带来的工作量也是你难以想象。也许,你会想到自动排版,但这种没规则的关系,在作业数多的情况下,其效果可能比你想象的还要糟糕许多。

(四)两个问题相互影响,相互恶化

总之,在这种信息组织理念下,如果采用图形拖拽,对话框方式,也许会减少很多凌乱的线条,使关系变得清晰一些,但这种方式又带来巨大的编辑工作量。如果采用Excel方式以提高编辑工作效率,那一定会给你带来难以接受的关系图。这两种矛盾,在目前设计理念下,是难以协调的。

第二部分:TASKCTL的突破

在TASKCTL理念框架下,不论作业数多少,作业间的关系线条,始终是无交叉、清晰、直观的,而且还没有图形编辑的繁琐。在IDE环境下,设计再多的作业,也比Excel似的设计,更为快捷、更为高效。而TASKCTL这些突破性的变化,更为理想的效果,主要是因两大理念的转换所带来的。

(一)作业依赖关系组织理念突破

(1)从自由组织理念到结构化组织理念

传统作业间的关系信息组织是自由的,但在TASKCTL中是结构化的,通过串并组的方式组织作业之间的依赖并行关系。

一个传统表达方式:

传统作业流需求表

同样的关系在TASKCTL中的表达方式:

TASKCTL批量作业XML文件设计界面截图

(2)TASKCTL流程图本质上是一张有序无环图

TASKCTL采用这种串并组结构化组织,本质上就不可能具备交叉现象,是一张有序无环图。以下是一张TASKCTL流程图示例。

TASKCTL有序五环图作业流展示截图

(3)TASKCTL对有序无环图缺陷的弥补

对于有序无环图这种图形关系表达理念,在大数据领域比较普遍。无论是底层基于资源的任务调度逻辑,还是OOZIE(一款大数据领域的作业流调度工具)业务工作流调度逻辑,都是采用有序无环的关系表达理念。但同时,我们也要知道,这种逻辑管理组织理念,有一种缺陷,就是无法做到一些交叉关系表达。比如以下关系:

作业设计需求流图示意图

在有序无环图表达理念中,上图C到D的关系是无法表达的。不过在TASKCTL,这种关系特殊的处理,可以通过LEAN(强制依赖)以及事件方式进行相应处理。LEAN属性与传统方式理念是一样的,可自由组织依赖关系。只是在TASKCTL中,这种传统方式只是基于串行结构化依赖的一种补充。

在任何一门计算机语言当中,可能都有类似GOTO这样的语句,实现一些灵活的关系跳转。但我们都知道,为了增强信息的可管理型、可读性,尽量采用结构化语句编写,而GOTO,尽量避免。在TASKCTL中,LEAN就像GOTO一样,作业关系我们尽量用结构化串并组嵌套方式表达,而LEAN这种灵活的表达方式,还是少用为好。

(二)作业整体信息组织理念的突破

(1)从单纯记录信息到结构化,规则化的“代码”信息

在传统作业信息组织方式下,是以每个作业为一个独立的设计单位,而在TASKCTL中,是以一个结构或多个结构为设计单位;传统的焦点是每个作业个体,而TASKCTL更倾向于一个更大的整体。TASKCTL站在一个整体特征的角度,设计了相应的规则,并以XML格式进行表达。实际上,TASKCTL的设计信息更像具有一定语法规则的代码,并引入了很多代码语法理念,比如if语句、各种函数、属性继承、重载以及自由注释等。

TASKCTL作业批量开发XML代码截图

(2)从配置理念到开发理念

传统作业信息组织是记录式表达,而TASKCTL是用具有一定语法规则的结构化代码来表达。记录采用配置概念,而代码显然采用开发概念。传统为了方便记录的配置,设计了相应的对话框;而TASKCTL,为了方便文本代码的开发,设计了相应的IDE环境。

传统方式,之所以更愿意选择Excel对更多记录的配置,其核心原因是Excel是一个平面文件。相比一个个对话框,平面文件更便于信息浏览、查看、编辑。而TASKCTL信息本身就采用格式代码的方式,本身就是一个平面文件。IDE设计的目的,只是为了更好的管理、设计开发TASKCTL的代码文件。

如果站在另一个纬度,传统Excel方式配置和TASKCTL代码方式开发,都是为了产出一个有规则的文件的话,一个是采用普通文件编辑器编辑,而另一个是采用针对这种规则设计的特殊编辑器(IDE)进行编辑。

TASKCTL作业设计IDE截图

我们知道,JAVA程序的设计,是可以直接通过简单的记事本来完成,但我们还是要采用更强大的eclipes进行开发设计,中间的差距,不言而喻。

ETL作业调度工具TASKCTL的两个重大突破的更多相关文章

  1. ETL作业调度工具TASKCTL软件安装乱码问题解决

    前两天在安装批量作业调度软件TASKCTL4.5时,将安装介质解压出来后执行安装脚本时,一安装就出现下图乱码. 然后就度娘了一下,发现安装遇到乱码的人还挺多的,大多数解答都说TASKCTL软件里面很多 ...

  2. 推荐:国产etl调度工具Taskctl web应用版,0元永久授权

    写在前面 2020年疫情席卷全球,更是对整个市场经济造成了严重影响,年初疫情肆虐,西方世界单方面的科技.经济封锁,国际关系吃紧.....导致很多中小型企业业务链受阻,大型企业经费资金吃紧,轮班制导致公 ...

  3. 开源作业调度工具实现开源的Datax、Sqoop、Kettle等ETL工具的作业批量自动化调度

    1.阿里开源软件:DataX DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.ODPS.HBase.FTP等各种异构数据源之间稳 ...

  4. 10万级etl批量作业自动化调度工具Taskctl之轻量级Web应用版

    什么是批量作业: 批量处理是银行业整个信息后台最为重要的技术形态,也是银行核心信息资产数据的分享.传输.演化的重要技术手段.有调查指出,全球70%的数据是经过批量处理得以再次使用,可见批量处理在整个信 ...

  5. 大数据测试之ETL测试工具和面试常见的问题及答案

    转载自: http://www.51testing.com/html/87/n-3722487.html 概述 商业信息和数据对于任何一个企业而言都是至关重要的.现在很多公司都投入了大量的人力.资金和 ...

  6. R语言作为BI中ETL的工具

    R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...

  7. 调度工具taskctl跨调度服务依赖实现

    调度工具taskctl虽然支持分布式调度,但是有的时候,不同重要程度的调度服务还是要区分开来,在区分开后,不同调度服务之间怎么实现依赖啦, 其实有很多方式,比如写文件,写数据库之类的,这些都可以根据用 ...

  8. 微信web开发者工具同时打开两个小程序项目

    在写小程序时,想要一边参考别人的Demo一边做,但是微信web开发者工具无法同时开两个实例,怎么办? 单个软件实例来回切换打开的项目太麻烦,一种办法是同时下载[微信web开发者工具]和[微信web开发 ...

  9. 主流ETL(Extract-Transform-Load)工具选型,Kettle Spoon、Datastage、Powercenter介绍

    参考:三大主流ETL工具选型 ETL工具 Kettle Spoon 开源ETL工具,所以免费,用java开发的. Ascential公司的Datastage(在2005年被IBM收购现在是 IBM 的 ...

随机推荐

  1. 我的IT开源之路

    我开通博客这么久也从没有写过什么,那时只是喜欢看别人的技术博客,然后转发到我的私人空间有空时候读一读.这几年下来,我关注了有几百个博客.公众号.头条号.新浪微博等等,里面有无数的好文章.但是,一直也没 ...

  2. [leetcode-567-Permutation in String]

    Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...

  3. JAVA基础——Arrays工具类十大常用方法

    Arrays工具类十大常用方法 原文链接:http://blog.csdn.net/renfufei/article/details/16829457 0. 声明数组 String[] aArray ...

  4. 8.Smarty的条件判断语句的写法

    {if $newObj eq 'a'} welcome a {elseif $a eq 'b'} welcome b {else} welcome others {/if}

  5. Struts2之初识篇(一)——与struts的区别和基本配置

    Struts2资源下载地址: Struts官方地址:http://struts.apache.org/ 我这里下载了struts2的最新版本struts2-2.5.10.1-all.所有内容如下图: ...

  6. Redis事务原理分析

    Redis事务原理分析 基本应用 在Redis的事务里面,采用的是乐观锁,主要是为了提高性能,减少客户端的等待.由几个命令构成:WATCH, UNWATCH, MULTI, EXEC, DISCARD ...

  7. 第2篇:用as3.0制作一个滚动条组件

    本实例演示了实现一个滚动条基本功能的制作方法,没有添加改变皮肤,修改滚动条视框大小等功能,有兴趣的朋友可根据自己要求自行添加.使用时只需要通过以下一行代码创建滚动条组件: var myScrollba ...

  8. java 关键字final

    一.最终的意思,可以修饰类,方法,变量.特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量.二.面试相关: 1.局部变量基本类型 值不能发生改变 例如: ...

  9. java定时任务的实现方式

    在本文里,我会给大家介绍2种不同的实现方法:1.普通thread实现2.ScheduledExecutorService实现 一:实现普通的thread: 首先是创建thread然后就是一直让whil ...

  10. Unity Shader入门教程(一)

    参考文献:http://www.360doc.com/content/13/0923/15/12282510_316492286.shtml Unity Shader是着色器,将纹理.网格信息输入,得 ...