CN106156198A - 基于分布式数据库的任务执行方法及装置 - Google Patents
基于分布式数据库的任务执行方法及装置 Download PDFInfo
- Publication number
- CN106156198A CN106156198A CN201510194020.1A CN201510194020A CN106156198A CN 106156198 A CN106156198 A CN 106156198A CN 201510194020 A CN201510194020 A CN 201510194020A CN 106156198 A CN106156198 A CN 106156198A
- Authority
- CN
- China
- Prior art keywords
- task
- atomic
- data base
- execution
- goal
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000009471 action Effects 0.000 claims abstract description 8
- 230000000977 initiatory effect Effects 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 4
- 230000002085 persistent effect Effects 0.000 claims description 3
- 235000013399 edible fruits Nutrition 0.000 claims description 2
- 239000004744 fabric Substances 0.000 claims description 2
- 238000007781 pre-processing Methods 0.000 claims 3
- 238000000151 deposition Methods 0.000 claims 1
- 230000002688 persistence Effects 0.000 claims 1
- 238000000889 atomisation Methods 0.000 description 12
- 238000009826 distribution Methods 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000000875 corresponding effect Effects 0.000 description 6
- 238000003723 Smelting Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Abstract
本申请提供了一种基于分布式数据库的任务执行方法及装置,所述方法包括:任务执行过程,该任务执行过程包括:实时从所述分布式数据库中获取符合预设执行条件的目标任务;依据所述目标任务的相关执行信息和任务类型执行所述目标任务;其中,所述目标任务的任务类型用于表示针对所述分布式数据库的操作类型。采用本申请实施例的方法或装置,可以自动实现分布式数据库的运维,提高分布式数据库在运维过程中任务执行的效率和准确率。
Description
技术领域
本申请涉及数据库领域,特别涉及一种基于分布式数据库的任务执行方法及装置。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库.分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
以分布式数据库oceanbase集群为例,在实际应用中,需要对分布式数据库进行运行维护,例如需要对oceanbase集群进行安装、升级、扩容、下线、下发配置、重启等操作,现有技术一般通过人工方式在相应的机器上执行一系列的任务来完成上述的相应操作。
发明内容
但是发明人在研究过程中发现,对分布式数据库进行运维时所有的任务都需要通过人工的方式登录到相应的服务器上来执行。在分布式数据库oceanbase集群数量和服务器数量少时可能没有太大问题,但是当oceanbase集群数量或者服务器数量增多时,需要手工执行步骤的总数也将增多,运维难度将大幅增加,不仅会导致运维效率非常低下,而且非常容易出现操作出错的情况。
本申请所要解决的技术问题是提供一种基于分布式数据库的任务执行方法,用以尽量避免现有技术中采用人工方式进行分布式数据库运维的现象,从而自动实现分布式数据库的运维,进而提高分布式数据库在运维过程中任务执行的效率和准确率。
本申请还提供了一种基于分布式数据库的任务执行装置,用以保证上述方法在实际中的实现及应用。
为了解决上述问题,本申请公开了一种基于分布式数据库的任务执行方法,包括任务执行过程,所述任务执行过程包括:
实时从分布式数据库中获取符合预设执行条件的目标任务;其中,所述分布式数据库中保存有任务的相关执行信息;
依据所述目标任务的相关执行信息和任务类型执行所述目标任务;其中,所述目标任务的任务类型用于表示针对所述分布式数据库的操作类型。
本申请公开了一种基于分布式数据库的任务执行装置,包括:任务执行单元,所述任务执行单元包括:获取模块,用于实时从分布式数据库中获取符合预设执行条件的目标任务;其中,所述分布式数据库中保存有任务的相关执行信息;
执行模块,用于依据所述目标任务的相关执行信息和任务类型执行所述目标任务;其中,所述目标任务的任务类型用于表示针对所述分布式数据库的操作类型。
与现有技术相比,本申请包括以下优点:
在本申请实施例中,接收用户的输入信息后即可触发目标任务的执行,并且在执行任务的过程中,如果某个任务执行失败,还可以在失败处的原子任务继续执行下去,无需从头开始执行该任务,使得任务执行的效率比较高。同时随着分布式数据库oceanbase集群或者服务器数量加大时,特别是当oceanbase集群或者服务器的数量达到规模化的程度时,其高效的任务自动执行效果也就越发明显。进一步的,在本申请实施例中,任务执行过程中分布式数据库oceanbase冶无需停止服务,这对线上生产环境同样具有重大意义。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的基于分布式数据库的任务执行方法实施例的流程图;
图2是本申请的方法实施例在实际应用中的应用场景架构图;
图3是本申请的基于分布式数据库的任务执行装置实施例的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
参考图1,示出了本申请一种基于分布式数据库的任务执行方法实施例的流程图,本实施例可以包括以下步骤:
步骤101:响应于用户提交输入信息,按照预先设置的任务格式生成待执行的初始任务。
本申请实施例的方法流程可以包括预处理流程和任务执行流程,这两个流程之间可以是相互独立的。其中,预处理流程包括步骤101~步骤102,任务执行流程包括步骤103~步骤104。
在步骤101中,用户可以通过交互式界面来输入信息,例如输入新任务的相关信息。假设用户输入的新任务为:新建海量数据库(oceanbase)集群,则用户可以输入的新任务的相关信息就可以包括:集群名称、集群数量、存储服务器(chunkserver)的类型、存储服务器(chunkserver)的数量、更新服务器(updatechunkserver)的类型、更新服务器(updateserver)的数量、机房名称、用户名、集群执行安装的时间和/或需要安装的oceanbase的版本等信息,进而根据这些输入信息,按照预先设置好的任务格式生成待执行的初始任务,即新建oceanbase集群的任务。可以理解的是,在生成待执行的初始任务的时候,可以按照预先设置的任务格式,例如,预先约定了初始任务中的某个字段代表什么操作,或者约定了传输数据的格式,或者其他需要约定的内容,都可以预先设置为任务格式的内容,以便后续根据任务格式来生成待执行的命令。
在实际应用中,在接收到用户的输入信息的情况下,还可以判断用户的输入信息是否合理,例如,是否为计算机可读的内容,或者用户输入的内容是否不是乱码,等等。如果用户的输入信息不合理,则提示用户输入有误;如果用户的输入信息合理,则按照预先设置的任务格式构造初始任务。
接着参考图2所示,为本申请方法实施例在实际应用中的场景架构图。在图2中,可以由实际中的控件组(OBCONTROL)201来执行步骤101和步骤102。其中,OBCONTROL是一个面向用户的交互式系统,可以接收用户的输入信息。
接着返回图1,进入步骤102:将所述初始任务的相关执行信息持久化存储至分布式数据库中;所述相关执行信息包括:用户提交的所述输入信息。
在本步骤中,可以再由OBCONTROL将初始任务的相关执行信息持久化存储至分布式数据库202(参考图2所示)中,其中,相关执行信息可以是步骤101中用户提交的输入信息按照约定格式生成的任务信息,其中包括用户提交的输入信息。当然,还可以包括相关的初始任务的执行信息,例如,初始任务的执行状态,该执行状态可以包括:初始任务是否开始执行,是否执行结束,任务是否执行成功等状态。当然,分布式数据库还可以持久化存储用户需要执行的初始任务和初始任务的其他执行详情,例如在初始任务执行过程中产生的日志,初始任务的执行时间信息,等等。
可以理解的是,在实际应用中,步骤101和步骤102并不需要每一次触发任务时都执行,只需要预先在分布式数据库中存储有任务的相关执行信息即可。因此,本实施例在分布式数据库预先保存了任务的相关执行信息的情况下,可以仅仅包括步骤103~步骤104。
进入步骤103:实时从所述分布式数据库中获取符合预设执行条件的目标任务。
本步骤可以由图2中的TASK引擎201执行。其中,TASK引擎启动之后,可以实时查找分布式数据库以获取待执行的初始任务。
具体的,TASK引擎的查询过程,可以包括:
步骤A1:创建多个线程。
在实际应用中,TASK引擎可以以多线程的方式查询分布式数据库以提高查询效率,首先创建多个线程。
步骤A2:依据所述初始任务的执行状态,实时触发所述多个线程并行从所述分布式数据库中查找:已经到达指定的执行时间的目标任务,和,执行失败之后需要继续执行的目标任务。
然后触发多个线程并行从所述分布式数据库中查找待执行的初始任务。因为分布式数据库中存储了初始任务的执行状态,所以待执行的初始任务可以包括:已经到达指定的执行时间的目标任务,和,执行失败之后需要继续执行的目标任务。如果没有待执行的初始任务,则TASK引擎可以继续查询分布式数据库,直至查询到符合执行条件的目标任务。
步骤104:依据所述目标任务的相关执行信息和任务类型执行所述目标任务;其中,所述目标任务的任务类型用于表示针对所述分布式数据库的操作类型。
在TASK引擎查询到待执行任务的情况下,可以根据目标任务的相关执行信息和任务类型执行该目标任务。其中,本步骤可以由图2中的TASK引擎203和任务执行模块204共同实现。
TASK引擎203可以解析查询到的目标任务,以获取到该目标任务的任务类型,其中,任务类型可以包括oceanbase集群的安装、oceanbase集群的升级、oceanbase集群的扩容、oceanbase集群的单机下线、oceanbase集群的整体下线、在oceanbase集群上下发配置和oceanbase集群重启等类型。并且,TASK引擎203再参考目标任务的相关执行信息来触发目标任务的执行。
具体的,步骤104在实现过程中具体可以包括:
步骤B1:按照所述目标任务的任务类型以及所述目标任务是否为新任务,确定所述目标任务的第一个原子任务,其中,所述原子任务为所述目标任务中的第一个执行的子任务。
在本步骤中,TASK引擎203根据目标任务的任务类型,以及相关执行信息,例如目标任务是否为新任务,来确定目标任务的第一个原子任务。在实际应用中,一个目标任务可以拆分为多个尽量不相关的原子任务来执行。当然,目标任务的相关执行信息还可以包括:任务是否已经执行过但执行失败了,如果任务执行失败是从头重新开始执行任务还是在失败处继续执行任务。对于新任务(即从未执行过的任务),其第一步原子化任务是初始化,而对于非新任务,其第一步原子化任务需要根据命令是否可从失败处继续执行来确定,如果不能从失败处开始执行,则其第一个原子任务也是初始化,而如果可以从失败处开始执行,则其第一个原子任务是该失败了的原子化任务。
步骤B2:依据所述第一个原子任务生成所述目标任务的原子任务状态机。
TASK引擎在确定了目标任务的第一个原子任务后,将目标任务、任务类型和该目标任务的第一个原子任务按任务类型的不同,分别发送给与任务类型对应的任务执行模块204(参考图2所示)进行执行,之后TASK引擎继续查询分布式数据库,进行下一轮的处理。而各个任务执行模块启动后,会监听TASK引擎发送过来的目标任务。如果没有目标任务发送过来,则进行下一轮监听,如果有待执行命令发送过来,则获取目标任务及其第一个原子任务,进而以原子任务的方式执行该目标任务。首先在本步骤中,任务执行模块根据目标任务的第一个原子任务生成该目标任务的原子任务状态机。其中,目标任务的原子任务指的是讲一个大任务划分为若干个小任务,每个小任务代表一个原子任务,同一个目标任务的各个原子任务之间尽量保证不相关性。具体划分方式可以根据任务类型的不同由本领域技术人员自主设置。
步骤B3:在所述原子任务状态机中依据所述第一个原子任务触发所述目标任务的执行,包括:在所述原子任务状态机中触发所述第一个原子任务的执行;判断所述第一个原子任务是否执行成功,如果是,则进入步骤B4,如果否,则进入步骤B5。
任务执行模块触发目标任务进入原子化任务状态机中开始执行第一个原子任务,并判断第一个原子任务是否执行成功。
步骤B4:依据执行所述第一个原子任务产生的结果数据确定并执行所述目标任务的第二个原子任务,以此类推,直至所述目标任务的最后一个原子任务都成功执行。
若第一个原子化任务执行成功,则根据第一个原子任务产生的结果数据确定并执行原子化任务状态机的第二个原子任务,接着判断第二个原子任务是否执行成功,如果成功,则继续根据第二个原子任务产生的结果数据确定并执行原子化任务状态机的第三个原子任务,如此循环执行,直至目标任务的最后一个原子任务都成功执行(即,到达原子任务状态机的状态),则跳出原子任务状态机;或者中途如果有一个原子任务执行失败,也进入步骤B5跳出所述原子任务状态机。跳出原子化任务状态机后表示一个目标任务的执行周期结束。
步骤B5:如果所述目标任务的任一个原子任务执行失败,则跳出所述原子任务状态机。
为了方便本领域技术人员对执行目标任务的具体过程有更详细的了解,下面以目标任务为oceanbase集群安装的任务类型为例,其第一个原子任务为“init_ctx:初始化原子化任务状态机的上下文数据结构”,如果上述第一个原子任务执行成功,则确定第二个原子任务为:“install_init_info:初始化oceanbase集群安装时的数据信息”;接着执行第二个原子任务,如果该第二个原子任务执行成功,则确定第三个原子任务为:“is_obprocess_active:判断分配的服务器上是否已经有oceanbase进程存在”;接着执行第三个原子任务,如果该第三个原子任务执行成功,则确定第四个原子任务为:“is_disk_used:判断分配的服务器上磁盘是否被使用”;接着执行第四个原子任务,如果该第四个原子任务执行成功,则确定第五个原子任务为:“install_rpm:在分配的服务器上安装oceanbase程序”;接着执行第五个原子任务,如果该第五个原子任务执行成功,则确定第六个原子任务为:“stop_ob:在分配的服务器上停止oceanbase进程”;接着执行第六个原子任务,如果该第六个原子任务执行成功,则确定第七个原子任务为:“clean_ob:清理分配的服务器上存在的oceanbase数据”;接着执行第七个原子任务,如果该第七个原子任务执行成功,则确定第八个原子任务为:“init_ob:在分配的服务器上初始化oceanbase进程,使oceanbase进程正常运行起来”;接着执行第八个原子任务,如果该第八个原子任务执行成功,则确定第九个原子任务为:“install_cron:在分配的服务器上安装定时任务”;接着执行第九个原子任务,如果该第九个原子任务执行成功,则确定第十个原子任务为:“install_alarm:在分配的服务器上安装报警”;接着执行第十个原子任务,如果该第十个原子任务执行成功,则确定第十一个原子任务为:“operate_account:在安装好了的oceanbase集群上新建账户”;接着执行第十一个原子任务,如果该第十一个原子任务执行成功,则确定第十二个原子任务为:“install_done:原子化任务状态机进入终态,做一些清理工作”。
而对于其它的任务类型,例如oceanbase集群升级、oceanbase集群扩容、oceanbase集群单机下线、oceanbase集群整体下线、oceanbase集群配置下发或oceanbase集群重启等任务类型,也可依照上述oceanbase集群安装的任务类型一样,将大任务划分为多个原子任务,依次执行,遇到执行失败的原子任务时跳出原子化任务状态机,否则一直执行下去,直到原子化任务状态机的终态。
可以理解的是,为了方便对目标任务的各个原子任务的执行状态和执行结果进行追踪,在目标任务的原子任务执行成功的情况下,还可以包括:
步骤B6:将所述执行成功的原子任务的结果数据按照其所属的目标任务存储至所述分布式数据库中。
在每个原子任务执行过程中,如果执行成功,则将原子任务执行过程中产生的结果数据,例如:执行日志、执行的上下文信息、执行时间、执行结果等信息插入到分布式数据库中,以方便OBCONTROL跟踪任务执行的详情。具体的,各个原子任务可以按照其所属的目标任务来插入至分布式数据库中,在分布式数据库中可以以目标任务为维度来存储该任务下所有原子任务的相关信息。
同样的,在目标任务的原子任务执行失败的情况下,还可以包括:
步骤B7:将所述目标任务的原子任务执行失败的信息按照其所属的目标任务存储至所述分布式数据库中。
当然,在每个原子任务执行过程中,如果执行失败,也可以将该原子任务执行失败的信息存储至分布式数据库中,便于后续该原子任务对应的目标任务可以在失败处继续执行。
那么因为在某个原子任务执行失败之前,该原子任务之前的原子任务都已经执行成功了,因此在某个原子任务执行失败的情况下,还可以包括:
步骤B8:依据所述执行失败的原子任务的上一个原子任务成功执行的结果数据,重新执行所述执行失败的原子任务。
仍以之前的oceanbase集群安装的任务类型为例进行说明,假设第4个原子任务执行失败了,那么可以依据分布式数据库中存储的第3个原子任务成功执行的结果数据,重新执行第4个原子任务,而不需要从第1个原子任务重新执行。
可以理解的是,在本申请实施例中的分布式数据库,主要用于存储用户需要执行的任务和任务执行的详情,任务执行的详情可以包括,任务是否执行成功,如果任务执行失败是在哪一个原子任务执行失败的,任务执行过程中产生的日志,各个任务的每个原子任务执行结束后的上下文环境,各个任务的每个原子任务执行的开始时间,各个任务的每个原子任务执行的结束时间,等等。其中,原子任务执行结束的上下文环境包括:当前oceanbase集群的状态、当前命令执行的状态参数、下一个原子化任务执行需要的信息,等等。
在实际应用中,可选的,在步骤101之前还可以包括:
步骤100:判断用户提交的输入信息是否表示执行新任务,如果是,则进入步骤101;如果否,则进入步骤105。
OBCONTROL在接收到用户的输入信息之后,首先判断一下该输入信息是否表示需要执行新任务,如果是执行新任务再进入步骤101,而如果不是执行新任务,是查询任务执行详情,则OBCONTROL可以继续依据用户的输入信息,从分布式数据库中查询得到用户所需要的任务执行的详情信息,并将此详情信息在界面上展现给用户。
步骤105:根据所述输入信息从分布式数据库中查询对应的详情数据以供显示。
进而将在分布式数据库中查询到的详情数据展示给用户。例如,某个任务的执行状态,或者执行结果等。
可见,在本申请实施例中,接收用户的输入信息后即可触发目标任务的执行,并且在执行任务的过程中,如果某个任务执行失败,还可以在失败处的原子任务继续执行下去,无需从头开始执行该任务,使得任务执行的效率比较高。同时随着分布式数据库oceanbase集群或者服务器数量加大时,特别是当oceanbase集群或者服务器的数量达到规模化的程度时,其高效的任务自动执行效果也就越发明显。进一步的,在本申请实施例中,任务执行过程中分布式数据库oceanbase冶无需停止服务,这对线上生产环境同样具有重大意义。
对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
与上述本申请一种基于分布式数据库的任务执行方法实施例所提供的方法相对应,参见图3,本申请还提供了一种基于分布式数据库的任务执行装置实施例,在本实施例中,该装置可以包括:预处理单元30和任务执行单元31,其中,
所述预处理单元30可以包括生成模块301和存储模块302,所述生成模块301,用于响应于用户提交输入信息,按照预先设置的任务格式生成待执行的初始任务;所述存储模块302,用于将所述初始任务的相关执行信息持久化存储至分布式数据库中;所述相关执行信息包括:所述初始任务的执行状态。
所述任务执行单元31可以包括:获取模块311,用于实时从所述分布式数据库中获取符合预设执行条件的目标任务;执行模块312,用于依据所述目标任务的相关执行信息和任务类型执行所述目标任务;其中,所述目标任务的任务类型用于表示针对所述分布式数据库的操作类型。
其中,所述获取模块311可以包括:
创建子模块,用于创建多个线程;和,第一触发子模块,用于依据所述初始任务的执行状态,实时触发所述多个线程并行从所述分布式数据库中查找:已经到达指定的执行时间的目标任务,和,执行失败之后需要继续执行的目标任务。
其中,所述执行模块312可以包括:
确定子模块,用于按照所述目标任务的任务类型以及所述目标任务是否为新任务,确定所述目标任务的第一个原子任务,其中,所述原子任务为所述目标任务中的第一个执行的子任务;生成子模块,用于依据所述第一个原子任务生成所述目标任务的原子任务状态机;第二触发子模块,用于在所述原子任务状态机中依据所述第一个原子任务触发所述目标任务的执行,包括:在所述原子任务状态机中触发所述第一个原子任务的执行;判断所述第一个原子任务是否执行成功,如果是,则依据执行所述第一个原子任务产生的结果数据确定并执行所述目标任务的第二个原子任务,以此类推,直至所述目标任务的最后一个原子任务都成功执行;和,结束子模块,用于如果所述目标任务的任一个原子任务执行失败,则跳出所述原子任务状态机。
其中,所述执行模块312还可以包括:
第一存储子模块,用于将所述执行成功的原子任务的结果数据按照其所属的目标任务存储至所述分布式数据库中;和,第二存储子模块,用于将所述目标任务的原子任务执行失败的信息按照其所属的目标任务存储至所述分布式数据库中。
其中,所述执行模块312还可以包括:
重新触发子模块,用于依据所述执行失败的原子任务的上一个原子任务成功执行的结果数据,重新执行所述执行失败的原子任务。
其中,所述预处理单元30还可以包括:
判断模块300,用于判断用户提交的输入信息是否表示执行新任务;
触发模块303,用于在所述判断模块的结果为是的情况下,触发生成模块;
显示模块304,用于在所述判断子模块的结果为否的情况下,根据所述输入信息从分布式数据库中查询对应的详情数据以供显示。
在本申请实施例中,接收用户的输入信息后即可触发目标任务的执行,并且在执行任务的过程中,如果某个任务执行失败,还可以在失败处的原子任务继续执行下去,无需从头开始执行该任务,使得任务执行的效率比较高。同时随着分布式数据库oceanbase集群或者服务器数量加大时,特别是当oceanbase集群或者服务器的数量达到规模化的程度时,其高效的任务自动执行效果也就越发明显。进一步的,在本申请实施例中,任务执行过程中分布式数据库oceanbase冶无需停止服务,这对线上生产环境同样具有重大意义。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的基于分布式数据库的任务执行方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种基于分布式数据库的任务执行方法,其特征在于,该方法包括:任务执行过程,所述任务执行过程包括:
实时从分布式数据库中获取符合预设执行条件的目标任务;其中,所述分布式数据库中保存有任务的相关执行信息;
依据所述目标任务的相关执行信息和任务类型执行所述目标任务;其中,所述目标任务的任务类型用于表示针对所述分布式数据库的操作类型。
2.根据权利要求1所述的方法,其特征在于,还包括:预处理过程,该预处理过程包括:
响应于用户提交输入信息,按照预先设置的任务格式生成待执行的初始任务;
将所述初始任务的相关执行信息持久化存储至分布式数据库中;所述相关执行信息包括:用户提交的所述输入信息。
3.根据权利要求2所述的方法,其特征在于,所述相关执行信息还包括:所述初始任务的执行状态;则所述实时从所述分布式数据库中获取符合预设执行条件的目标任务,包括:
创建多个线程;
依据所述初始任务的执行状态,实时触发所述多个线程并行从所述分布式数据库中查找:已经到达指定的执行时间的目标任务,和,执行失败之后需要继续执行的目标任务。
4.根据权利要求2所述的方法,其特征在于,所述按照所述目标任务的相关执行信息和任务类型执行所述目标任务,包括:
按照所述目标任务的任务类型以及所述目标任务是否为新任务,确定所述目标任务的第一个原子任务,其中,所述原子任务为所述目标任务中的第一个执行的子任务;
依据所述第一个原子任务生成所述目标任务的原子任务状态机;
在所述原子任务状态机中依据所述第一个原子任务触发所述目标任务的执行,包括:在所述原子任务状态机中触发所述第一个原子任务的执行;判断所述第一个原子任务是否执行成功,如果是,则依据执行所述第一个原子任务产生的结果数据确定并执行所述目标任务的第二个原子任务,以此类推,直至所述目标任务的最后一个原子任务都成功执行;
如果所述目标任务的任一个原子任务执行失败,则跳出所述原子任务状态机。
5.根据权利要求4所述的方法,其特征在于,在所述目标任务的原子任务执行成功的情况下,还包括:
将所述执行成功的原子任务的结果数据按照其所属的目标任务存储至所述分布式数据库中;
在所述目标任务的原子任务执行失败的情况下,还包括:
将所述目标任务的原子任务执行失败的信息按照其所属的目标任务存储至所述分布式数据库中。
6.根据权利要求5所述的方法,其特征在于,在某个原子任务执行失败的情况下,还包括:
依据所述执行失败的原子任务的上一个原子任务成功执行的结果数据,重新执行所述执行失败的原子任务。
7.根据权利要求2所述的方法,其特征在于,所述预处理过程还包括:
判断用户提交的输入信息是否表示执行新任务,如果是,则执行按照预先设置的任务格式生成待执行的初始任务的步骤;如果否,则根据所述输入信息从分布式数据库中查询对应的详情数据以供显示。
8.一种基于分布式数据库的任务执行装置,其特征在于,该装置包括:任务执行单元,所述任务执行单元包括:
获取模块,用于实时从分布式数据库中获取符合预设执行条件的目标任务;其中,所述分布式数据库中保存有任务的相关执行信息;
执行模块,用于依据所述目标任务的相关执行信息和任务类型执行所述目标任务;其中,所述目标任务的任务类型用于表示针对所述分布式数据库的操作类型。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括预处理单元,该预处理单元包括:生成模块和存储模块,所述生成模块,用于响应于用户提交输入信息,按照预先设置的任务格式生成待执行的初始任务;所述存储模块,用于将所述初始任务的相关执行信息持久化存储至分布式数据库中;所述相关执行信息包括:用户提交的所述输入信息。
10.根据权利要求9所述的装置,其特征在于,所述相关执行信息还包括:初始任务的执行状态,则所述获取模块包括:
创建子模块,用于创建多个线程;
第一触发子模块,用于依据所述初始任务的执行状态,实时触发所述多个线程并行从所述分布式数据库中查找:已经到达指定的执行时间的目标任务,和,执行失败之后需要继续执行的目标任务。
11.根据权利要求9所述的装置,其特征在于,所述执行模块包括:
确定子模块,用于按照所述目标任务的任务类型以及所述目标任务是否为新任务,确定所述目标任务的第一个原子任务,其中,所述原子任务为所述目标任务中的第一个执行的子任务;
生成子模块,用于依据所述第一个原子任务生成所述目标任务的原子任务状态机;
第二触发子模块,用于在所述原子任务状态机中依据所述第一个原子任务触发所述目标任务的执行,包括:在所述原子任务状态机中触发所述第一个原子任务的执行;判断所述第一个原子任务是否执行成功,如果是,则依据执行所述第一个原子任务产生的结果数据确定并执行所述目标任务的第二个原子任务,以此类推,直至所述目标任务的最后一个原子任务都成功执行;
结束子模块,用于如果所述目标任务的任一个原子任务执行失败,则跳出所述原子任务状态机。
12.根据权利要求11所述的装置,其特征在于,所述执行模块还包括:
第一存储子模块,用于将所述执行成功的原子任务的结果数据按照其所属的目标任务存储至所述分布式数据库中;
第二存储子模块,用于将所述目标任务的原子任务执行失败的信息按照其所属的目标任务存储至所述分布式数据库中。
13.根据权利要求12所述的装置,其特征在于,所述执行模块还包括:
重新触发子模块,用于依据所述执行失败的原子任务的上一个原子任务成功执行的结果数据,重新执行所述执行失败的原子任务。
14.根据权利要求9所述的装置,其特征在于,所述预处理单元还包括:
判断模块,用于判断用户提交的输入信息是否表示执行新任务;
触发模块,用于在所述判断模块的结果为是的情况下,触发生成模块;
显示模块,用于在所述判断子模块的结果为否的情况下,根据所述输入信息从分布式数据库中查询对应的详情数据以供显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510194020.1A CN106156198B (zh) | 2015-04-22 | 2015-04-22 | 基于分布式数据库的任务执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510194020.1A CN106156198B (zh) | 2015-04-22 | 2015-04-22 | 基于分布式数据库的任务执行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106156198A true CN106156198A (zh) | 2016-11-23 |
CN106156198B CN106156198B (zh) | 2019-12-27 |
Family
ID=57346308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510194020.1A Active CN106156198B (zh) | 2015-04-22 | 2015-04-22 | 基于分布式数据库的任务执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106156198B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784479A (zh) * | 2017-02-16 | 2018-03-09 | 平安科技(深圳)有限公司 | 一种业务流程处理方法和装置 |
CN108255588A (zh) * | 2017-03-13 | 2018-07-06 | 平安科技(深圳)有限公司 | 一种自动化编排任务调度方法及装置 |
CN109445928A (zh) * | 2018-11-14 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
CN109785042A (zh) * | 2018-12-13 | 2019-05-21 | 深圳平安财富宝投资咨询有限公司 | 分布式部署的异常处理方法、服务器、存储介质及装置 |
CN110825391A (zh) * | 2019-10-31 | 2020-02-21 | 北京金山云网络技术有限公司 | 服务管理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103377075A (zh) * | 2012-04-28 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 管理任务的方法、装置及系统 |
CN103685402A (zh) * | 2012-09-17 | 2014-03-26 | 联想(北京)有限公司 | 远程控制资源的方法、服务器和任务发起设备 |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
US20140337999A1 (en) * | 2010-11-24 | 2014-11-13 | Skai, Inc. | System and method for access control and identity management |
-
2015
- 2015-04-22 CN CN201510194020.1A patent/CN106156198B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140337999A1 (en) * | 2010-11-24 | 2014-11-13 | Skai, Inc. | System and method for access control and identity management |
CN103377075A (zh) * | 2012-04-28 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 管理任务的方法、装置及系统 |
CN103685402A (zh) * | 2012-09-17 | 2014-03-26 | 联想(北京)有限公司 | 远程控制资源的方法、服务器和任务发起设备 |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107784479A (zh) * | 2017-02-16 | 2018-03-09 | 平安科技(深圳)有限公司 | 一种业务流程处理方法和装置 |
WO2018149396A1 (zh) * | 2017-02-16 | 2018-08-23 | 平安科技(深圳)有限公司 | 一种业务流程处理方法、可读存储介质、终端设备及装置 |
CN108255588A (zh) * | 2017-03-13 | 2018-07-06 | 平安科技(深圳)有限公司 | 一种自动化编排任务调度方法及装置 |
CN109445928A (zh) * | 2018-11-14 | 2019-03-08 | 郑州云海信息技术有限公司 | 一种访问请求处理方法、装置、设备及可读存储介质 |
CN109785042A (zh) * | 2018-12-13 | 2019-05-21 | 深圳平安财富宝投资咨询有限公司 | 分布式部署的异常处理方法、服务器、存储介质及装置 |
CN110825391A (zh) * | 2019-10-31 | 2020-02-21 | 北京金山云网络技术有限公司 | 服务管理方法、装置、电子设备及存储介质 |
CN110825391B (zh) * | 2019-10-31 | 2023-10-13 | 北京金山云网络技术有限公司 | 服务管理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106156198B (zh) | 2019-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111290854B (zh) | 任务管理方法、装置、系统、计算机存储介质及电子设备 | |
CN106156198A (zh) | 基于分布式数据库的任务执行方法及装置 | |
CN103365929B (zh) | 一种数据库连接的管理方法及系统 | |
US8832173B2 (en) | System and method of multithreaded processing across multiple servers | |
CN110245035A (zh) | 一种链路跟踪方法及装置 | |
CN100573457C (zh) | 一种金融数据实现etl加工的方法和系统 | |
CN106033562B (zh) | 事务处理方法、事务参与节点及事务协调节点 | |
CN105447046A (zh) | 一种分布式系统数据一致性处理方法、装置和系统 | |
CN105677462A (zh) | 基于物联网的分布式任务系统及业务处理方法 | |
WO2015065366A1 (en) | Process model catalog | |
CN107113341A (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
CN108491254A (zh) | 一种数据仓库的调度方法及装置 | |
CN109302321A (zh) | 服务器、业务需求处理系统、方法和监控系统 | |
CN109614227A (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
CN106713042A (zh) | 一种确定网络拓扑方法及装置 | |
CN107784400B (zh) | 一种业务模型的执行方法和装置 | |
CN110096521A (zh) | 日志信息处理方法及装置 | |
CN110196759A (zh) | 分布式事务处理方法和装置、存储介质及电子装置 | |
CN101685452A (zh) | 数据仓库调度方法及调度系统 | |
WO2016113747A1 (en) | A query processing engine recommendation method and system | |
WO2014196980A1 (en) | Prioritizing log messages | |
CN110442647A (zh) | 数据一致性同步方法、装置及计算机可读存储介质 | |
CN107291938B (zh) | 订单查询系统及方法 | |
US20160342899A1 (en) | Collaborative filtering in directed graph | |
CN115147031B (zh) | 清算工作流执行方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231218 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box four, 847, capital building, Grand Cayman Island capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |