CN114035925A - 一种工作流调度方法、装置、设备及可读存储介质 - Google Patents
一种工作流调度方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114035925A CN114035925A CN202111400990.4A CN202111400990A CN114035925A CN 114035925 A CN114035925 A CN 114035925A CN 202111400990 A CN202111400990 A CN 202111400990A CN 114035925 A CN114035925 A CN 114035925A
- Authority
- CN
- China
- Prior art keywords
- task
- scheduling
- workflow
- instance
- configuration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种工作流调度方法,该方法将工作流类作业调度由直接配置工作流转为配置任务,单独创建编写任务以及调度配置,触发机制可以根据实际使用需要在调度配置中进行自定义设置,不再拘泥于上一节点完成后触发;而且该方法任务计划和实例工作流隔离,只有当任务计划被调度时,才会创建一个相对独立的实例工作流开始执行,可以根据各个任务的自定义调度配置创建任务依赖组装成任务计划,工作流配置灵活;在进行任务变更时可以直接针对变更的节点任务进行调整,任务变更灵活,因此该方法可以实现灵活的任务配置以及任务变更。本发明还公开了一种工作流调度装置、设备及可读存储介质,具有相应的技术效果。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种工作流调度方法、装置、设备及可读存储介质。
背景技术
在大数据环境下,对于数据的加工往往会分为多个甚至成百上千个任务进行处理,而多个任务之间又存在并行、依赖的关系,因而调度系统就成为了大数据开发不可缺少的一个组成部分。
目前的工作流类作业调度系统在技术上已经相对成熟,已有较多的调度系统,比如oozie,azkaban,DolphinScheduler等。其中,oozie通过xml定义工作流配置,azkaban通过job文件创建工作流,DolphinScheduler通过拖拽将任务关联形成工作流,三者都是以特定的方式构建工作流,配置固化;同时三者对任务节点的变更很不方便,都需要将工作流删除后根据变更后的节点添加完整工作流,无法灵活变更任务计划;而且三者都是在工作流中第一个节点触发执行后,其余的后续节点都是由上一节点的实例状态触发执行,依赖和实例执行的触发机制单一,缺少很多依赖触发机制。比如:长短周期的依赖(例如小时周期的任务依赖天周期的任务,或者相反),依赖范围的触发判定(例如依赖上一节点最近一周的实例状态)等等。
综上所述,如何实现灵活的任务配置以及任务变更,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种工作流调度方法、装置、设备及可读存储介质,以实现简单灵活的任务配置以及任务变更。
为解决上述技术问题,本发明提供如下技术方案:
一种工作流调度方法,包括:
接收到用户发起的任务创建请求后,确定用户编写的任务以及所述任务对应的调度配置,将所述任务以及所述调度配置存储至数据库中;其中,所述调度配置包括所述任务的调起条件以及依赖配置;
监听所述数据库,将达到调起条件的任务作为目标任务,将所述目标任务的依赖配置作为目标依赖配置;
根据所述目标依赖配置创建所述目标任务对应的任务实例以及实例依赖,生成实例工作流存储至执行消息队列中;
确定所述执行消息队列的工作流执行状态,并判断所述工作流执行状态是否满足所述实例依赖;
若满足,执行所述任务实例。
可选地,在所述监听所述数据库之前,还包括:
根据任务场景确定调度方式;
若所述调度方式为例行调度,执行所述监听所述数据库的步骤;
若所述调度方式为部分调度,确定指定的待调度任务,创建所述待调度任务对应的任务实例;判断是否为回溯调度;若非所述回溯调度,将所述任务实例存储至执行消息队列中,并执行所述确定所述执行消息队列的工作流执行状态的步骤;若为所述回溯调度,将所述任务实例存储至回溯消息队列中,确定所述回溯消息队列的工作流执行状态,执行所述判断所述工作流执行状态是否满足所述实例依赖的步骤;
若所述调度方式为单次调度,判断是否检测依赖;若检测依赖,执行所述监听所述数据库的步骤;若非检测依赖,执行所述创建所述待调度任务对应的任务实例的步骤;
所述调度方式为回溯调度,执行所述判断是否检测依赖的步骤。
可选地,在所述根据任务场景确定调度方式之后,还包括:
将所述任务存放至所述调度方式对应的队列进行存放和调度。
可选地,所述执行所述任务实例,包括:
检测所述任务实例是否为重复请求;
若是重复请求,进行重复告警;
若非重复请求,创建所述任务实例的任务类型对应的执行文件;
执行所述执行文件,并采集执行日志;
在所述执行文件执行结束后,获取执行结果,并更新实例状态。
可选地,所述确定用户编写的任务以及所述任务对应的调度配置,包括:
接收用户指定的任务类型;
匹配所述任务类型对应的任务编写模板,并输出所述任务编写模板;
接收所述用户基于所述任务编写模板填写的任务内容,生成任务。
可选地,在所述确定用户编写的任务以及所述任务对应的调度配置之前,还包括:
对所述用户进行权限验证。
可选地,所述监听所述数据库,包括:
调用空闲例行监听服务逐一查询各所述任务,并添加查询锁。
一种工作流调度装置,包括:
任务接收单元,用于接收到用户发起的任务创建请求后,确定用户编写的任务以及所述任务对应的调度配置,将所述任务以及所述调度配置存储至数据库中;其中,所述调度配置包括所述任务的调起条件以及依赖配置;
任务监听单元,用于监听所述数据库,将达到调起条件的任务作为目标任务,将所述目标任务的依赖配置作为目标依赖配置;
实例创建单元,用于根据所述目标依赖配置创建所述目标任务对应的任务实例以及实例依赖,生成实例工作流存储至执行消息队列中;
执行判断单元,用于确定所述执行消息队列的工作流执行状态,并判断所述工作流执行状态是否满足所述实例依赖;若满足,触发实例执行单元;
所述实例执行单元,用于执行所述任务实例。
一种计算机设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述工作流调度方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述工作流调度方法的步骤。
本发明实施例所提供的方法,将工作流类作业调度由直接配置工作流转为配置任务,任务都是单独创建编写,每个任务单独进行调度配置,触发机制可以根据实际使用需要在调度配置中进行自定义设置,不再拘泥于上一节点完成后触发,任务节点的依赖配置灵活;而且该方法中没有固定在某个特定工作流的工作流节点,任务计划和实例工作流隔离,只有当任务计划被调度时,才会创建一个相对独立的实例工作流开始执行,可以根据各个任务的自定义调度配置灵活创建任务依赖组装成任务计划,一个任务可以同时成为多个不同任务计划的节点,工作流配置灵活;在进行任务变更时可以直接针对变更的节点任务进行调整,无需对整个工作流进行整体编辑,任务变更灵活。因此该方法可以实现灵活的任务配置以及任务变更。
相应地,本发明实施例还提供了与上述工作流调度方法相对应的工作流调度装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种工作流调度方法的实施流程图;
图2为本发明实施例中一种例行配置示意图;
图3为本发明实施例中一种资源依赖示意图;
图4为本发明实施例中一种通过redis实现分布式锁示意图;
图5为本发明实施例中一种多调度配置实现示意图;
图6为本发明实施例中一种采用RBAC模型进行权限控制示意图;
图7为本发明实施例中一种实例执行示意图;
图8为本发明实施例中一种异常告警示意图;
图9为本发明实施例中一种工作流调度装置的结构示意图;
图10为本发明实施例中另一种工作流调度装置的连接示意图;
图11为本发明实施例中一种计算机设备的结构示意图。
具体实施方式
本发明的核心是提供一种工作流调度方法,可以实现简单灵活的任务配置以及任务变更。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为保障大数据环境下工作流(是将一组节点组织起来以完成某个过程的概括描述,定义了节点的触发顺序和触发条件)的顺利运作,调度系统就成为了大数据开发不可缺少的一个组成部分,目前常见的调度系统有oozie,azkaban,DolphinScheduler,本申请中仅以上述三种调度系统为例进行现有调度方式的介绍,其他调度系统在此不再赘述。
其中,oozie是基于工作流的开源调度系统,当前托管在Apache基金会。与Hadoop(一个由Apache基金会所开发的分布式系统基础架构)生态圈结合紧密,通过xml语言定义任务配置,将xml语言转换为mapreduce进行程序执行,技术相对成熟。
azkaban是由Linkedin开源的一个批量工作流任务调度器,该调度器要求用户以job文件形式描述任务间的依赖关系,通过嵌套的形式创建工作流。提供简洁的UI界面,DAG依赖关系比较直观。
DolphinScheduler是中国易观公司开源的一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,通过拖拽以DAG图的方式将任务的依赖关系关联起来,可实时监控任务运行状态。
三个调度系统中,oozie通过xml定义工作流配置,azkaban通过job文件创建工作流,DolphinScheduler通过拖拽将任务关联形成工作流,可见,三者都是以特定的方式构建工作流,配置固化;同时三者对任务节点的变更很不方便,都需要将工作流删除后根据变更后的节点添加完整工作流,无法灵活变更任务计划;而且三者都是在工作流中第一个节点触发执行后,其余的后续节点都是由上一节点的实例状态触发执行,依赖和实例执行的触发机制单一,缺少很多依赖触发机制。比如:长短周期的依赖(例如小时周期的任务依赖天周期的任务,或者相反),依赖范围的触发判定(例如依赖上一节点最近一周的实例状态)等等。
基于此,本申请提出了一种工作流调度方法,该方法支持简单便捷的任务配置,可灵活的变更任务计划,自由搭配构建工作流;同时支持灵活的依赖触发机制和丰富的调度策略来满足不同业务场景,可以保证任务高效执行。
请参考图1,图1为本发明实施例中一种工作流调度方法的流程图,该方法包括以下步骤:
S101、接收到用户发起的任务创建请求后,确定用户编写的任务以及任务对应的调度配置,将任务以及调度配置存储至数据库中;
任务在实施例中相当于工作流管理的基础节点单元,展示在用户面前就是创建编写的每一个代码以及相关的信息配置。本申请中将工作流的调度从直接创建工作流转为创建任务,从工作流粒度转为任务粒度,通过对任务进行依赖配置将任务串成工作流。
接收到用户发起的任务创建请求后,提供任务编写界面,以便于用户在任务编写界面进行实时任务编写,编写的每一个任务相当于任务计划中一个单节点。除了必要的任务功能代码编写,想要实现更复杂的调度场景,需要对任务进行调度配置。调度配置指用于满足不同调度场景的任务启动触发条件配置信息。
调度配置具体可以分为任务的调起条件以及依赖配置两部分。其中,任务的调起条件指任务的自动调度执行规则,比如达到某个时间或达到某种条件则自动开始调度任务,创建任务的实例(在本文中实例是基于任务所生成的一次执行对象,当任务被调度成功,则会生成一个实例,一个任务可产生多个实例)、实例依赖等。而依赖配置指执行任务实例的依赖条件,在达到依赖配置的条件后,执行任务的实例。也就是说任务在达到调起条件后,创建任务实例,形成工作流,在达到依赖配置的条件后,执行任务实例。
具体地,调起条件的配置具体可以配置为例行配置或者依赖配置等。
例行配置指按照预设规则自动反复调度执行的配置。选定开始结束时间和调度周期,调度周期可选用普通调度方式或cron表达式(一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,用来在约定的时间执行已经计划好的任务)的方式进行配置。开始结束时间必须比当前时间晚。例行开启后,任务会在开始时间创建一个实例开始调度,之后每隔一个调度周期都会创建一个实例开始调度,直到超过结束时间。此外可配置依赖上一周期实例,从第二个周期开始,创建当前实例后,再创建当前实例与上一周期实例的例行依赖关系,并存储在数据库中,当发现上一周期的实例状态还未达到终态(即最终状态。在本文中,执行实例有新建、运行中、等待、已提交、已完成、成功、失败、停止等状态,其中成功、失败、停止为终态),当前实例则会一直处于挂起(在本文中指实例处于等待中,不会被调度执行)状态,直到上一周期实例达到终态或当前实例达到任务调度最大时间,当前实例开始执行或失败停止。如图2所示为一种例行配置示意图。
依赖配置指依赖其他条件触发调度执行的配置。依赖配置可以包括资源依赖和任务依赖。其中,任务依赖可选择依赖多个任务,对每个依赖的上游任务都可选择检测最近一次实例或检测一周期实例。检测最近一次实例表示当前任务创建实例时会查询上游任务一个周期内最近执行的一次实例,并创建实例依赖存储在数据库中。检测一周期实例则表示当前任务创建实例时会查询上游任务一个周期内所有执行过的实例,并创建实例依赖存储在数据库中,其中,一周期代表的是当前任务或上游任务中配置的最大例行周期。选择依赖任务后,可以将任务依赖关系存储在数据库中,供创建实例时查询并组装实例工作流。
资源依赖可选择依赖多种不同资源,比如hive(基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载)表或hadoop集群文件,选择或填写后,会将资源依赖关系存储在数据库中,当任务实例调度时,会对资源进行检测,如图3所示为一种资源依赖示意图。
依赖配置具体可以参照调起条件,可以为资源依赖、任务依赖、时间依赖等,比如在资源条件达到某个设定值之后执行实例,或者在某个任务实例完成后执行该实例,或者在达到某个设定的时间后执行该实例等,可以参照上述的配置方式,在此不再赘述。
当然,除了上述调起条件和依赖配置之外,任务的调度配置中还可以包括其他配置信息,比如一些用于满足其他任务执行需求的通用配置。例如任务使用的参数、任务是否失败重试、任务的超时时间、告警配置、结果处理等。本实施例中对于任务的调度配置中具体包括的可配置项不做限定,可以根据实际任务调度需要进行相应的配置,在此不再赘述。
S102、监听数据库,将达到调起条件的任务作为目标任务,将目标任务的依赖配置作为目标依赖配置;
在任务创建完成后,查询数据库中是否存在达到调起条件的例行任务。查询到任务后,触发步骤S103创建实例和实例依赖,任务被调起。
对于数据库的监听,为保证一个任务在同一时间下有且只有一个例行监听服务去读取,可以调用空闲例行监听服务逐一查询各任务,并添加查询锁,比如如图4所示通过redis实现分布式锁,以避免其他服务同时读取,当然,也可以不进行上述设置,在此不做限定。
S103、根据目标依赖配置创建目标任务对应的任务实例以及实例依赖,生成实例工作流存储至执行消息队列中;
任务在被调起时,先检测数据库中存储的依赖配置,根据依赖配置创建实例和实例依赖,生成实例工作流存储至执行消息队列中。其中,创建实例的过程可以参照现有的实现方式,在此不再赘述。灵活创建任务依赖组装成任务计划,一个任务可以同时成为多个不同任务计划的节点。任务计划和实例工作流隔离,只有当任务计划被调度时,才会创建一个相对独立的实例工作流开始执行。
实例工作流存储至执行消息队列中,存储在执行流程中的任务实例id,通过分布式的任务调度模块消费和放入,即维护了工作流的执行顺序,又起到一定限流作用,保证服务稳定性。而对于执行消息队列具体选用的队列类型,本实施例中不做限定,比如可以选用kafka(一种高吞吐量的分布式发布订阅消息系统,消息在传输过程中保存消息的容器,可简称为kafka消息队列)消息队列等,在此不再赘述。
本实施例中将任务配置和实例信息分开独立存储,任务计划和实例工作流也分开存储,修改任务、任务计划和实例工作流都是相对独立的,不会互相造成影响,保证工作流配置的灵活性。任务计划和实例工作流都支持界面化展示和操作,保证整体工作流的全局掌控性。
S104、确定执行消息队列的工作流执行状态,并判断工作流执行状态是否满足实例依赖;若满足,触发S105;
当任务创建实例后,任务调度模块会根据任务所处的工作流节点判断前置任务的实例执行状态,前置资源是否存在,有限资源是否充足,选择不同的调度策略,将实例状态选择挂起或开始执行。
S105、执行任务实例。
若执行状态不满足实例依赖,本实施例中对于该种情况不做限定,可以立即重复轮询,也可以在等待一定时长后进行判断,可以根据实际使用需要进行相应设定,在此不再赘述。
基于上述介绍,本发明实施例所提供的技术方案,将工作流类作业调度由直接配置工作流转为配置任务,任务都是单独创建编写,每个任务单独进行调度配置,触发机制可以根据实际使用需要在调度配置中进行自定义设置,不再拘泥于上一节点完成后触发,任务节点的依赖配置灵活;而且该方法中没有固定在某个特定工作流的工作流节点,任务计划和实例工作流隔离,只有当任务计划被调度时,才会创建一个相对独立的实例工作流开始执行,可以根据各个任务的自定义调度配置灵活创建任务依赖组装成任务计划,一个任务可以同时成为多个不同任务计划的节点,工作流配置灵活;在进行任务变更时可以直接针对变更的节点任务进行调整,无需对整个工作流进行整体编辑,任务变更灵活。因此该方法可以实现灵活的任务配置以及任务变更。
需要说明的是,基于上述实施例,本发明实施例还提供了相应的改进方案。在优选/改进实施例中涉及与上述实施例中相同步骤或相应步骤之间可相互参考,相应的有益效果也可相互参照,在本文的优选/改进实施例中不再一一赘述。
不同的业务场景有不同的调度策略,上述实施例主要介绍了一种例行调度的实现方式,为满足不同业务场景的调度需求,在进行例行调度监听数据库之前,可以进一步执行以下步骤,如图5所示:
(1)根据任务场景确定调度方式;
(2)若调度方式为例行调度,执行监听数据库的步骤;
在本文中,例行是一种调度方式,选择一个区间的时间和周期值,定期的对任务发起调度。这个区间只能是从当前时间开始。配置例行后通过时间触发调度该任务,检测数据库存储的依赖配置,情况和单次调度类似,只不过不能通过配置只创建实例,不创建实例依赖。
(3)若调度方式为部分调度,确定指定的待调度任务,创建待调度任务对应的任务实例;判断是否为回溯调度;若非回溯调度,将任务实例存储至执行消息队列中,并执行确定执行消息队列的工作流执行状态的步骤;若为回溯调度,将任务实例存储至回溯消息队列中,确定回溯消息队列的工作流执行状态,执行判断工作流执行状态是否满足实例依赖的步骤;
部分调度,选中部分代码开始调度,只创建实例不创建实例依赖,相当于单节点直接执行,一般在代码测试阶段使用。
(4)若调度方式为单次调度,判断是否检测依赖;若检测依赖,执行监听数据库的步骤;若非检测依赖,执行创建待调度任务对应的任务实例的步骤;
单次调度,手动触发调度该任务,会检测数据库中存储的依赖配置,创建实例和实例依赖,若上游依赖的实例状态为失败或上游依赖资源检测异常则当前任务实例也直接失败,若配置自动重试则会重试三次。若上游依赖资源检测不存在则任务重试检测,直至实例超时停止或检测通过实例开始执行。可通过配置在创建实例时不检测依赖配置,相当于单节点直接执行。
(5)调度方式为回溯调度,执行判断是否检测依赖的步骤。
在本文中,回溯是一种调度方式,选择一个区间的时间和周期值,对任务发起调度。这个区间可以是过去,也可以是未来,没有特殊限制。回溯调度下手动选定某段时间和回溯周期开始调度任务,创建实例和实例依赖和单次调度一致。不同点是,回溯调度是特殊的任务场景,调度时间范围广,不追求实时性,所以采用不同的kafka消息队列进行流量控制,针对每个用户、每种任务类型都划分不同的调度队列,保证服务稳定性。回溯任务开始调度时,先判断回溯场景总体队列限制,如果当前总体队列已满,则任务挂起。否则继续判断用户自定义队列限制,如果自定义队列限制已满,则任务挂起。否则继续判断该任务类型队列限制,如果该任务类型队列限制已满,则继续判断其他任务的共享队列限制是否已满,如果已满则任务挂起。否则任务继续向下调度。
另外,本实施例中针对不同调度方式发起的任务可以采用不同队列进行存放和调度。上述介绍中仅针对特殊的回溯场景采用数据库模拟多个队列来进行限流控制,其他调度方式可以参照回溯场景进行相应队列的设置,在此不做限定。通过提供丰富的调度策略和灵活的依赖触发机制,在有限的资源里,即保证了高优任务的实时性,也保证了服务的稳定性,有助于解决任务过载问题。
本实施例中主要介绍了一种根据不同的任务场景(单次、例行、回溯、部分)进行相应的调度的实现方式,当然,不同的任务类型以及调度需求,可以适应性的调整相应的调度策略,比如可以根据任务类型设置相应的调度策略(例如hive任务在本地调度执行,脚本任务采用远程调度执行),可以根据任务的资源消耗设置相应的调度策略(例如区分高低优调度队列,资源消耗大、任务设计不合理的选择低优队列调度执行),可以根据任务的依赖条件设置相应的调度策略(例如可以分为任务依赖和资源依赖,不同的依赖场景采用不同的校验方式进行调度执行)等,均可参照本实施例的设置,在此不再赘述。
在上述实施例的基础上,为保障工作流调度配置的安全性,在接收到用户发起的任务创建请求后,在确定用户编写的任务以及任务对应的调度配置之前,可以进一步执行对用户进行权限(指用户可以访问资源的权限,包括但不限于页面资源的访问权限,操作权限,数据权限)验证的步骤。
对不同的用户访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。具体的权限验证的验证项本实施例中不做限定,可以针对用户进行包括用户身份权限,页面访问权限,资源操作权限等项目的验证,比如通过页面资源访问/操作权限认证的用户才可进行后续操作,具体可以根据实际安全性校验需要进行相应设定。
另外,本实施例中对于权限验证的实现方式也不做限定,可以参照相关技术中权限验证的方式,比如可以采用RBAC(Role-Based Access Control,基于角色的访问控制)模型进行权限控制,如图6。用户A属于用户组(具有相同属性的一群用户,可以归为一个用户组,用户组可拥有多个角色,也起到一个桥梁作用,连接用户和权限的关系)A,用户组A只拥有权限1,所以用户A只有权限1。用户B属于用户组B,虽然用户组B只拥有权限2,但用户B又拥有角色C,所以用户B拥有权限1和权限2。用户C虽然只拥有角色C,但角色C有权限1和权限2,所以用户C拥有权限1和权限2。本实施例中仅以上述权限验证的实现方式为例,其他验证方式均可参照上述介绍,在此不再赘述。
上述实施例中对于任务实例的执行过程不做限定,为保障实例的顺利有序运行,本实施例中提出一种执行方式,则上述实施例中执行任务实例的步骤具体可以按如下具体步骤执行:
(1)检测任务实例是否为重复请求;
(2)若是重复请求,进行重复告警;
(3)若非重复请求,创建任务实例的任务类型对应的执行文件;
(4)执行执行文件,并采集执行日志;
(5)在执行文件执行结束后,获取执行结果,并更新实例状态。
本实施例中提出的任务执行过程,执行器接收由任务调度器发起的执行实例请求,首先检测该执行实例是否是重复请求,若不是重复请求则开始根据实例所属的不同类型创建执行文件,开始执行后采集日志。当实例执行结束后,有结果数据的对执行结果进行抽样(又称取样。在本文中,是针对一个实例的执行结果中抽取部分数据,展示出来)和数据导出,请求任务调度器告知该实例执行的最终状态,如图7所示。该方式可以避免重复请求对于整体工作流效率以及稳定性带来的影响,同时可以保障任务执行过程中的其他错误有据可查,提升维护效率。
此外,在实例执行过程中,可以进一步通过监控任务实例的状态,判断因网络等问题导致服务内部出现的异常进行修复和告警,具体地,对以上几个步骤进行监控,针对系统异常、调度异常、执行异常等异常情况的捕获,流量负载、内存资源等监控日志的采集,监控告警模块根据不同的监控内容,监控的重要级别,使用不同的告警方式向不同的人员告警。如图8。当然,也可以不进行上述设置,在此不做限定。
上述实施例中对于任务的编写实现方式不做限定,为提升任务编写的智能化程度,降低用户任务编写难度,可选地,一种确定用户编写的任务以及任务对应的调度配置的执行方式具体可以按照以下步骤实现:
(1)接收用户指定的任务类型;
(2)匹配任务类型对应的任务编写模板,并输出任务编写模板;
(3)接收用户基于任务编写模板填写的任务内容,生成任务。
任务编写,用户根据需求选择不同类型的任务模板进行任务编写,针对不同类型的任务有不同的任务模板供用户编写,可实时编写,实时调度执行,支持协同并行编写。
提供任务模板给用户后,用户可以直接在模板上进行相应的任务编写,从而降低用户侧任务编写难度,提升任务编写效率,提升用户体验。
相应于上面的方法实施例,本发明实施例还提供了一种工作流调度装置,下文描述的工作流调度装置与上文描述的工作流调度方法可相互对应参照。
参见图9所示,该装置包括以下模块:
任务接收单元110主要用于接收到用户发起的任务创建请求后,确定用户编写的任务以及任务对应的调度配置,将任务以及调度配置存储至数据库中;其中,调度配置包括任务的调起条件以及依赖配置;
任务监听单元120主要用于监听数据库,将达到调起条件的任务作为目标任务,将目标任务的依赖配置作为目标依赖配置;
实例创建单元130主要用于根据目标依赖配置创建目标任务对应的任务实例以及实例依赖,生成实例工作流存储至执行消息队列中;
执行判断单元140主要用于确定执行消息队列的工作流执行状态,并判断工作流执行状态是否满足实例依赖;若满足,触发实例执行单元;
实例执行单元150主要用于执行任务实例。
为保证工作流调度的全面有效以及可靠性,在上述单元的基础上,为进一步丰富其调度功能,保障系统稳定性,如图10所示为本实施例中提出的另一种工作流调度装置的连接示意图,该装置中主要包括的模块如下所示:
权限管理模块:对不同的用户访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。包括用户身份权限,页面访问权限,资源操作权限等。
任务配置模块:针对不同类型的任务有不同的任务模板供用户编写,支持协同并行编写。编写的每一个任务相当于任务计划中一个单节点。
例行监听模块:通过对进行过例行配置的任务进行监听,来实时触发任务的实例创建。
任务调度模块:当任务创建实例后,任务调度模块会根据任务所处的工作流节点判断前置任务的实例执行状态,前置资源是否存在,有限资源是否充足,选择不同的调度策略,将实例状态选择挂起或开始执行。
任务执行模块:任务实例在任务执行模块开始执行,并进行日志采集,结果抽样,任务执行结束时通过回调更新任务状态。
监控告警模块:任务实例在调度和执行过程中,可能因各种问题导致实例异常,监控告警模块来监控实例的异常运行。
数据管理模块:包括kafka消息队列、redis DB、mysql DB、文件等数据管理。kafka消息队列存储在执行流程中的任务实例ID,通过分布式的任务调度模块消费和放入,即维护了工作流的执行顺序,又起到一定限流作用,保证服务稳定性。redis DB加锁实现分布式事务,保证实例状态一致性。mysql DB存储任务配置信息,任务实例执行信息。文件用来存放执行实例的调度脚本和实例执行成功后产出的数据。
容错补偿模块:通过监控任务实例的状态,判断因网络等问题导致服务内部出现的异常进行修复和告警。
上述模块中以功能作为单元的划分方式,通过权限控制、容错不长、性能监控等多方面保障了系统的稳定运行。
进一步地,任务调度模块中配置的调度策略具体可以包括:
(1)任务类型策略:根据任务类型的不同,区分不同的调度方式,例如hive任务在本地调度执行,脚本任务采用远程调度执行。
(2)任务场景策略:分为单次、例行、回溯、部分等执行场景,同一任务有不同的调度执行策略。
(3)资源消耗策略:区分高低优调度队列,资源消耗大、任务设计不合理的选择低优队列调度执行。
(4)依赖条件策略:分为任务依赖和资源依赖,不同的依赖场景采用不同的校验方式进行调度执行。
本实施例中仅以上述调度策略为例进行介绍,其他调度策略的配置下的模块设置均可参照本实施例的介绍,在此不再赘述。
相应于上面的方法实施例,本发明实施例还提供了一种计算机设备,下文描述的一种计算机设备与上文描述的一种工作流调度方法可相互对应参照。
该计算机设备包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述方法实施例的工作流调度方法的步骤。
具体的,请参考图11,为本实施例提供的一种计算机设备的具体结构示意图,该计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在计算机设备301上执行存储器332中的一系列指令操作。
计算机设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。
上文所描述的工作流调度方法中的步骤可以由计算机设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种工作流调度方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的工作流调度方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
Claims (10)
1.一种工作流调度方法,其特征在于,包括:
接收到用户发起的任务创建请求后,确定用户编写的任务以及所述任务对应的调度配置,将所述任务以及所述调度配置存储至数据库中;其中,所述调度配置包括所述任务的调起条件以及依赖配置;
监听所述数据库,将达到调起条件的任务作为目标任务,将所述目标任务的依赖配置作为目标依赖配置;
根据所述目标依赖配置创建所述目标任务对应的任务实例以及实例依赖,生成实例工作流存储至执行消息队列中;
确定所述执行消息队列的工作流执行状态,并判断所述工作流执行状态是否满足所述实例依赖;
若满足,执行所述任务实例。
2.根据权利要求1所述的工作流调度方法,其特征在于,在所述监听所述数据库之前,还包括:
根据任务场景确定调度方式;
若所述调度方式为例行调度,执行所述监听所述数据库的步骤;
若所述调度方式为部分调度,确定指定的待调度任务,创建所述待调度任务对应的任务实例;判断是否为回溯调度;若非所述回溯调度,将所述任务实例存储至执行消息队列中,并执行所述确定所述执行消息队列的工作流执行状态的步骤;若为所述回溯调度,将所述任务实例存储至回溯消息队列中,确定所述回溯消息队列的工作流执行状态,执行所述判断所述工作流执行状态是否满足所述实例依赖的步骤;
若所述调度方式为单次调度,判断是否检测依赖;若检测依赖,执行所述监听所述数据库的步骤;若非检测依赖,执行所述创建所述待调度任务对应的任务实例的步骤;
所述调度方式为回溯调度,执行所述判断是否检测依赖的步骤。
3.根据权利要求2所述的工作流调度方法,其特征在于,在所述根据任务场景确定调度方式之后,还包括:
将所述任务存放至所述调度方式对应的队列进行存放和调度。
4.根据权利要求1所述的工作流调度方法,其特征在于,所述执行所述任务实例,包括:
检测所述任务实例是否为重复请求;
若是重复请求,进行重复告警;
若非重复请求,创建所述任务实例的任务类型对应的执行文件;
执行所述执行文件,并采集执行日志;
在所述执行文件执行结束后,获取执行结果,并更新实例状态。
5.根据权利要求1所述的工作流调度方法,其特征在于,所述确定用户编写的任务以及所述任务对应的调度配置,包括:
接收用户指定的任务类型;
匹配所述任务类型对应的任务编写模板,并输出所述任务编写模板;
接收所述用户基于所述任务编写模板填写的任务内容,生成任务。
6.根据权利要求1所述的工作流调度方法,其特征在于,在所述确定用户编写的任务以及所述任务对应的调度配置之前,还包括:
对所述用户进行权限验证。
7.根据权利要求1所述的工作流调度方法,其特征在于,所述监听所述数据库,包括:
调用空闲例行监听服务逐一查询各所述任务,并添加查询锁。
8.一种工作流调度装置,其特征在于,包括:
任务接收单元,用于接收到用户发起的任务创建请求后,确定用户编写的任务以及所述任务对应的调度配置,将所述任务以及所述调度配置存储至数据库中;其中,所述调度配置包括所述任务的调起条件以及依赖配置;
任务监听单元,用于监听所述数据库,将达到调起条件的任务作为目标任务,将所述目标任务的依赖配置作为目标依赖配置;
实例创建单元,用于根据所述目标依赖配置创建所述目标任务对应的任务实例以及实例依赖,生成实例工作流存储至执行消息队列中;
执行判断单元,用于确定所述执行消息队列的工作流执行状态,并判断所述工作流执行状态是否满足所述实例依赖;若满足,触发实例执行单元;
所述实例执行单元,用于执行所述任务实例。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述工作流调度方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述工作流调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111400990.4A CN114035925A (zh) | 2021-11-19 | 2021-11-19 | 一种工作流调度方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111400990.4A CN114035925A (zh) | 2021-11-19 | 2021-11-19 | 一种工作流调度方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114035925A true CN114035925A (zh) | 2022-02-11 |
Family
ID=80145375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111400990.4A Pending CN114035925A (zh) | 2021-11-19 | 2021-11-19 | 一种工作流调度方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114035925A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579012A (zh) * | 2022-03-03 | 2022-06-03 | 北京天智鲲鹏技术有限公司 | 一种跨应用的工作流程编排及调度方法 |
CN116882716A (zh) * | 2023-09-08 | 2023-10-13 | 长城证券股份有限公司 | 任务调度方法、设备及存储介质 |
TWI821033B (zh) * | 2022-10-26 | 2023-11-01 | 大陸商鼎捷軟件股份有限公司 | 關聯資料自動處理系統以及關聯資料自動處理方法 |
CN117311950A (zh) * | 2023-11-28 | 2023-12-29 | 宁德时代新能源科技股份有限公司 | 任务处理方法、任务处理装置、电子设备及存储介质 |
-
2021
- 2021-11-19 CN CN202111400990.4A patent/CN114035925A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114579012A (zh) * | 2022-03-03 | 2022-06-03 | 北京天智鲲鹏技术有限公司 | 一种跨应用的工作流程编排及调度方法 |
CN114579012B (zh) * | 2022-03-03 | 2024-03-29 | 北京天智鲲鹏技术有限公司 | 一种跨应用的工作流程编排及调度方法 |
TWI821033B (zh) * | 2022-10-26 | 2023-11-01 | 大陸商鼎捷軟件股份有限公司 | 關聯資料自動處理系統以及關聯資料自動處理方法 |
CN116882716A (zh) * | 2023-09-08 | 2023-10-13 | 长城证券股份有限公司 | 任务调度方法、设备及存储介质 |
CN116882716B (zh) * | 2023-09-08 | 2024-03-08 | 长城证券股份有限公司 | 任务调度方法、设备及存储介质 |
CN117311950A (zh) * | 2023-11-28 | 2023-12-29 | 宁德时代新能源科技股份有限公司 | 任务处理方法、任务处理装置、电子设备及存储介质 |
CN117311950B (zh) * | 2023-11-28 | 2024-04-26 | 宁德时代新能源科技股份有限公司 | 任务处理方法、任务处理装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114035925A (zh) | 一种工作流调度方法、装置、设备及可读存储介质 | |
CN110069335A (zh) | 任务处理系统、方法、计算机设备和存储介质 | |
CN111400011B (zh) | 一种实时任务调度方法、系统、设备及可读存储介质 | |
CN113434158B (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
US20120215583A1 (en) | System and method for managing real-time batch workflows | |
CN110611707B (zh) | 一种任务调度的方法及装置 | |
CN110569090A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN105095329B (zh) | 一种人口数据校核方法 | |
CN109902028A (zh) | Acl特性的自动化测试方法、装置、设备及存储介质 | |
CN115525406A (zh) | 一种分布式异步任务调度系统 | |
CN111552771A (zh) | 一种用于电力系统的安全合规策略创建及管理系统 | |
CN112379989B (zh) | 一种定时任务进程与队列服务进程管理系统及方法 | |
CN113687927A (zh) | Flume任务调度配置方法、装置、设备及存储介质 | |
CN113672452A (zh) | 一种数据采集任务的运行监控方法、系统 | |
CN115016960B (zh) | 可配置的rpa机器人全流程信息通知处理方法及系统 | |
CN111277425B (zh) | 集中化数据传输管理的装置 | |
CN116362213A (zh) | 用于生成报表文件的方法、装置、处理器及存储介质 | |
CN115114275A (zh) | 一种数据采集方法、设备及介质 | |
WO2021036987A1 (zh) | 一种实现运维监控的方法及装置 | |
CN112306862A (zh) | 一种前端自动化测试系统及方法、存储介质、计算设备 | |
CN111538491A (zh) | 数据事件处理方法、装置、设备和存储介质 | |
KR102621742B1 (ko) | 노코드 기반 자동화 서비스 플랫폼을 이용한 자동화서비스 시스템과 그 방법 및 컴퓨터 프로그램 | |
KR102615011B1 (ko) | 공급망 관리에 관한 작업 흐름을 제어하는 플랫폼을 제공하는 전자 장치, 그 방법, 및 프로그램이 기록된 비일시적 컴퓨터 판독 가능 기록 매체 | |
KR102668325B1 (ko) | 인터페이스 관리 방법, 인터페이스 거버넌스 시스템, 및 인터페이스를 관리하는, 컴퓨터로 실행가능한 프로그램을 저장하는 저장매체 | |
JP7417159B2 (ja) | 情報処理装置、情報処理方法、およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |