本发明涉及计算机应用技术领域,尤其涉及一种数据任务管理自动化方法、系统、电子设备、存储介质。
背景技术:
企业雇佣大量dba(databaseadministrator,数据库管理员),依靠数据库管理员数据库运维经验,人工提供数据库服务,数据库管理员自己开发运维脚本,利用脚本工具保证数据库平稳运行。
目前该人工模式需要大量有经验的数据库管理员进行7*24小时数据库服务支持,问题诊断(troubleshooting)和性能优化(performancetunning)一直都是数据库领域的专业问题,需要资深数据库管理员的专业技能才能胜任解决,由于研发项目多,数据库规模和访问量巨大,现有人员无法保证提供很全面的数据库服务支持。服务支持和运维需求严重不匹配,一些重复性、流程化工作制约数据库管理员的工作效率,企业成本不断攀升。
技术实现要素:
本发明为了克服上述相关技术存在的缺陷,提供一种数据任务管理自动化方法、系统、电子设备、存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的一个或者多个问题。
根据本发明的一个方面,提供一种数据任务管理自动化方法,包括:
第一服务器按设定的周期将数据任务存入一消息队列,所述数据任务包括第一类任务及对所述第一类任务的任务状态进行统计查询的第二类任务;
所述第一服务器从所述消息队列中获取所述数据任务;
若所述数据任务为第一类任务,则所述第一服务器将该第一类任务下发至一个或多个客户端;以及
若所述数据任务为第二类任务,则所述第一服务器本地执行该第二类任务。
可选地,所述第一服务器将该第一类任务下发至一个或多个客户端之后还包括:
所述第一服务器监听一个或多个所述客户端以储存并更新所述第一类任务的任务状态。
可选地,所述第一服务器根据所述数据任务的数据包的包头确定所述数据任务为第一类任务还是第二类任务。
可选地,所述第一服务器按设定的周期将数据任务存入一消息队列之前还包括:
所述第一服务器自第二服务器接收所述数据任务,所述第二服务器维护数据任务表,所述数据任务表储存数据任务、数据任务的类型、数据任务设定的周期及待执行所述数据任务的客户端的标识。
可选地,所述第一服务器本地执行该第二类任务之后还包括:
所述第一服务器将所述第二类任务的执行结果发送至所述第二服务器,以供所述执行结果显示在所述第二服务器提供的展示网页上。
根据本发明的又一方面,还提供一种第一服务器,应用于数据任务管理自动化方法,所述第一服务器包括:
追踪模块,用于按设定的周期将数据任务存入一消息队列,所述数据任务包括第一类任务及对所述第一类任务的任务状态进行统计查询的第二类任务;
消费模块,用于从所述消息队列中获取所述数据任务;以及
工作模块,若所述数据任务为第一类任务,则所述工作模块用于将该第一类任务下发至一个或多个客户端;若所述数据任务为第二类任务,则所述工作模块用于本地执行该第二类任务。
根据本发明的又一方面,还提供一种数据任务管理自动化系统,包括:
如上所述的第一服务器;
客户端,用于执行如下步骤:
监听所述第一服务器下发的第一类任务;
执行所述第一类任务;
将所述第一类任务的任务状态反馈至所述第一服务器。
可选地,还包括:
第二服务器,用于执行如下步骤:
维护数据任务表,所述数据任务表储存数据任务、数据任务的类型、数据任务设定的周期及待执行所述数据任务的客户端的标识;
按所述数据任务表中数据任务的设定的周期将数据任务发送至所述第一服务器。
可选地,所述第二服务器还用于执行如下步骤:
提供展示所述第二类任务的执行结果的展示网页。
根据本发明的又一方面,还提供一种电子设备,所述电子设备包括:处理器;存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如上所述的步骤。
根据本发明的又一方面,还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的步骤。
相比现有技术,本发明的优势在于:
一方面,通过数据任务的自动调度可以实现周期性、重复性任务的自动执行,减少数据库管理员编写脚本的人工成本;另一方面,通过将重复性的第一类任务分发至客户端进行执行,并在第一服务器端本地执行对第一类任务的任务状态的统计查询的第二类任务,由于第一服务器端监听客户端的第一类任务的执行情况,因此,在第一服务器端可以快速高效地执行第二类任务,并便于数据库管理员根据第二类任务的任务执行结果进行后序的数据库运维操作。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明实施例的数据任务管理自动化方法的流程图。
图2示出了根据本发明实施例的第一服务器的模块图。
图3示出了根据本发明实施例的第一服务器调度数据任务的示意图。
图4示出了根据本发明一实施例的数据任务管理自动化系统的示意图。
图5示出了根据本发明实施例的客户端的调度数据任务的流程图。
图6示出了根据本发明另一实施例的数据任务管理自动化系统的示意图。
图7示意性示出本发明示例性实施例中一种计算机可读存储介质示意图。
图8示意性示出本发明示例性实施例中一种电子设备示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此,实际执行的顺序有可能根据实际情况改变。
图1示出了根据本发明实施例的数据任务管理自动化方法的流程图。参考图1,所述数据任务管理自动化方法包括如下步骤:
步骤s110:第一服务器按设定的周期将数据任务存入一消息队列,所述数据任务包括第一类任务及对所述第一类任务的任务状态进行统计查询的第二类任务;
步骤s120:所述第一服务器从所述消息队列中获取所述数据任务;
步骤s130:所述第一服务器判断所述数据任务是否为第一类任务?
若所述步骤s130判断所述数据任务为第一类任务,则执行步骤s140:所述第一服务器将该第一类任务下发至一个或多个客户端;以及
若所述步骤s130判断所述数据任务为第二类任务,则执行步骤s150:所述第一服务器本地执行该第二类任务。
在本发明的示例性实施方式的数据任务管理自动化方法中,一方面,通过数据任务的自动调度可以实现周期性、重复性任务的自动执行,减少数据库管理员编写脚本的人工成本;另一方面,通过将重复性的第一类任务分发至客户端进行执行,并在第一服务器端本地执行对第一类任务的任务状态的统计查询的第二类任务,由于第一服务器端监听客户端的第一类任务的执行情况,因此,在第一服务器端可以快速高效地执行第二类任务,并便于数据库管理员根据第二类任务的任务执行结果进行后序的数据库运维操作。
具体而言,在本发明的各个实施例中,所述第一类任务例如可以是在多个客户端所在设备的环境部署、数据备份、数据迁移等数据任务。所述第二类任务例如可以是对某一设备的环境部署的进度的统计、某一设备的数据备份的进度的统计、所有设备的第一类任务的进度统计等等。以上仅仅是示意性地描述本发明的第一类任务和第二类任务,本发明并非以此为限。
下面将结合各个具体实施例描述本发明提供的数据任务管理自动化方法:
在一个具体实现中,所述步骤s140:所述第一服务器将该第一类任务下发至一个或多个客户端之后还包括:
所述第一服务器监听一个或多个所述客户端以储存并更新所述第一类任务的任务状态。
通过该步骤,由于第一类任务的任务状态储存在第一服务器,且其任务状态实时更新,由此,可以提高在第一服务器执行第二类任务的效率。
在一个具体实现中,所述步骤s130:所述第一服务器判断所述数据任务是否为第一类任务可以包括:
所述第一服务器根据所述数据任务的数据包的包头确定所述数据任务为第一类任务还是第二类任务。
具体而言,在一些具体实施例中,消息任务经由tcpsocket协议封装,若从消息队列中获取到数据任务,在步骤s130中首先对数据任务进行安全的tcpsocket字节安全校验,通过后对数据任务进行socket包头解析。区分第一类任务和第二类任务。
在一个具体实现中,所述步骤s140:所述第一服务器将该第一类任务下发至一个或多个客户端还可以包括:
所述第一服务器可以将第一类任务以文件传输或命令传输的方式下发至一个或多个客户端以进行多线程并发执行。
在一个具体实现中,所述步骤s110所述第一服务器按设定的周期将数据任务存入一消息队列之前还可以包括:
所述第一服务器自第二服务器接收所述数据任务,所述第二服务器维护数据任务表,所述数据任务表储存数据任务、数据任务的类型、数据任务设定的周期及待执行所述数据任务的客户端的标识。
所述第二服务器例如可以是一个web服务器,用于提供网页界面,用户可以通过网页界面录入数据任务,或根据用户在网页界面的操作触发数据任务储存到数据任务表。第二服务器可以将数据任务表中到达设定时间的数据任务发送至第一服务器。或者也可以由第一服务器自第二服务器获取到达设定时间的数据任务。
在上述的实现方式中,所述步骤s150所述第一服务器本地执行该第二类任务之后还可以包括:
所述第一服务器将所述第二类任务的执行结果发送至所述第二服务器,以供所述执行结果显示在所述第二服务器提供的展示网页上。
具体而言,本发明提供的数据任务管理自动化方法通过消息队列使用生产者消费者模式,生产者就是生产数据的进程(将数据任务存入消息队列),消费者就是消费数据的进程(从消息队列中消费任务数据),生产者消费者模式通过消息队列来解决生产者和消费者的强耦合问题,所以这两者之间不需要直接通信。
基于上述生产者和消费者模式,本发明提供的数据任务管理自动化方法在不间断循环检测,一旦发现有定时产生或用户主动产生的数据任务,第一服务器则会获取任务时间(例如可以划分为循环任务、每天任务、每周任务和每月任务),按照指定的时间消息队列中。
下面结合图2描述本发明提供的第一服务器。图2示出了根据本发明实施例的第一服务器的模块图。第一服务器210包括追踪模块211、消费模块、工作模块213。消费模块例如可以集成在工作模块213中。第一服务器还可以包括消息队列212。
追踪模块211用于按设定的周期将数据任务存入一消息队列,所述数据任务包括第一类任务及对所述第一类任务的任务状态进行统计查询的第二类任务;
消费模块用于从所述消息队列中获取所述数据任务;以及
若所述数据任务为第一类任务,则所述工作模块213用于将该第一类任务下发至一个或多个客户端;若所述数据任务为第二类任务,则所述工作模块213用于本地执行该第二类任务。
在本发明的示例性实施方式的第一服务器中,一方面,通过数据任务的自动调度可以实现周期性、重复性任务的自动执行,减少数据库管理员编写脚本的人工成本;另一方面,通过将重复性的第一类任务分发至客户端进行执行,并在第一服务器端本地执行对第一类任务的任务状态的统计查询的第二类任务,由于第一服务器端监听客户端的第一类任务的执行情况,因此,在第一服务器端可以快速高效地执行第二类任务,并便于数据库管理员根据第二类任务的任务执行结果进行后序的数据库运维操作。
图2仅仅是示意性的示出本发明提供的第一服务器210,在不违背本发明构思的前提下,模块的拆分、合并、增加都在本发明的保护范围之内。
在本发明的一个具体实现中,工作模块213执行图3所示的流程:
步骤s310:工作模块213自消息队列消费消息(数据任务);
步骤s320:工作模块213判断消息是否为空,若为空则回到步骤s310;若不为空,则继续执行步骤s330;
步骤s330:工作模块213分析消息的数据头(数据任务的类型储存在数据头中)。
步骤s340:工作模块213根据数据头判断所述数据任务是否为第一类任务。
若步骤s340判断不为第一类任务,则该数据任务为第二类任务,并执行步骤s350在工作模块213本地执行第二类任务。
若步骤s340判断为第一类任务,则执行步骤s360工作模块213确定该数据任务为第二类任务;
步骤s370:工作模块213判断该第一类任务是否为多线程任务。
若步骤s370判断为否,则执行步骤s380,工作模块213直接调用(call)的方式将第一类任务下发至客户端;
若步骤s370判断为是,则执行步骤s390,工作模块213调用执行流程(process)的方式将第一类任务下发至客户端。
以上仅仅是工作模块213的一种具体实现方式,本发明并非以此为限。
在本发明的一个具体实现中,第一服务器210还包括第一监听模块214,第一监听模块214用于监听客户端的第一类任务的任务状态(执行情况)。
在本发明的具体实现中,第一服务器210以插件方式集成运维工具,通过流程管控实现任务调度的自动化运行。第一服务器210例如还可以包括用于实现进程守护的守护(daemon)模块;对客户端进行管控和通信交互,进行远程命令和文件传输的交互模块;支持内部数据接口,集成自动化运维工具的插件模块;管理任务属性和执行步骤的流程管控模块。第一服务器210还可以集成其它的模块,本发明并非以此为限。
下面结合图4描述本发明提供的一种数据任务管理自动化系统。数据任务管理自动化系统包括第一服务器410及客户端420。第一服务器410可以与图2所述的第一服务器具有相同的模块。
客户端420用于执行监听所述第一服务器410下发的第一类任务;执行所述第一类任务;将所述第一类任务的任务状态反馈至所述第一服务器410的步骤。
在本发明的示例性实施方式的数据任务管理自动化系统中,一方面,通过数据任务的自动调度可以实现周期性、重复性任务的自动执行,减少数据库管理员编写脚本的人工成本;另一方面,通过将重复性的第一类任务分发至客户端进行执行,并在第一服务器端本地执行对第一类任务的任务状态的统计查询的第二类任务,由于第一服务器端监听客户端的第一类任务的执行情况,因此,在第一服务器端可以快速高效地执行第二类任务,并便于数据库管理员根据第二类任务的任务执行结果进行后序的数据库运维操作。
在本实施例中,客户端420可以包括用于监听所述第一服务器410下发的第一类任务的第二监听模块423;用于执行所述第一类任务的执行模块422;用于将所述第一类任务的任务状态反馈至所述第一服务器410的交互模块。以上仅仅是示意性地描述本发明的客户端420的模块结构,本发明并非以此为限,模块的组合和拆分皆在本发明保护的范围之内。
具体而言,在本发明的一个具体实现中,当第一服务器410以tcp方式进行任务下发后,客户端420的第二监听模块423的处理函数可以按图5所示的步骤s510不间断的监听请求的到来。之后执行步骤s520判断数据任务是否为第一类任务。例如,可以通过与上述第一服务器的步骤s330和步骤s340向同的方式(例如,分析socket包头),判断第二监听模块423监听到的任务是否为第一类任务。若不为第一类任务则执行步骤s530,将数据任务返回给第一服务器410。若步骤s530确定为第一类任务,则执行步骤s540,进一步判断该第一类任务是否为异步任务。若步骤s540判断该第一类任务不为异步任务则执行步骤s550,通过接口调用直接执行该第一类任务。若步骤s540判断该第一类任务不为异步任务则执行步骤s560,将数据任务加入该客户端的一消息队列中,以异步的方式来执行。本发明并非以此为限。
在一个具体实施例中,客户端420可以将第一类任务的执行的结果,通过tcpsocket传输,再次返回给第一服务器中的第一监听模块,第一监听模块可以调用第一服务器内部的应用程序编程接口进行第一类任务状态任务的更新和处理。
在客户端420的一些具体实现中,客户端420可以包括多个相互调用的模块,该多个模块可以以公用库的形式加载到客户端420中。该多个模块例如可以包括交互模块421(用于与第一服务端交互,负责所有的数据发送);日志模块(用于储存并更新第一类任务的执行日志);设置模块(用于提供部分全局信息);工具模块(用于提供通用性工具),本发明并非以此为限。公用库中的模块可以相互调用。
下面结合图6描述本发明另一实施例的数据任务管理自动化系统。数据任务管理自动化系统包括第一服务器610、客户端620及第二服务器630。第一服务器610可以与图2所述的第一服务器具有相同的模块。
客户端620用于执行监听所述第一服务器610下发的第一类任务;执行所述第一类任务;将所述第一类任务的任务状态反馈至所述第一服务器610的步骤。
第二服务器630用于执行:维护数据任务表,所述数据任务表储存数据任务、数据任务的类型、数据任务设定的周期及待执行所述数据任务的客户端的标识;按所述数据任务表中数据任务的设定的周期将数据任务发送至所述第一服务器的步骤。在一个具体实施例中,第二服务器630还用于执行提供展示所述第二类任务的执行结果的展示网页的步骤。
第二服务器630可以根据用户在其提供的网页界面上的操作触发或生成数据任务。
在本发明的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述电子处方流转处理方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
参考图7所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品700,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在租户计算设备上执行、部分地在租户设备上执行、作为一个独立的软件包执行、部分在租户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到租户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在本发明的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中所述电子处方流转处理方法的步骤。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图8来描述根据本发明的这种实施方式的电子设备800。图8显示的电子设备800仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800以通用计算设备的形式表现。电子设备800的组件可以包括但不限于:至少一个处理单元810、至少一个存储单元820、连接不同系统组件(包括存储单元820和处理单元810)的总线830、显示单元840等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元810执行,使得所述处理单元710执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元810可以执行如图1所示的步骤。
所述存储单元820可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(rom)8203。
所述存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备800也可以与一个或多个外部设备900(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得租户能与该电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口850进行。并且,电子设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器860可以通过总线830与电子设备800的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本发明实施方式的上述电子处方流转处理方法。
相比现有技术,本发明的优势在于:
一方面,通过数据任务的自动调度可以实现周期性、重复性任务的自动执行,减少数据库管理员编写脚本的人工成本;另一方面,通过将重复性的第一类任务分发至客户端进行执行,并在第一服务器端本地执行对第一类任务的任务状态的统计查询的第二类任务,由于第一服务器端监听客户端的第一类任务的执行情况,因此,在第一服务器端可以快速高效地执行第二类任务,并便于数据库管理员根据第二类任务的任务执行结果进行后序的数据库运维操作。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。