具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
批处理:现实工作中很多任务的工作量非常大,在分布式环境下需要将大任务拆分成若干个子任务由多台服务器处理,等多个子任务处理完毕后标志着整个大任务处理完毕。比如大文件拆分处理,mapreduce任务拆分处理等。
任务宕机:在分布式环境下任意一台服务器宕机的概率是非常高的,如果运行子任务的服务器发生宕机,会导致子任务运行不完,进而导致整个大任务运行不完。
在本说明书中,提供了一种分布式系统及分布式任务处理方法、计算设备及存储介质,在下面的实施例中逐一进行详细说明。
本说明书一个或多个实施例提供了一种分布式系统,如图1所示,包括管理模块和至少两个任务处理节点,所述至少两个任务处理节点被配置为接收n个子任务并执行,创建本地定时任务,所述本地定时任务以第一时间间隔阈值为周期,更新运行在所述至少两个任处理节点上的子任务的末次访问时间直至所述子任务运行完毕,其中n为大于1的正整数,所述管理模块被配置为创建监控任务,所述监控任务监控运行在所述至少两个任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差是否超过第二时间间隔阈值。
在所述运行在所述至少两个任务处理节点中的任一所述任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差超过第二时间间隔阈值的情况下,确定所述运行在所述至少两个任务处理节点中的任一所述任务处理节点上的子任务发生异常,所述管理模块进一步被配置为将发生异常的子任务初始化并重新分发,其中,所述第二时间间隔阈值大于所述第一时间间隔阈值。
在本说明书提供的一个或多个实施例中,所述分布式系统还包括数据库,在所述运行在所述至少两个任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差小于第二时间间隔阈值的情况下,确定所述运行在所述至少两个任务处理节点上的子任务正常工作,所述至少两个任务处理节点进一步被配置为将运行完毕的n个子任务上报至所述数据库,所述管理模块被进一步被配置为将所述运行完毕的所述n个子任务的执行结果发送至所述至少两个任务处理节点中的任一所述任务处理节点。
在本说明书提供的一个或多个实施例中,所述管理模块还被配置为获取主任务并将所述主任务发送至所述至少两个任务处理节点中的任一所述任务处理节点,所述至少两个任务处理节点中的任一所述任务处理节点被配置为将所述主任务拆分为n个子任务,将所述n个子任务上报至所述数据库,所述管理模块进一步还配置为从所述数据库中获取n个子任务并将所述n个子任务分发至所述至少两个任务处理节点。
在本说明书提供的一个或多个实施例中,所述分布式系统由通过网络进行通信并为了完成共同的某个主任务而协调工作的多个服务器即多个任务处理节点组成,数据库存储在所述多个服务器中的任一所述服务器内,其他服务器和所述管理模块被配置为无论何时都能够与所述数据库直接通信从而读取或插入信息,在理想的情况下所述n个子任务可以在n台服务器上执行,因此在本说明书中假定所述n个子任务中每一个子任务均在一个服务器上执行。
在分布式环境下服务器(任务处理节点)宕机的概率是非常高的,即虽然单个任务处理节点的故障概率较低,但任务处理节点数目达到一定规模时出故障的概率就变高了,分布式系统需要保证故障发生的时候,系统仍然是可用的,这就需要监控每一个任务处理节点的工作状态,在任意一个任务处理节点故障的情况下将该任务处理节点负责的子任务转移到其他任务处理节点重新执行,因此本说明书的技术方案的目的在于建立一种服务器宕机的探测机制,自动将出现故障的子任务恢复起来重新执行,进而保证主任务的正确执行。
一种常规的技术方案是监控运行中的子任务如果超过指定的时长还在运行,就认为该子任务所在的服务器可能宕机了,从而将该子任务的状态恢复到初始化重新执行,但是问题在于子任务的运行时长很难控制,有些子任务可能需要较长的运行时间,如果将机械的将其初始化并重新执行,那么同一个子任务就会在两台服务器上共同执行,带来诸多问题。
在本说明书提供的一个或多个实施例中,所述至少两个任务处理节点被配置为在子任务所处的线程里创建一个本地定时任务,所述本地定时任务以第一时间间隔阈值为周期,更新运行在所述至少两个任处理节点上的子任务的末次访问时间,如果服务器没有宕机,则运行在该服务器上的子任务的末次访问时间应当按照指定的时间间隔即第一时间间隔阈的频率更新至子任务运行完毕;如果服务器宕机,则运行在该服务器上的子任务也会停止即发生异常,所述发生异常的子任务的末次访问时间也就会驻留在历史上的某一个时间点永远不发生变化,并且记录在所述数据库中的所述发生异常的子任务的任务状态还是运行中。
因此,在本地定时任务的定时更新机制下,所述管理模块进一步被配置为创建监控任务,所述监控任务用来监控运行在服务器上子任务的末次访问时间的更新情况,若所述运行在服务器上子任务的末次访问时间超过指定时长即第二时间间隔阈值仍然未更新,则可以断定服务器宕机导致子任务异常,从而将异常的子任务重新捞取起来继续执行,起到任务自动恢复执行的作用。
本说明书的分布式系统通过在运行子任务的任务处理节点上创建本地定时任务,每隔固定的时间间隔更新子任务的末次访问时间,形成一种子任务的运行时间的定时更新机制,同时,通过管理模块创建监控任务,监控运行中的子任务的运行时间是否按时更新,超过一定的时长未更新则确认该子任务出现异常,再将出现异常子任务的状态恢复到初始化并重新执行,从而保证了主任务运行的正确性。
在本说明书提供的一个或多个实施例中,在所述数据库中存储有主任务表和子任务表,所述主任务表的主任务表结构如表1所示,所述子任务表的表结构如表2所示,所述本地定时任务以第一时间间隔阈值为周期,更新所述运行在所述任务处理节点上的子任务的末次访问时间的时间戳,所述本地定时任务将所述更新后的末次访问时间的时间戳上报并记录至所述子任务表中。
表1
字段 |
描述 |
task_id |
主任务唯一标识 |
status |
主任务状态机(Pending、SplitUp、Merged、Finalize) |
start_time |
主任务开始运行时间 |
gmt_create |
主任务创建时间 |
gmt_modified |
主任务修改时间 |
memo |
主任务额外信息 |
表2
字段 |
描述 |
slice_id |
子任务唯一标识 |
task_id |
子任务对应的主任务taskID |
status |
子任务状态机(INIT、RUNNING、COMPLETE) |
gmt_create |
子任务创建时间 |
gmt_modified |
子任务修改时间 |
gmt_last_access_time |
子任务的末次访问时间 |
memo |
子任务的额外信息 |
在本说明书提供的一个或多个实施例中,如图2所示,假设所述n个子任务在n个服务器上运行,当所述n个子任务中的任一所述子任务i(1<=i<=n)在对应的服务器i上运行的时候,在所述子任务i所处的线程里启动一个所述本地定时任务,所述本地定时任务以第一时间间隔阈值为周期,更新所述运行在所述任务处理节点上的子任务的末次访问时间的时间戳,并将所述更新后的末次访问时间的时间戳上报并记录至所述子任务表中的gmt_last_access_time字段。
可选的,所述本地定时任务可以通过Java开发工具包自带的定时器工具方式实现。
可选的,所述第一时间间隔阈值可以是5分钟,即所述本地定时任务每间隔5分钟更新一次运行在所述任务处理节点上的子任务的末次访问时间的时间戳,并将所述更新后的末次访问时间的时间戳上报并记录至所述子任务表中的gmt_last_access_time字段,若所述子任务i的运行需要30分钟,则所述本地定时任务会在在第5分钟、第10分钟、第15分钟、第20分钟、第25分钟的时候会更新末次访问时间的时间戳。
在本实施例中,所述监控任务以固定周期对所述子任务表中的末次访问时间进行扫描,若记录在所述子任务表中的子任务i的末次访问时间的时间戳与第二时间间隔阈值之和小于扫描时的时间戳,并且所述第二时间间隔阈值大于所述第一时间间隔阈值,则确定所述服务器i宕机导致子任务i出现异常,因为基于本地定时任务,在子任务i正常运行的情况下,不会出现子任务表中的末次访问时间超过第一时间间隔阈值还未更新的情况。
在本实施例中,假设所述第一时间间隔阈值为5分钟,所述第二时间间隔阈值为10分钟,监控任务以2分钟为周期对所述子任务表中的末次访问时间进行扫描,则所述本地定时任务在第5分钟的时候会更新子任务i的gmt_last_access_time字段,若所述服务器i在第6分钟的时候宕机,则导致子任务表中子任务i的gmt_last_access_time字段固定为第5分钟更新的时间戳,当所述监控任务在第16分钟的时候去扫描子任务表中子任务i的gmt_last_access_time字段,发现子任务i的gmt_last_access_time字段超过10分钟没有更新,则确定所述服务器i宕机导致子任务i出现异常。
在本说明书提供的一个或多个实施例中,在所述主任务表中存储有主任务状态机,所述主任务状态机中所述主任务的任务状态包括待定(Pending)、分片(SplitUp)、融合(Merged)和结束(Finalize),在所述子任务表中存储有子任务状态机,所述子任务状态机中所述子任务的任务状态包括开始(INIT)、运行中(RUNNING)和完成(COMPLETE)。
如图3所示,在本实施例中,所述管理模块被配置为创建扫描任务,所述扫描任务扫描所述主任务表并根据所述主任务表获取并运行任务状态为待定的主任务,扫描条件如下:
select*from task where status in(‘Pending’,’SplitUp’,’Merged’)andstart_time>=current_time;
即当一个主任务的任务状态为待定(Pending)时,在到达主任务开始运行时间(start_time)的时候就会被所述扫描任务捞起并开始运行,所述管理模块将所述任务状态为待定的主任务发送至所述至少两个任务处理节点中的任一所述任务处理节点,所述至少两个任务处理节点中的任一所述任务处理节点被配置为将所述任务状态为待定的主任务拆分为任务状态为开始(INIT)的n个子任务,所述任务状态为开始的n个子任务落在子任务表中,所述扫描任务将拆分后的所述任务状态为待定的主任务更新为任务状态为分片(SplitUp)的主任务,其中,所述任务状态为分片的主任务与对应的任务状态为开始的n个子任务之间通过主任务唯一标识(task_id)相关联。
所述扫描任务接下来扫描所述任务状态为分片的主任务,并从所述数据库中获取与所述任务状态为分片的主任务对应的任务状态为开始的n个子任务,捞取逻辑如下:
select slice_id from task_slice where task_id=#taskId#and status=‘IN IT’;
所述扫描任务通过发送消息的形式,将所述任务状态为开始的n个子任务分发至所述至少两个任务处理节点。
所述至少两个任务处理节点接收消息并执行所述任务状态为开始的n个子任务,所述扫描任务将所述任务状态为开始的n个子任务更新为任务状态为运行中(RUNNING)的n个子任务,若所述任务状态为运行中的n个子任务中的任一所述子任务运行完毕,则所述扫描任务将所述任务状态为运行的n个子任务中的任一所述子任务更新为任务状态为完成(COMPLETE)的子任务。
其中,所述扫描任务在任务状态为分片的主任务的情况下,继续扫描所述任务状态为分片的主任务对应的所述n个子任务的任务状态,统计并判断所述任务状态为完成的子任务的个数是否为n,若所述任务状态为完成的子任务的个数为n,则所述至少两个任务处理节点被配置为将任务状态为完成的n个子任务上报至所述数据库内,所述扫描任务将任务状态为分片的主任务更新为任务状态为融合(Merged)的主任务;若所述任务状态为完成的子任务的个数不为n,则所述扫描任务将所述n个子任务中任务状态仍为开始的子任务分发至所述至少两个任务处理节点中的任一任务处理节点。
判断脚本如下:
若所述n个子任务中的任一所述子任务的任务状态为运行中,并且所述运行在所述任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差超过第二时间间隔阈值,则所述运行在所述任务处理节点上的子任务发生异常。判断脚本如下:
select*from task_slice
where status=‘RUNNING’and gmt_last_access_time+10min<curre nt_timestamp。
在此情况下,所述管理模块更新所述子任务表,将所述发生异常的子任务的任务状态更新为开始,将所述发生异常的子任务的子任务修改时间更新为系统当前时间,将所述发生异常的子任务的末次访问时间更新为当前时间戳,所述管理模块进一步将所述发生异常的子任务根据更新后的子任务表分发至所述两个任务处理节点中的另一个任务处理节点内重新执行,恢复脚本如下:
update task_slice set status=‘INIT’,gmt_modified=current_timestamp,
gmt_last_access_time=current_timestamp
where slice_id in#sliceIdList#;
所述扫描任务接下来扫描所述任务状态为融合的主任务,从所述数据库中获取所述任务状态为融合的主任务对应的任务状态为完成的n个子任务的n个执行结果,将所述任务状态为完成的n个子任务的n个执行结果发送至所述至少两个任务处理节点中的任一任务处理节点,所述至少两个任务处理节点中的任一任务处理节点接收并合并所述任务状态为完成的n个子任务的n个执行结果得到所述任务状态为融合的主任务的执行结果,所述扫描任务将所述任务状态为融合的主任务更新为任务状态为结束(Finalize)的主任务。
图4是示出了根据本说明书一实施例的计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
其中,处理器420可以执行图5所示方法中的步骤。图5是示出了根据本说明书一实施例的分布式任务处理方法的示意性流程图,其中,所述分布式任务处理方法由管理模块执行,包括步骤502至步骤510。
步骤502:创建监控任务,所述监控任务监控运行在至少两个任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差是否超过第二时间间隔阈值。
步骤504:在所述运行在至少两个任务处理节点中的任一所述任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差超过第二时间间隔阈值的情况下,确定所述运行在至少两个任务处理节点中的任一所述任务处理节点上的子任务发生异常。
在本说明书的一个或多个实施例中,所述运行在所述至少两个任务处理节点中的任一所述任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差超过第二时间间隔阈值包括:
所述监控任务以固定周期对子任务表中的末次访问时间进行扫描,记录在所述子任务表中的所述n个子任务中的任一所述子任务的末次访问时间的时间戳与第二时间间隔阈值之和小于扫描时的时间戳。
步骤506:将发生异常的子任务初始化并重新分发。
在本说明书的一个或多个实施例中,在所述子任务表中存储有子任务修改时间,所述将发生异常的子任务初始化并重新分发包括:
所述监控任务更新所述子任务表,将所述发生异常的子任务的任务状态更新为开始,将所述发生异常的子任务的子任务修改时间更新为当前时间,将所述发生异常的子任务的末次访问时间更新为当前时间戳;
所述监控任务将所述发生异常的子任务根据更新后的子任务表分发至所述两个任务处理节点中的另一个任务处理节点内重新执行。
步骤508:在所述运行在至少两个任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差小于第二时间间隔阈值的情况下,确定所述运行在至少两个任务处理节点上的子任务正常工作。
步骤510:将运行完毕的n个子任务的执行结果发送至所述至少两个任务处理节点中的任一所述任务处理节点,其中n为大于1的正整数。
本说明书的分布式任务处理方法通过创建监控任务,所述监控任务能够监控运行在至少两个任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差是否超过第二时间间隔阈值,从而判断所述运行在至少两个任务处理节点中的任一所述任务处理节点上的子任务发生是否异常,并将发生异常的子任务重新分发,从而保证了主任务的正常运行。
其中,处理器420可以执行图6所示方法中的步骤。图6是示出了根据本说明书一实施例的分布式任务处理方法的示意性流程图,其中,所述分布式任务处理方法由至少两个任务处理节点中的任一所述任务处理节点执行,包括步骤602至步骤614。
步骤602:获取主任务并将所述主任务发送至所述至少两个任务处理节点中的任一所述任务处理节点。
在本说明书的一个或多个实施例中,所述获取主任务并将所述主任务发送至所述至少两个任务处理节点中的任一所述任务处理节点包括:
创建扫描任务,所述扫描任务扫描所述主任务表并根据所述主任务表获取并运行任务状态为待定的主任务;
所述扫描任务将所述任务状态为待定的主任务发送至所述至少两个任务处理节点中的任一所述任务处理节点。
所述扫描任务将拆分后的所述任务状态为待定的主任务更新为任务状态为分片的主任务。
步骤604:从数据库中获取所述n个子任务并将所述n个子任务分发至所述至少两个任务处理节点。
在本说明书的一个或多个实施例中,所述从数据库中获取n个子任务并将所述n个子任务分发至所述至少两个任务处理节点包括:
所述扫描任务扫描所述任务状态为分片的主任务,并从所述数据库中获取与所述任务状态为分片的主任务对应的任务状态为开始的n个子任务。
所述扫描任务通过发送消息的形式,将所述任务状态为开始的n个子任务分发至所述至少两个任务处理节点。
所述扫描任务将所述任务状态为开始的n个子任务更新为任务状态为运行中的n个子任务。
若所述任务状态为运行中的n个子任务中的任一所述子任务运行完毕,则所述扫描任务将所述任务状态为运行的n个子任务中的任一所述子任务更新为任务状态为完成的子任务。
步骤606:创建监控任务,所述监控任务监控运行在至少两个任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差是否超过第二时间间隔阈值。
步骤608:在所述运行在至少两个任务处理节点中的任一所述任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差超过第二时间间隔阈值的情况下,确定所述运行在至少两个任务处理节点中的任一所述任务处理节点上的子任务发生异常。
在本说明书的一个或多个实施例中,所述运行在所述任务处理节点上的子任务发生异常包括:
所述n个子任务中的任一所述子任务的任务状态为运行中,所述运行在所述任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差超过第二时间间隔阈值。
步骤610:将发生异常的子任务初始化并重新分发,其中,所述第二时间间隔阈值大于所述第一时间间隔阈值。
步骤612:在所述运行在至少两个任务处理节点上的子任务的末次访问时间与监控采集时刻的时间差小于第二时间间隔阈值的情况下,确定所述运行在至少两个任务处理节点上的子任务正常工作。
步骤614:将运行完毕的n个子任务的执行结果发送至所述至少两个任务处理节点中的任一所述任务处理节点,其中n为大于1的正整数。
在本说明书的一个或多个实施例中,在将所述运行完毕的所述n个子任务的执行结果发送至所述至少两个任务处理节点中的任一所述任务处理节点之前,还包括:
所述扫描任务扫描所述n个子任务的任务状态,统计并判断所述任务状态为完成的子任务的个数是否为n。
若所述任务状态为完成的子任务的个数为n,则所述扫描任务将任务状态为分片的主任务更新为任务状态为融合的主任务。
若所述任务状态为完成的子任务的个数不为n,则所述扫描任务将所述n个子任务中任务状态为开始的子任务分发至所述至少两个任务处理节点中的任一任务处理节点。
在本说明书的一个或多个实施例中,所述将所述运行完毕的所述n个子任务的执行结果发送至所述至少两个任务处理节点中的任一所述任务处理节点包括:
所述扫描任务扫描所述任务状态为融合的主任务,从所述数据库中获取所述任务状态为融合的主任务对应的任务状态为完成的n个子任务的n个执行结果,将所述任务状态为完成的n个子任务的n个执行结果发送至所述至少两个任务处理节点中的任一任务处理节点。
所述扫描任务扫描所述任务状态为融合的主任务,将所述任务状态为融合的主任务更新为任务状态为结束的主任务。
本说明书通过的分布式任务处理方法通过创建扫描任务,对整个主任务的工作进程进行任务电镀和状态监控,从而提高了批处理的处理效率。
其中,处理器420可以执行图7所示方法中的步骤。图7是示出了根据本说明书一实施例的分布式任务处理方法的示意性流程图,包括步骤702至步骤706。
步骤702:接收n个子任务中的任一所述子任务并执行。
在本说明书的一个或多个实施例中,在接收n个子任务中的任一所述子任务并执行之前,还包括:
将主任务拆分为n个子任务,将所述n个子任务上报至所述数据库。
在本说明书的一个或多个实施例中,所述将主任务拆分为n个子任务包括:
将任务状态为待定的主任务拆分为任务状态为开始的n个子任务。
在本说明书的一个或多个实施例中,所述接收n个子任务中的任一所述子任务包括:
接收消息并执行任务状态为开始的n个子任务中的任一所述子任务。
步骤704:创建本地定时任务,所述本地定时任务以第一时间间隔阈值为周期,更新运行在所述n个子任务中的任一所述子任务的末次访问时间直至所述n个子任务中的任一所述子任务运行完毕,其中n为大于1的正整数。
在本说明书的一个或多个实施例中,所述本地定时任务以第一时间间隔阈值为周期,更新运行在所述n个子任务中的任一所述子任务的末次访问时间包括:
所述本地定时任务以第一时间间隔阈值为周期,更新所述运行在所述任务处理节点上的子任务的末次访问时间的时间戳;
所述本地定时任务将所述更新后的末次访问时间的时间戳上报并记录至子任务表中。
步骤706:将运行完毕的所述n个子任务中的任一所述子任务上报至数据库。
在本说明书的一个或多个实施例中,在将运行完毕的所述n个子任务中的任一所述子任务上报至所述数据库之后,还包括:
接收并合并任务状态为完成的n个子任务的n个执行结果得到任务状态为融合的主任务的执行结果;
将所述任务状态为融合的主任务的执行结果上报至所述数据库。
本说明书的分布式任务处理方法通过创建本地定时任务,形成了一种本地定时更新机制,从而能够在任务处理节点宕机的情况下批处理任务自动回复调度起来。
本说明书一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现本说明书的分布式任务处理方法的技术方案。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的分布式任务处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述分布式任务处理方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或平台、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。