CN114880386A - 一种任务调度平台及任务调度方法 - Google Patents
一种任务调度平台及任务调度方法 Download PDFInfo
- Publication number
- CN114880386A CN114880386A CN202210354037.9A CN202210354037A CN114880386A CN 114880386 A CN114880386 A CN 114880386A CN 202210354037 A CN202210354037 A CN 202210354037A CN 114880386 A CN114880386 A CN 114880386A
- Authority
- CN
- China
- Prior art keywords
- job
- scheduling
- task
- service component
- data source
- 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.)
- Granted
Links
Images
Classifications
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种任务调度平台及任务调度方法,该平台包括:应用服务器,其上部署有调度服务组件,用于配置数据源,生成数据源的配置信息,数据源指向外部数据仓库;以及,向脚本容器发送调度指令;脚本容器,具体用于在获取数据源的配置信息后,为外部数据仓库建立连接池;启动连接池,并且创建全局map用来保存作业状态信息;在接收到调度指令启动被调度的作业后,所述作业使用连接池;配置库,用于存储任务调度平台有关的配置项信息。本发明实施例提供脚本容器,有利于统一管理内存和CPU资源。本发明提供的数据库连接池,有利于实现数据库连接持久化和池化,解决现有数据仓库ETL脚本在短时间内频繁连接数据库,对服务器造成较大压力的问题。
Description
技术领域
本发明属于数据仓库领域中ETL流程的调度工具,具体涉及一种任务调度平台及任务调度方法。
背景技术
目前所有的调度工具包括Informatica、datastage等都仅仅提供时钟和客户端监控功能,不能为ETL脚本提供容器,没有数据库连接池能力。数据库连接依赖于被调度的脚本自行管理。每启动一个ETL脚本就要至少启动一个进程。其中,ETL是英文Extract-Transform-Load的缩写,中名名称是抽取、转换、装载,其用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:现有数据仓库ETL脚本在短时间内频繁连接数据库,对服务器造成较大压力,同时导致ETL效率低下。
发明内容
有鉴于此,本发明实施例的目的在于提供一种任务调度平台及任务调度方法,以解决现有技术中的至少一个技术问题。
为达上述目的,第一方面,本发明实施例提供了一种任务调度平台,其包括:
应用服务器,所述应用服务器上部署有调度服务组件,用于配置数据源,生成数据源的配置信息,所述数据源指向外部数据仓库;以及,向脚本容器发送调度指令;
所述脚本容器,具体用于在获取所述数据源的配置信息后,为所述外部数据仓库建立连接池;启动所述连接池,并且创建全局map用来保存作业状态信息;以及,在接收到所述调度指令启动被调度的作业后,所述作业使用所述连接池;
配置库,用于存储任务调度平台有关的配置项信息。
在一些可能的实施方式中,所述调度服务组件,具体用于向所述脚本容器发送指示启动作业的第一调度指令;所述脚本容器,具体用于接收到所述第一调度指令,启动线程,分配数据库连接,调用对应的作业脚本,将作业的名称、线程ID、执行的状态和启动时间保存到所述全局map中,并且将作业状态信息返回给所述调度服务组件。
在一些可能的实施方式中,所述脚本容器,具体用于在作业完毕时,将所述全局map中已执行完毕的作业的状态更新为已完成状态,并将处于已完成状态的作业标识和作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述调度服务组件,具体用于向所述脚本容器发送指示查询作业状态的第二调度指令;
所述脚本容器,具体用于接收所述第二调度指令,根据所述第二调度指令中的作业标识从所述全局map中查询作业状态,并且将所述作业标识和所述作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述调度服务组件,具体用于向所述脚本容器发送指示结束作业的第三调度指令;
所述脚本容器,具体用于接收所述第三调度指令,从所述全局map中查询与所述第三调度指令相匹配的作业对应的线程ID,结束所述线程ID对应的线程,更新所述全局map中所述线程ID对应的作业状态,并且将当前作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述调度服务组件包括:用户管理模块,用于维护任务调度平台的用户权限;所述用户管理模块包括如下中的至少一个子模块:
用户查询子模块,用于检索确定当前任务调度平台上的用户信息;
用户授权子模块,用于为任务调度平台上的用户分别授予相应的功能权限;
启用/禁用用户子模块,用于启用或者禁用任务调度平台上的指定用户。
在一些可能的实施方式中,所述调度服务组件包括:调度参数管理模块,用来维护任务调度平台的运行参数,所述运行参数包括如下中的任意一个或多个:连接池最大连接数量、作业参数、作业并行数量。
在一些可能的实施方式中,所述调度服务组件包括:数据源管理模块,用于维护作业使用的数据源,所述维护作业使用的数据源包括:配置多个数据源,为任务的连接池确定相应的数据源。
在一些可能的实施方式中,所述的为任务的连接池确定相应的数据源,具体包括:为多个任务确定同一个数据源;或者,将多个数据源配置为被同一个任务使用;
根据数据库类型、数据库IP地址、端口号、用户名称、密码和数据库名称,确定连接池;当所述数据库类型、所述数据库IP地址、所述端口号、所述用户名称、所述密码和所述数据库名称这些要素都相同的情况下,确定为同一个数据源,为所述数据源创建一个连接池。
在一些可能的实施方式中,所述数据源管理模块包括如下中的至少一个子模块:
数据源管理子模块,用于管理当前任务调度平台能够提供的为外部数据仓库创建的一个或多个连接池,所述连接池的信息包括:数据库类型、数据库IP、端口、数据库名称和鉴权方式;
连接池管理子模块,用于管理连接池的大小,连接池的最小连接数,连接池的最大空闲连接数中的至少一个参数;
数据源测试子模块,用于测试所述数据源的连通性,当所述数据源能够连通时,指示所述脚本容器为能够连通的数据源建立连接池。
在一些可能的实施方式中,所述调度服务组件包括:调度配置管理模块,其包括如下中的至少一个子模块:
调度任务配置子模块,用于配置任务的基本信息、任务的开始执行时间、任务的执行频率中的任意一个或多个;
作业配置子模块,用于配置作业名称、每个作业执行的脚本、作业间的依赖关系中的任意一个或多个;
任务血缘管理子模块,用于根据配置的任务和作业间的依赖关系,解析调度任务的血缘关系。
在一些可能的实施方式中,所述解析调度任务的血缘关系,具体包括:确定任务血缘关系图。
在一些可能的实施方式中,所述任务血缘关系图包括有向无环图。
在一些可能的实施方式中,所述调度服务组件包括:调度任务管理模块,用于管理任务和/或作业的执行情况,其包括如下中的至少一个子模块:
任务/作业启动子模块,用于启动任务和/或作业;
任务/作业停止子模块,用于停止任务和/或作业;
任务/作业状态管理子模块,用于:
当多个作业全部结束时,确定所述多个作业对应的任务才能结束;
当任意一个作业为执行状态时,确定所述作业对应的任务处于执行状态;
当任意一个作业发生错误,则确定发生错误的作业对应的整个任务处于错误状态;
确定与被停止的作业具有关联性的其他作业,不再执行所述其他作业,并且控制与被停止的作业不具有关联性的作业处于执行状态。
在一些可能的实施方式中,所述调度服务组件包括:任务日志管理模块,用于查询和/或分析调度任务日志;所述任务日志管理模块包括如下中的至少一个子模块:
日志查询子模块,用于基于模糊查询和/或按照时间轴展示调度任务日志;
日志下载子模块,用于下载对应的调度任务日志文件;
统计分析子模块,用于展示任务和/或作业的运行状态。
在一些可能的实施方式中,所述脚本容器是采用python语言的脚本容器,所述脚本容器和所述配置库之间使用Python DB API来读取调度任务的配置信息,以及在所述配置库中保存调度任务的执行信息;
所述脚本容器与所述调度服务组件之间采用RESTful接口通讯;
所述调度服务组件的开发语言采用Java,所述调度服务组件与所述配置库之间采用JDBC进行连接。
在一些可能的实施方式中,所述配置项信息包括如下中的任意一项或多项:任务调度平台的用户、作业配置、作业执行情况、调度参数、作业使用的数据源;
所述脚本容器是一个HTTP服务,所述HTTP服务仅对调度服务组件开放访问,用于管理作业,作业是任务的元素,任务是作业的集合,管理作业其实就相当于是管理任务;所述配置库采用关系数据库,所述关系数据库包括:MySQL、MariaDB、PostgreSQ或者GBase8s。
第二方面,提供一种任务调度平台的任务调度方法,其包括:
调度服务组件配置数据源,生成数据源的配置信息,所述数据源指向外部数据仓库;以及,向脚本容器发送调度指令;
所述脚本容器在获取所述数据源的配置信息后,为所述外部数据仓库建立连接池;启动所述连接池,并且创建全局map用来保存作业状态信息;以及,在接收到所述调度指令启动被调度的作业后,所述作业使用所述连接池;
配置库存储任务调度平台有关的配置项信息。
在一些可能的实施方式中,所述调度服务组件向所述脚本容器发送指示启动作业的第一调度指令;
所述脚本容器接收到所述第一调度指令,启动线程,分配数据库连接,调用对应的作业脚本,将作业的名称、作业的线程ID、作业的执行的状态和作业的启动时间保存到所述全局map中,并且将作业状态信息返回给所述调度服务组件。
在一些可能的实施方式中,所述脚本容器在作业完毕时,将所述全局map中已执行完毕的作业的状态更新为已完成状态,并将处于已完成状态的作业标识和作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述调度服务组件向所述脚本容器发送指示查询作业状态的第二调度指令;
所述脚本容器接收所述第二调度指令,根据所述第二调度指令中的作业标识从所述全局map中查询作业状态,并且将所述作业标识和所述作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述调度服务组件向所述脚本容器发送指示结束作业的第三调度指令;
所述脚本容器接收所述第三调度指令,从所述全局map中查询与所述第三调度指令相匹配的作业对应的线程ID,结束所述线程ID对应的线程,更新所述全局map中所述线程ID对应的作业状态,并且将当前作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述的任务调度方法还包括:所述调度服务组件维护任务调度平台的用户权限,其包括如下中的任意一项或多项:
检索确定当前任务调度平台上的用户信息;
为任务调度平台上的用户分别授予相应的功能权限;
启用或者禁用任务调度平台上的指定用户。
在一些可能的实施方式中,所述的任务调度方法还包括:所述调度服务组件维护任务调度平台的运行参数,所述运行参数包括如下中的任意一个或多个:连接池最大连接数量、作业参数、作业并行数量。
在一些可能的实施方式中,所述的任务调度方法还包括:所述调度服务组件配置多个数据源,为任务的连接池确定相应的数据源。
在一些可能的实施方式中,所述调度服务组件配置多个数据源,为不同的任务的连接池指定不同的数据源,具体包括执行如下中的任意一项或多项:
管理当前任务调度平台能够提供的为外部数据仓库创建的至少一个连接池,所述连接池的信息包括:数据库类型、数据库IP、端口、数据库名称、鉴权方式;
管理连接池的大小,连接池的最小连接数,连接池的最大空闲连接数中的至少一个参数;
测试所述数据源的连通性,当所述数据源能够连通时,指示所述脚本容器为能够连通的数据源建立连接池。
在一些可能的实施方式中,所述的任务调度方法还包括:
所述调度服务组件执行如下至少一项操作:
配置任务的基本信息、任务的开始执行时间、任务的执行频率中的任意一个或多个;
配置作业名称、每个作业执行的脚本、作业间的依赖关系中的任意一个或多个;
根据配置的任务和作业间的依赖关系,解析调度任务的血缘关系。
在一些可能的实施方式中,所述的任务调度方法还包括:
所述调度服务组件执行如下至少一项操作:
启动任务和/或作业;
停止任务和/或作业;
当多个作业全部结束时,确定所述多个作业对应的任务才能结束;
当任意一个作业为执行状态时,确定所述作业对应的任务处于执行状态;
当任意一个作业发生错误,则确定发生错误的作业对应的整个任务处于错误状态;
确定与被停止的作业具有关联性的其他作业,不再执行所述其他作业,并且控制与被停止的作业不具有关联性的作业处于执行状态。
在一些可能的实施方式中,所述的任务调度方法还包括:
所述调度服务组件执行如下至少一项操作:
基于模糊查询和/或按照时间轴展示调度任务日志;
下载对应的调度任务日志文件;
展示任务和/或作业的运行状态。
第三方面,提供一种任务调度方法,其包括:
在获取数据源的配置信息后,为外部数据仓库建立连接池,所述数据源指向外部数据仓库;
启动所述连接池,并且创建全局map用来保存作业状态信息;以及,
在接收到调度服务组件发送的调度指令启动被调度的作业后,所述作业使用所述连接池。
在一些可能的实施方式中,所述的任务调度方法还包括:
接收所述调度服务组件发送的指示启动作业的第一调度指令;
根据所述第一调度指令,启动线程,分配数据库连接,调用对应的作业脚本,将作业的名称、作业的线程ID、作业的执行的状态和作业的启动时间保存到所述全局map中,并且将作业状态信息返回给所述调度服务组件。
在一些可能的实施方式中,所述的任务调度方法还包括:
在作业完毕时,将所述全局map中已执行完毕的作业的状态更新为已完成状态,并将处于已完成状态的作业标识和作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述的任务调度方法还包括:
接收所述调度服务组件发送的指示查询作业状态的第二调度指令;
根据所述第二调度指令中的作业标识从所述全局map中查询作业状态,并且将所述作业标识和所述作业状态反馈给所述调度服务组件。
在一些可能的实施方式中,所述的任务调度方法还包括:
接收所述调度服务组件发送的指示结束作业的第三调度指令;
根据所述第三调度指令,从所述全局map中查询与所述第三调度指令相匹配的作业对应的线程ID,结束所述线程ID对应的线程,更新所述全局map中所述线程ID对应的作业状态,并且将作业状态反馈给所述调度服务组件。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任意一种所述的任务调度方法。
第五方面,提供一种计算机设备,其包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如如上任意一种所述的任务调度方法。
上述技术方案具有如下有益效果:
本发明实施例提供一种任务调度平台,其包括:应用服务器,所述应用服务器上部署有调度服务组件,用于配置数据源,生成数据源的配置信息,所述数据源指向外部数据仓库;以及,向脚本容器发送调度指令;所述脚本容器,具体用于在获取所述数据源的配置信息后,为所述外部数据仓库建立连接池;启动所述连接池,并且创建全局map用来保存作业状态信息;以及,在接收到所述调度指令启动被调度的作业后,所述被调度的作业使用所述连接池;配置库,用于存储任务调度平台有关的配置项信息。本发明实施例提供脚本容器,有利于统一管理内存和CPU资源。本发明实施例提供的数据库连接池,有利于实现数据库连接持久化和池化,解决现有数据仓库ETL脚本在短时间内频繁连接数据库,对服务器造成较大压力,同时导致ETL效率低下的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的任务调度平台的整体架构示意图;
图2是本发明实施例的任务调度平台的技术架构示意图;
图3是本发明实施例的任务调度平台的功能架构示意图;
图4是本发明实施例的一种任务调度方法的流程图;
图5是本发明实施例的又一种任务调度方法的流程图;
图6是本发明实施例的一种计算机可读存储介质的功能框图;
图7是本发明实施例的一种计算机设备的功能框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明属于数据仓库领域中ETL(Extract-Transform-Load,抽取、转换、装载)流程的调度工具,用于确保数据仓库中数据正确流转。本发明实施例的一个目的在于,提供Python脚本容器,统一管理内存和CPU资源。本发明实施例的另一个目的在于,提供数据库连接池,实现数据库连接持久化和池化,解决现有数据仓库ETL脚本在短时间内频繁连接数据库,对服务器造成较大压力,同时导致ETL效率低下的问题。
实施例一
图1是本发明实施例的任务调度平台的整体架构示意图。如图1所示,图1中的用户权限管理应修改为用户管理,用户管理的主要内容是用户权限管理。
配置库的作用是存储任务调度平台有关的配置项信息,例如任务调度平台的用户、作业配置、作业执行情况、调度参数、作业使用的数据源等。后面文字描述的后端存储指的就是这个配置库。JDBC是指调度服务与配置库之间的联系,使用JDBC也就意味着调度服务开发语言采用Java,JDBC是Java语言提供的标准化的数据库连接接口。
由于调度工具是Python的脚本容器(使用Python开发),因此,脚本容器和配置库之间使用Python DB API 2.0连接来读取调度任务的配置信息,在配置库中保存调度任务的执行信息。具体地,所有任务、作业执行的过程性信息、结果信息都会在配置库里保存。Python DB API 2.0是Python语言连接数据库的通用标准接口,于2003年问世。使用这个标准接口是为了各类数据库接口的统一,目前市场上有部分国产数据库的Python接口不遵循这套标准,以致于造成应用集成适配困难。
外部数据仓库是调度工具调度的作业需要使用的外部数据库,连接池管理的是这个外部数据仓库的连接。如果不连接外部数据仓库,那么调度工具的连接池将无连接可用,不同的调度作业就要自行管理这些数据库连接,造成资源浪费,而这是目前市场上调度工具普遍存在的问题,也正是本发明实施例需要解决的问题。当然考虑到向后兼容的问题,不对外部数据仓库连接进行管理,允许调度作业自行管理连接也是可行的。
从软件工程实践来说,软件内部的功能模块应该内聚性强(high cohesion),耦合性低(low coupling)。因此应用系统在设计时尽量避免模块之间的耦合性,注重模块内部的内聚性。上述六个模块(用户管理模块、调度参数管理模块、数据源管理模块、调度参数配置管理模块、调度任务管理模块、任务日志管理模块)之间是不考虑联系的,各个功能模块的数据都写入配置库,通过JDBC从配置库存取数据,从而实现的软件工程的高内聚低耦合的要求。
图2是本发明实施例的技术架构示意图。如图2所示,调度系统采用B/S三层结构,区别于目前市场上主流的C/S结构的调度工具。前端页面,可以基于Vue、JavaScript、ajax、json、HTML5中的任意多个相结合的处理技术。应用服务,可以但不限于采用SpringBoot和Web服务(nginx/THS),应用开发语言可以采用Java,ORM框架可以采用MyBatis,脚本容器开发语言可以采用Python。后端存储(即图2中的数据存储)可以采用常见的MySQL、MariaDB(一种数据库管理系统)、PG(PostgreSQ是一种开源数据库)、Gbase8s等开源的关系数据库,也可以采用其他关系数据库,用于保存系统参数、调度配置和任务运行等信息。系统参数是指当前调度系统启动和执行必要的配置信息,例如登录用户信息等;调度配置包括任务的执行时间、依赖关系等;任务运行信息包括执行开始时间、结束时间、执行结果等。物理平台,可以包括数据库服务器、应用服务器和Web服务器。
如图1所示,用户通过浏览器访问调度系统,不需要用户额外安装软件。
如图2所示,前端页面接受用户请求,通过Web服务器(例如但不限于Nginx、THS等)转发动态请求数据到应用服务器。一般来说,调度系统即任务调度平台访问量不大时,Web服务器和应用服务器均可采取单机部署,在访问量增大的情况下,Web服务器和应用服务器均可采用集群部署。
如图1所示,脚本容器是一个HTTP服务应用,该HTTP服务仅对应用服务器开放访问,用来管理作业;作业是任务的元素,任务是作业的集合,管理作业其实就相当于是管理任务。脚本容器采用Python开发(其他语言难以实现python语言的脚本容器功能,就好比现在主流的Java容器例如tomcat、weblogic等都是用java开发一样),适应主流的ETL脚本采用Python开发的情况。pyhotn脚本容器也是一种应用服务器软件,部署在第二应用服务器上。脚本容器与第一应用服务器(调度服务是任务调度平台的一个组件,负责向脚本容器发送调度指令,由脚本容器执行这些调度指令。调度服务是第一应用服务器上部署的一个应用,以服务的形式运行)之间采用使用标准化的RESTful(Representational StateTransfer)接口通讯。该RESTful接口遵循HTTP协议。RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTful接口的优点设计简单、是开发语言无关性,只要关注接口数据结构就行,是目前主流的应用间访问接口。其他替代接口有webservice、rpc等方式。webservice效率低,接口设计复杂、部署复杂,需要特定组件支持,目前基本被边缘化了。Rpc稳定性不好,同样存在设计复杂的问题。可选地,脚本容器和调度服务在逻辑架构属于两个应用服务器,但是在物理架构上可以部署在一起,即部署在同一个服务器上。
本实施例中的配置库是一个数据库,一般安装在专用数据库服务器上。上述应用服务器指的是运行java应用的服务器,脚本容器也是一种应用服务器,指的是运行python应用的服务器,逻辑上它们是通过RESTful接口通讯的,具体到物理配置上,如果机器资源很充裕,比如CPU核心数量大,内存大,可以部署在同一台机器上。外部数据仓库是具体的作业需要使用数据所在的服务器,也可能是多台服务器,这些服务器一般都是专用数据库服务器。
脚本容器启动后会启动连接池、创建全局map用来保存作业状态信息。作业状态信息至少包括:作业的名称、线程ID、执行的状态和启动时间等四项信息,该四项信息以外的其他信息为可扩展信息。连接池是一个内存区域。调度服务配置了一个数据源(由数据源管理模块完成),这个数据源指向外部数据仓库(以外部数据仓库作为数据源,其是一个指向外部数据仓库的URL),脚本容器获取这个配置信息后会为这个外部数据仓库建立连接池。脚本容器在接到调度指令后启动被调度的作业的时候,调度作业就可以使用这个连接池执行作业。全局map是一块保存作业信息的内存区域,实际上是一个k-v结构的全局变量,便于作业容器快速获取和更新作业执行信息。后面多次提到这个map都是读取和更新该全局变量的。其中,作业容器可以理解为脚本容器的服务,一个作业对应一个脚本,这个脚本是在脚本容器启动的服务里执行的。
全局map存在于python脚本容器上,数据的副本会写入数据库,服务启动时从数据库加载,全局map状态变化时会更新数据库信息,确保数据一致。该全局map在内存中有利于加速访问,避免每次从数据库读取。
应用服务器向脚本容器发送启动作业的指令后,脚本容器接收到指令,启动线程,分配数据库连接,调用对应的作业脚本(其可以是由调度作业配置人员预先配置的对应脚本),将作业的名称、作业的线程ID、作业的执行的状态、作业的启动时间保存到全局map中,并将作业状态信息返回给应用服务器。应用服务器上部署调度服务。一般在软件工程中,应用服务器往往是专用的,只部署一个服务,因此,应用服务器就成为这个服务的代名词,可以理解为应用服务器上部署的服务。
作业完毕,脚本容器将全局map中的对应作业(作业完毕的)的状态更新,并将作业状态反馈给应用服务器。作业启动后处于执行状态(RUNNING)、执行完毕后为已完成(OVER)状态,异常终止为错误(ERROR)状态,用户主动终止(发出停止指令)为结束(TERMINATION)状态。如果用户查询某个作业状态信息,一般只返回该作业的状态值。脚本容器负责作业状态,作业的其他信息在数据库里保存,应用服务可以直接读取数据库,不必由脚本容器返回。
应用服务器发送查询作业状态的指令后,脚本容器接收该查询指令,根据该指令中的作业标识从全局map中查询作业状态反馈给应用服务器。具体地,作业执行过程中,用户想要看到当前作业状态,从前台页面主动发出查询指令,此时,应用服务器将该查询指令发送给脚本容器,脚本容器根据该查询指令将指定作业的当前状态实时传输给用户。
应用服务器发送结束作业的指令,脚本容器接收该结束作业的指令,从全局map中查询作业对应的线程ID,然后结束指定的线程,并更新全局map中的作业状态,并将作业状态反馈给应用服务器。
全部技术采用主流的通用技术体系,产品迭代和运维有保障。
图3是本发明实施例的一种提供数据库连接池的任务调度平台的功能架构示意图。如图3所示,各模块的功能如下:
用户管理模块:用来维护调度系统的用户权限,包括用户查询、用户授权、启用/禁用用户。用户查询功能用来检索当前调度平台上有哪些用户(即用户信息),调度平台的用户来自应用系统,不会自建用户,因此只提供查询服务,不提供增加、删除、修改功能。用户授权是给调度平台上的用户分别授予哪些功能权限。上述用户信息可以包括:用户的简要信息和/或用户的详细信息等。例如在先展示用户的简要信息,然后通过超链点击进一步展示用户的详细信息。
调度参数管理模块:用来维护调度系统的运行参数,包括参数查询、参数修改、参数删除等。主要运行参数包括:连接池最大连接数量、作业参数、作业并行数量等。其中,参数查询子模块,用于默认是展示全部参数,和/或,提供模糊检索功能查询特定参数。参数修改子模块,用于对参数的值进行修改;参数删除子模块,用于直接删除被选中的或指定的参数。设置作业并行数量的优点在于,由于作业执行需要CPU资源和内存资源,CPU资源不足时会造成作业积压,而内存资源不足会直接报错,因此需要对作业并行数量进行限制,避免出现内存资源不足造成作业执行失败。作业并行数量这个值可以预先给定一个默认值,并能够进行调节。
数据源管理模块:用来维护作业使用的数据源,可以配置多个数据源,给不同的任务的连接池指定不同的数据源。连接池根据数据库类型、IP地址、端口号、用户名称、密码、数据库名称来确定,这些要素都相同的情况下视为同一个数据源,创建一个连接池。多个任务可以对应同一个数据源,多个数据源也可被同一个任务使用。当然,用户在创建数据源的时候可以控制创建多少个数据源。该数据源管理模块包括:数据源查询、连接池管理、数据源测试。数据源管理子模块,用于管理当前调度平台可以提供的针对外部数据仓库创建的至少一个连接池,该连接池的相关信息包括:数据库类型、数据库IP、端口、数据库名称、鉴权方式(用户名和密码或kerberos)。这些信息是数据源管理的主要要素。连接池管理子模块,用于管理连接池大小,最小连接数,最大空闲连接数等参数。数据源测试子模块,用于检测或测试这些数据源的连通性,不能连通的数据源脚本容器不会为此创建连接池。
调度配置管理模块:该模块包括调度任务配置、作业配置、任务血缘管理。任务是作业的集合。任务配置用来配置任务的基本信息(任务的基本信息包括:任务ID、创建时间、名称,用途、创建人等,用来描述任务,方便调度人员了解任务情况的信息),任务的开始执行时间、任务的执行频率。作业配置用来配置作业名称、每个作业执行的脚本、作业间的依赖关系。任务血缘管理用于根据配置的任务和作业间的依赖关系解析调度任务的血缘关系,帮助用户理解任务之间的依赖关系、数据之间的流转关系。
任务的血缘关系可以理解为任务之间的依赖关系,配置任务的时候,会指定每个任务的前置任务有哪些,即只有前置任务都完成,当前任务才能执行,根据这些配置就能获得一张任务血缘关系图,这张图是有向无环图(DAG,Directed Acyclic Graph),即图中不能出现循环依赖,比如:A、B、C、D四个任务,不能出现D 依赖C,C依赖B,B依赖A,A又依赖D,通过任务血缘关系图,用户可以检查任务是否出现的循环依赖,从而避免任务无休止的执行。
调度任务管理模块:该模块用来管理任务和作业的执行情况,包括任务/作业启动、任务/作业停止、任务/作业状态管理。任务/作业状态管理具体用于:一个任务有多个作业,一个作业只能对应一个任务,作业是任务的子集。作业全部结束,任务才能结束,只要还有一个作业为执行状态,任务就处于执行状态,只要有一个作业发生错误,整个任务就算错误。一个任务里面的多个作业,用户可以选择性的终止个别作业,其他和这些被终止的作业没有关联性的作业继续执行,有关联性的作业也不会再执行。
任务日志管理模块:用来查询分析调度任务日志,帮助用户了解任务和作业的执行情况、错误追踪。日志查询功能用于提供模糊查询和按照时间轴的展示日志功能;日志下载功能用来下载对应的日志文件,用于错误分析;统计分析功能用来展示任务和作业的运行状态,包括发生错误次数,执行时长等。作为一个举例,作业执行过程中可能因为外部(数据结构发生变化、数据错误等)或者作业本身的问题(比如脚本存在运行时错误)原因造成执行失败,对这部分错误信息需要记录,这些错误信息一方面是排查问题的需要,另外一方面,也是对开发人员和对应的项目管理人员考核的要素。
本发明实施例的上述技术方案具有如下技术效果:
Python脚本在脚本容器里以线程的方式执行,内存和CPU资源都由脚本容器分配,避免每个脚本启动一个进程,多次分配内存和CPU资源。
本发明实施例对数据仓库的以Python语言开发ETL的执行过程中使用的数据库资源可以大大减少。
以数据仓库项目有10000个表,每个表平均有10个SQL的情况来分析。以往的ETL脚本每执行一个SQL就发起一次数据库连接,执行完毕后释放数据库连接,一共需要连接/释放100000次数据库。
在现有技术中,ETL程序需要读写外部数据仓库,高频连接/释放会造成进程/线程的反复创建、释放。而在本发明实施例中,使用连接池后,如果不考虑并行的情况,可以实现一个连接用到底,从开始到结束只使用一个数据库连接,连接请求数量降低了99.999%,如果考虑并行,以100个并行为例,数据库连接请求数量也降低了99.9%,这对ETL过程是极大的改进,数据库服务器(外部数据仓库)的压力将大大减小。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。
实施例二
图4是本发明实施例的一种任务调度方法的流程图。如图4所示,其包括如下步骤:
S401:调度服务组件配置数据源,生成数据源的配置信息,数据源指向外部数据仓库;以及,向脚本容器发送调度指令;
S402:脚本容器在获取数据源的配置信息后,为外部数据仓库建立连接池;启动连接池,并且创建全局map用来保存作业状态信息;以及,在接收到调度指令启动被调度的作业后,所述被调度的作业使用连接池;
S403:配置库存储任务调度平台有关的配置项信息。
在一些实施例中,调度服务组件向脚本容器发送指示启动作业的第一调度指令;
脚本容器接收到第一调度指令,启动线程,分配数据库连接,调用对应的作业脚本,将作业的名称、作业的线程ID、作业的执行的状态和作业的启动时间保存到全局map中,并且将作业状态信息返回给调度服务组件。
在一些实施例中,脚本容器在作业完毕时,将全局map中已执行完毕的作业的状态更新为已完成状态,并将处于已完成状态的作业标识和作业状态反馈给调度服务组件。
在一些实施例中,调度服务组件向脚本容器发送指示查询作业状态的第二调度指令;
脚本容器接收第二调度指令,根据第二调度指令中的作业标识从全局map中查询作业状态,并且将作业标识和作业状态反馈给调度服务组件。
在一些实施例中,调度服务组件向脚本容器发送指示结束作业的第三调度指令;
脚本容器接收第三调度指令,从全局map中查询与第三调度指令相匹配的作业对应的线程ID,结束所述线程ID对应的线程,更新全局map中该线程ID对应的作业状态,并且将当前作业状态反馈给调度服务组件。具体地,本实施例中根据作业id结束线程id,再根据作业id查找map中对应的作业,更新其状态,然后返回状态。
在一些实施例中,该任务调度方法还包括:调度服务组件维护任务调度平台的用户权限,其包括如下中的任意一项或多项:
检索确定当前任务调度平台上的用户信息;
为任务调度平台上的用户分别授予相应的功能权限;
启用或者禁用任务调度平台上的指定用户。
在一些实施例中,该任务调度方法还包括:调度服务组件维护任务调度平台的运行参数,运行参数包括如下中的任意一个或多个:连接池最大连接数量、作业参数、作业并行数量。
在一些实施例中,该任务调度方法还包括:调度服务组件配置多个数据源,为任务的连接池确定相应的数据源。具体地,连接池根据数据库类型、IP地址、端口号、用户名称、密码、数据库名称来确定,这些要素都相同的情况下视为同一个数据源,创建一个连接池。多个任务可以对应同一个数据源,或者,多个数据源也能够被同一个任务使用。用户在创建数据源的时候可以控制创建的数据源的数量。
在一些实施例中,调度服务组件配置多个数据源,为任务的连接池确定相应的数据源,具体包括执行如下中的任意一项或多项:
管理当前任务调度平台能够提供的为外部数据仓库创建的一个或多个连接池,所述连接池的信息包括:数据库类型、数据库IP、端口、数据库名称、鉴权方式;所述连接池是针对外部数据仓库这种数据源而创建的;
管理连接池的大小,连接池的最小连接数,连接池的最大空闲连接数中的至少一个参数;
测试数据源的连通性,当数据源能够连通时,指示脚本容器为能够连通的数据源建立连接池。
在一些实施例中,该任务调度方法还包括:
调度服务组件执行如下至少一项操作:
配置任务的基本信息、任务的开始执行时间、任务的执行频率中的任意一个或多个;
配置作业名称、每个作业执行的脚本、作业间的依赖关系中的任意一个或多个;
根据配置的任务和作业间的依赖关系,解析调度任务的血缘关系。
在一些实施例中,该任务调度方法还包括:
调度服务组件执行如下至少一项操作:
启动任务和/或作业;具体地,响应于用户发出的指令,启动任务和/或作业;
停止任务和/或作业;具体地,响应于用户发出的指令,停止任务和/或作业;
用户发出的指令可以是用户通过触发虚拟按钮发出的指令,或者发出的语音指令;
当多个作业全部结束时,确定多个作业对应的任务才能结束;
当任意一个作业为执行状态时,确定作业对应的任务处于执行状态;
当任意一个作业发生错误,则确定发生错误的作业对应的整个任务处于错误状态;
确定与被停止的作业具有关联性的其他作业,不再执行其他作业,并且控制与被停止的作业不具有关联性的作业处于执行状态。
在一些实施例中,的任务调度方法还包括:
调度服务组件执行如下至少一项操作:
基于模糊查询和/或按照时间轴展示调度任务日志;
下载对应的调度任务日志文件;
展示任务和/或作业的运行状态。
实施例三
图5是本发明实施例的又一种任务调度方法的流程图。如图5所示,其包括如下步骤:
S501:在获取数据源的配置信息后,为外部数据仓库建立连接池,数据源指向外部数据仓库;
S502:启动连接池,并且创建全局map用来保存作业状态信息;以及,
S503:在接收到调度服务组件发送的调度指令启动被调度的作业后,所述作业使用连接池。
在一些实施例中,该任务调度方法还包括:
接收调度服务组件发送的指示启动作业的第一调度指令;
根据第一调度指令,启动线程,分配数据库连接,调用对应的作业脚本,将作业的名称、作业的线程ID、作业的执行的状态和作业的启动时间保存到全局map中,并且将作业状态信息返回给调度服务组件。
在一些实施例中,该任务调度方法还包括:
在作业完毕时,将全局map中已执行完毕的作业的状态更新为已完成状态,并将处于已完成状态的作业标识和作业状态反馈给调度服务组件。
在一些实施例中,该任务调度方法还包括:
接收调度服务组件发送的指示查询作业状态的第二调度指令;
根据第二调度指令中的作业标识从全局map中查询作业状态,并且将作业标识和作业状态反馈给调度服务组件。
在一些实施例中,该任务调度方法还包括:
接收调度服务组件发送的指示结束作业的第三调度指令;
根据第三调度指令,从全局map中查询与第三调度指令相匹配的作业对应的线程ID,结束所述线程ID对应的线程,更新全局map中所述线程ID对应的作业状态,并且将更新后的当前作业状态反馈给调度服务组件。
实施例四
图6是本发明实施例的一种计算机可读存储介质的功能框图。如图6所示,计算机可读存储介质900内存储有计算机程序910,计算机程序910被处理器执行时实现上述任务调度方法的各步骤。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
实施例五
本申请实施例提供了一种计算机设备1000,如图7所示,其包括:一个或多个处理器1001、存储介质1002和通信总线1003,存储介质1002存储有处理器1001可执行的机器可读指令,当电子设备100运行时,处理器1001与存储介质1002之间通过通信总线1003通信,处理器1001执行机器可读指令,以执行或实现如前述任一实施方式的所述方法的各步骤。
处理器301可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器303可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器303可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器303可包括可移除或不可移除(或固定)的介质。在特定实施例中,存储器303是非易失性固态存储器。在特定实施例中,存储器303包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
通信总线304包括硬件、软件或两者,用于将上述部件彼此耦接在一起。举例来说,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (21)
1.一种任务调度平台,其特征在于,包括:
应用服务器,所述应用服务器上部署有调度服务组件,用于配置数据源,生成数据源的配置信息,所述数据源指向外部数据仓库;以及,向脚本容器发送调度指令;
所述脚本容器,具体用于在获取所述数据源的配置信息后,为所述外部数据仓库建立连接池;启动所述连接池,并且创建全局map用来保存作业状态信息;以及,在接收到所述调度指令启动被调度的作业后,所述作业使用所述连接池;
配置库,用于存储任务调度平台有关的配置项信息。
2.根据权利要求1所述的任务调度平台,其特征在于,
所述调度服务组件,具体用于向所述脚本容器发送指示启动作业的第一调度指令;
所述脚本容器,具体用于接收到所述第一调度指令,启动线程,分配数据库连接,调用对应的作业脚本,将作业的名称、作业的线程ID、作业的执行的状态和作业的启动时间保存到所述全局map中,并且将作业状态信息返回给所述调度服务组件。
3.根据权利要求2所述的任务调度平台,其特征在于,
所述脚本容器,具体用于在作业完毕时,将所述全局map中已执行完毕的作业的状态更新为已完成状态,并将处于已完成状态的作业标识和作业状态反馈给所述调度服务组件。
4.根据权利要求2所述的任务调度平台,其特征在于,
所述调度服务组件,具体用于向所述脚本容器发送指示查询作业状态的第二调度指令;
所述脚本容器,具体用于接收所述第二调度指令,根据所述第二调度指令中的作业标识从所述全局map中查询作业状态,并且将所述作业标识和所述作业状态反馈给所述调度服务组件。
5.根据权利要求4所述的任务调度平台,其特征在于,
所述调度服务组件,具体用于向所述脚本容器发送指示结束作业的第三调度指令;
所述脚本容器,具体用于接收所述第三调度指令,从所述全局map中查询与所述第三调度指令相匹配的作业对应的线程ID,结束所述线程ID对应的线程,更新所述全局map中的所述线程ID对应的作业状态,并且将当前作业状态反馈给所述调度服务组件。
6.根据权利要求1所述的任务调度平台,其特征在于,所述调度服务组件包括:用户管理模块,用于维护任务调度平台的用户权限;所述用户管理模块包括如下中的至少一个子模块:
用户查询子模块,用于检索确定当前任务调度平台上的用户信息;
用户授权子模块,用于为任务调度平台上的用户分别授予相应的功能权限;
启用/禁用用户子模块,用于启用或者禁用任务调度平台上的指定用户。
7.根据权利要求1所述的任务调度平台,其特征在于,所述调度服务组件包括:调度参数管理模块,用于维护任务调度平台的运行参数,所述运行参数包括如下中的任意一个或多个:连接池最大连接数量、作业参数、作业并行数量。
8.根据权利要求1所述的任务调度平台,其特征在于,所述调度服务组件包括:数据源管理模块,用于维护作业使用的数据源,所述维护作业使用的数据源包括:配置多个数据源,为任务的连接池确定相应的数据源。
9.根据权利要求8所述的任务调度平台,其特征在于,所述数据源管理模块包括如下中的至少一个子模块:
数据源管理子模块,用于管理当前任务调度平台提供的为外部数据仓库创建的一个或多个连接池,所述连接池的信息包括:数据库类型、数据库IP、端口、数据库名称和鉴权方式;
连接池管理子模块,用于管理连接池的大小,连接池的最小连接数,连接池的最大空闲连接数中的至少一个参数;
数据源测试子模块,用于测试所述数据源的连通性,当所述数据源能够连通时,指示所述脚本容器为能够连通的数据源建立连接池。
10.根据权利要求1所述的任务调度平台,其特征在于,所述调度服务组件包括:调度配置管理模块,其包括如下中的至少一个子模块:
调度任务配置子模块,用于配置任务的基本信息、任务的开始执行时间、任务的执行频率中的任意一个或多个;
作业配置子模块,用于配置作业名称、每个作业执行的脚本、作业间的依赖关系中的任意一个或多个;
任务血缘管理子模块,用于根据配置的任务和作业间的依赖关系,解析调度任务的血缘关系。
11.根据权利要求1所述的任务调度平台,其特征在于,所述调度服务组件包括:调度任务管理模块,用于管理任务和/或作业的执行情况,其包括如下中的至少一个子模块:
任务/作业启动子模块,用于启动任务和/或作业;
任务/作业停止子模块,用于停止任务和/或作业;
任务/作业状态管理子模块,用于:
当多个作业全部结束时,确定所述多个作业对应的任务才能结束;
当任意一个作业为执行状态时,确定所述作业对应的任务处于执行状态;
当任意一个作业发生错误,则确定发生错误的作业对应的整个任务处于错误状态;
确定与被停止的作业具有关联性的其他作业,不再执行所述其他作业,并且控制与被停止的作业不具有关联性的作业处于执行状态。
12.根据权利要求1所述的任务调度平台,其特征在于,所述调度服务组件包括:任务日志管理模块,用于查询和/或分析调度任务日志;所述任务日志管理模块包括如下中的至少一个子模块:
日志查询子模块,用于基于模糊查询和/或按照时间轴展示调度任务日志;
日志下载子模块,用于下载对应的调度任务日志文件;
统计分析子模块,用于展示任务和/或作业的运行状态。
13.根据权利要求1所述的任务调度平台,其特征在于,
所述脚本容器是采用python语言的脚本容器,所述脚本容器和所述配置库之间使用Python DB API来读取调度任务的配置信息,以及在所述配置库中保存调度任务的执行信息;
所述脚本容器与所述调度服务组件之间采用RESTful接口通讯;
所述调度服务组件的开发语言采用Java,所述调度服务组件与所述配置库之间采用JDBC进行连接。
14.根据权利要求1所述的任务调度平台,其特征在于,
所述配置项信息包括如下中的任意一项或多项:任务调度平台的用户、作业配置、作业执行情况、调度参数、作业使用的数据源;
所述脚本容器是一个HTTP服务,所述HTTP服务仅对调度服务组件开放访问,用于管理作业;所述配置库采用关系数据库,所述关系数据库包括:MySQL、MariaDB、PostgreSQ或者Gbase8s。
15.一种任务调度平台的任务调度方法,其特征在于,包括:
调度服务组件配置数据源,生成数据源的配置信息,所述数据源指向外部数据仓库;以及,向脚本容器发送调度指令;
所述脚本容器在获取所述数据源的配置信息后,为所述外部数据仓库建立连接池;启动所述连接池,并且创建全局map用来保存作业状态信息;以及,在接收到所述调度指令启动被调度的作业后,所述作业使用所述连接池;
配置库存储任务调度平台有关的配置项信息。
16.根据权利要求15所述的任务调度方法,其特征在于,
所述调度服务组件向所述脚本容器发送指示启动作业的第一调度指令;
所述脚本容器接收到所述第一调度指令,启动线程,分配数据库连接,调用对应的作业脚本,将作业的名称、作业的线程ID、作业的执行的状态和作业的启动时间保存到所述全局map中,并且将作业状态信息返回给所述调度服务组件。
17.根据权利要求15所述的任务调度方法,其特征在于,
所述调度服务组件向所述脚本容器发送指示查询作业状态的第二调度指令;
所述脚本容器接收所述第二调度指令,根据所述第二调度指令中的作业标识从所述全局map中查询作业状态,并且将所述作业标识和所述作业状态反馈给所述调度服务组件。
18.根据权利要求17所述的任务调度方法,其特征在于,
所述调度服务组件向所述脚本容器发送指示结束作业的第三调度指令;
所述脚本容器接收所述第三调度指令,从所述全局map中查询与所述第三调度指令相匹配的作业对应的线程ID,结束所述线程ID对应的线程,更新所述全局map中的所述线程ID对应的作业状态,并且将当前作业状态反馈给所述调度服务组件。
19.一种任务调度方法,其特征在于,包括:
在获取数据源的配置信息后,为外部数据仓库建立连接池,所述数据源指向外部数据仓库;
启动所述连接池,并且创建全局map用来保存作业状态信息;以及,
在接收到调度服务组件发送的调度指令启动被调度的作业后,所述作业使用所述连接池。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求15-19中任意一项所述的任务调度方法。
21.一种计算机设备,其特征在于,其包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求15-19中任一所述的任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210354037.9A CN114880386B (zh) | 2022-04-06 | 2022-04-06 | 一种任务调度平台及任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210354037.9A CN114880386B (zh) | 2022-04-06 | 2022-04-06 | 一种任务调度平台及任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114880386A true CN114880386A (zh) | 2022-08-09 |
CN114880386B CN114880386B (zh) | 2023-04-07 |
Family
ID=82670586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210354037.9A Active CN114880386B (zh) | 2022-04-06 | 2022-04-06 | 一种任务调度平台及任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880386B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093640A (zh) * | 2023-10-18 | 2023-11-21 | 上海柯林布瑞信息技术有限公司 | 基于池化技术的数据抽取方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317650A (zh) * | 2014-10-10 | 2015-01-28 | 北京工业大学 | 一种面向Map/Reduce型海量数据处理平台的作业调度方法 |
US20180322019A1 (en) * | 2017-05-05 | 2018-11-08 | Pivotal Software, Inc. | Backup and restore framework for distributed computing systems |
CN114064816A (zh) * | 2021-10-29 | 2022-02-18 | 浪潮软件科技有限公司 | 一种异架构数据源数据加工管理方法 |
-
2022
- 2022-04-06 CN CN202210354037.9A patent/CN114880386B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317650A (zh) * | 2014-10-10 | 2015-01-28 | 北京工业大学 | 一种面向Map/Reduce型海量数据处理平台的作业调度方法 |
US20180322019A1 (en) * | 2017-05-05 | 2018-11-08 | Pivotal Software, Inc. | Backup and restore framework for distributed computing systems |
CN114064816A (zh) * | 2021-10-29 | 2022-02-18 | 浪潮软件科技有限公司 | 一种异架构数据源数据加工管理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093640A (zh) * | 2023-10-18 | 2023-11-21 | 上海柯林布瑞信息技术有限公司 | 基于池化技术的数据抽取方法及装置 |
CN117093640B (zh) * | 2023-10-18 | 2024-01-23 | 上海柯林布瑞信息技术有限公司 | 基于池化技术的数据抽取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114880386B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107729139B (zh) | 一种并发获取资源的方法和装置 | |
US10970277B2 (en) | System and method for dynamic conversion of database accessing scripts during runtime in a mainframe rehosting platform | |
CA3000422C (en) | Workflow service using state transfer | |
KR20210045299A (ko) | 로봇 프로세스 자동화를 사용한 문서 프로세싱을 위한 장기 실행 워크플로우 | |
US20210124757A1 (en) | Multi-task scheduling method and system, application server and computer-readable storage medium | |
CN111279314A (zh) | 利用微服务容器在多租户api网关中提供租户隔离 | |
CN105786603B (zh) | 一种基于分布式的高并发业务处理系统及方法 | |
CN111190892B (zh) | 一种数据回填中处理异常数据的方法和装置 | |
CN112051993A (zh) | 状态机模板的生成及任务处理方法、装置、介质及设备 | |
CN113157411B (zh) | 一种基于Celery的可靠可配置任务系统及装置 | |
US10275234B2 (en) | Selective bypass of code flows in software program | |
CN110971700A (zh) | 分布式锁的实现方法及装置 | |
CN114880386B (zh) | 一种任务调度平台及任务调度方法 | |
CN116302708A (zh) | 基于负载均衡的数据备份方法、装置、设备及存储介质 | |
CN110494849B (zh) | 用于确定跨平台应用迁移的成功的系统和方法 | |
CN115454629A (zh) | 基于云原生技术的ai算法与微服务调度方法及其装置 | |
CN117076096A (zh) | 任务流程的执行方法、装置、计算机可读介质及电子设备 | |
US11182144B2 (en) | Preventing database package updates to fail customer requests and cause data corruptions | |
US20110252425A1 (en) | Executing operations via asynchronous programming model | |
CN111131394A (zh) | 基于分布式锁的并发请求处理方法、装置及计算机可读存储介质 | |
Chen et al. | Service encapsulation for middleware management interfaces | |
CN112115118B (zh) | 数据库压测的优化方法及装置、存储介质、电子设备 | |
US8375353B2 (en) | Enabling the use of process flow applications within an information management system (IMS) | |
CN112579615A (zh) | 一种实现分布式锁的方法和装置 | |
US20180357095A1 (en) | Asynchronous sequential processing execution |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |