任务执行系统、方法、服务器及计算机可读存储介质转让专利

申请号 : CN202210434691.0

文献号 : CN114546629B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周中瑞王志超

申请人 : 深圳美云集网络科技有限责任公司

摘要 :

本申请公开了一种任务执行系统、方法、服务器及计算机可读存储介质。任务执行系统可包括:分发器,被配置为基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;消息推送器,被配置为将任务消息队列中的待推送的任务消息推送给执行器;执行器,被配置为当接收到被推送的任务消息时,执行接收到的任务消息。本申请可更灵活的控制任务消息的执行。

权利要求 :

1.一种任务执行系统,用于企业资源计划计算机系统,其特征在于,所述任务执行系统包括分发器、消息推送器、执行器、检查器、快照与记录处理器和任务删除器;

在所述计算机系统中,用户需求通过执行相应的任务来实现,所述用户需求通过任务描述来记录,所述任务描述用于表示具体的任务;

所述任务执行系统可基于用户输入生成所述任务描述,并且基于所述任务描述生成任务描述快照,所述任务描述快照记录所述任务描述的内容,在所述任务执行系统中预先存储所述任务描述快照;

所述任务执行系统在所述任务描述生成之后发布任务调度记录,通过所述任务调度记录来记录所述任务描述,所述任务调度记录的发布由所述快照与记录处理器来实现;

所述分发器被配置为基于与所述任务描述快照对应的所述任务调度记录生成任务消息,并且将所述生成的任务消息推送到任务消息队列中;所述消息推送器被配置为将所述任务消息队列中的待推送的任务消息推送给所述执行器;所述执行器被配置为当接收到被推送的所述任务消息时,执行接收到的所述任务消息;所述生成任务消息的操作和/或执行任务消息的操作,可通过时间触发而被激活;

所述执行器还被配置为当任务消息被执行时,生成与被执行的任务消息对应的执行结果消息,并且将生成的执行结果消息推送到执行结果消息队列中;

所述消息推送器还被配置为将所述待推送的任务消息推送给新创建的执行器或者空闲的执行器;

所述任务消息具有版本号,与预存储的任务调度记录对应的版本号是生效版本号,所述执行器还被配置为在执行接收到的任务消息之前,将接收到的任务消息的版本号与所述生效版本号进行比较,并且当所述生效版本号非空且等于所述接收到的任务消息的版本号时,执行所述接收到的任务消息;所述分发器所生成的任务消息的版本号是与生成任务消息所基于的任务调度记录对应的版本号;

所述检查器被配置为接收从执行结果消息队列推送的执行结果消息,当接收到的执行结果消息中存储的执行结果类型为成功或忽略时,生成结果日志,并且当接收到的执行结果消息中存储的执行结果类型为重试时,将与执行结果类型为重试的执行结果消息对应的任务消息推送到任务消息队列中;所述消息推送器还被配置为将执行结果消息队列中的待推送的执行结果消息推送给所述检查器;通过所述消息推送器的推送来激活所述检查器,实现对所述检查器工作时机的控制;

所述快照与记录处理器被配置为获取任务描述快照,并且基于预存储的任务描述快照和获取到的任务描述快照,发布至少一条任务调度记录并更新所述预存储的任务描述快照,其中,发布的任务调度记录具有相同的版本号;

所述任务删除器被配置为当接收到删除指令时,删除预存储的任务描述快照,并且将与被删除的任务描述快照对应的版本号置为空;

当所述任务是周期性执行的定时任务时,待执行的任务消息指示从任务开始时间点至任务结束时间点期间内执行特定操作,所述特定操作以预定的周期执行,所述执行器还被配置为:当满足如下公式时,执行所述特定操作:(当前值‑开始值)mod周期内时间数≤(当前值‑结束值)mod周期内时间数;其中,mod表示取余运算,周期内时间数是一个周期内的时间单位的数量,所述时间单位包括小时、分钟和秒,当前值是从当前时间点所属的周期的开始时间点至当前时间点所经过的时间单位的数量,开始值是从当前时间点所属的周期的开始时间点至所述任务开始时间点所经过的时间单位的数量,结束值是从当前时间点所属的周期的开始时间点至所述任务结束时间点所经过的时间单位的数量。

2.如权利要求1所述的任务执行系统,其特征在于,所述分发器、所述执行器和/或所述检查器通过无服务器的云函数来实现,所述消息推送器通过无服务器的事件总线来实现,任务调度记录被存储在任务调度表中,所述任务调度表被存储在云存储器中。

3.一种任务执行方法,用于企业资源计划计算机系统中的任务执行系统,其特征在于,包括:

基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;

将所述任务消息队列中的待推送的任务消息推送给执行器;

当所述执行器接收到被推送的任务消息时,执行接收到的任务消息;

其中,在所述计算机系统中,用户需求通过执行相应的任务来实现,所述用户需求通过任务描述来记录,所述任务描述用于表示具体的任务;

所述任务执行系统可基于用户输入生成所述任务描述,并且基于所述任务描述生成任务描述快照,所述任务描述快照记录所述任务描述的内容,在所述任务执行系统中预先存储所述任务描述快照;

所述任务执行系统在所述任务描述生成之后发布任务调度记录,通过所述任务调度记录来记录所述任务描述,所述任务调度记录的发布由所述快照与记录处理器来实现;

当任务消息被执行时,由所述执行器生成与被执行的任务消息对应的执行结果消息,并且将生成的执行结果消息推送到执行结果消息队列中;所述待推送的任务消息被推送给新创建的执行器或者空闲的执行器;

任务消息具有版本号,与预存储的任务调度记录对应的版本号是生效版本号,所生成的任务消息的版本号是与生成任务消息所基于的任务调度记录对应的版本号,在执行接收到的任务消息之前,所述任务执行方法还包括:将接收到的任务消息的版本号与所述生效版本号进行比较,并且当所述生效版本号非空且等于所述接收到的任务消息的版本号时,由所述执行器执行所述接收到的任务消息;所述生成任务消息的操作和/或执行任务消息的操作,可通过时间触发而被激活;

接收从执行结果消息队列推送的执行结果消息,当接收到的执行结果消息中存储的执行结果类型为成功或忽略时,生成结果日志,并且当接收到的执行结果消息中存储的执行结果类型为重试时,将与执行结果类型为重试的执行结果消息对应的任务消息推送到任务消息队列中;

获取任务描述快照,并且基于预存储的任务描述快照和获取到的任务描述快照,发布至少一条任务调度记录并更新所述预存储的任务描述快照,其中,发布的任务调度记录具有相同的版本号;

当接收到删除指令时,删除预存储的任务描述快照,并且将与被删除的任务描述快照对应的版本号置为空;

待执行的任务消息指示从任务开始时间点至任务结束时间点期间内执行特定操作,所述特定操作以预定的周期执行,所述当所述执行器接收到被推送的任务消息时,执行接收到的任务消息的步骤包括:当满足如下公式时,由所述执行器执行所述特定操作:(当前值‑开始值)mod周期内时间数≤(当前值‑结束值)mod周期内时间数,其中,mod表示取余运算,周期内时间数是一个周期内的时间单位的数量,所述时间单位包括小时、分钟和秒,当前值是从当前时间点所属的周期的开始时间点至当前时间点所经过的时间单位的数量,开始值是从当前时间点所属的周期的开始时间点至所述任务开始时间点所经过的时间单位的数量,结束值是从当前时间点所属的周期的开始时间点至所述任务结束时间点所经过的时间单位的数量。

4.如权利要求3所述的任务执行方法,其特征在于,所述任务执行方法的至少一个步骤通过无服务器来实现,任务调度记录被存储在任务调度表中,所述任务调度表被存储在云存储器中。

5.一种服务器,其特征在于,包括:存储器和处理器,所述存储器中存储有指令,所述指令适于所述处理器进行加载,以执行权利要求3至4中任一项所述的任务执行方法。

6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,所述指令适于处理器进行加载,以执行权利要求3至4中任一项所述的任务执行方法。

说明书 :

任务执行系统、方法、服务器及计算机可读存储介质

技术领域

[0001] 本申请涉及计算机技术领域,具体涉及一种任务执行系统、方法、服务器及计算机可读存储介质。

背景技术

[0002] 计算机技术的发展和互联网的普及为商品交易提供了便利。基于互联网的计算机系统正在被用于进行与商品交易有关的活动,为卖家和买家提供了便利。这样的计算机系统包括网上购物系统、企业资源计划系统等。
[0003] 在现有的计算机系统中,可利用任务描述来表示发送邮件、调整商品价格等任务,这样的任务可被称为业务系统任务,并且可基于任务描述生成任务消息。当任务消息被生成时,立即由计算机系统来执行所生成的任务消息,而未对任务消息的执行时机进行控制。
[0004] 在现有的计算机系统中,由于未对任务消息的执行时机进行控制,因此存在不能对任务消息的执行进行灵活控制的技术问题。

发明内容

[0005] 本申请实施例提供一种任务执行系统、方法、服务器及计算机可读存储介质,可以更灵活的控制任务消息的执行。
[0006] 在第一方面,本申请的实施例提供了一种任务执行系统,包括:分发器,被配置为基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;消息推送器,被配置为将任务消息队列中的待推送的任务消息推送给执行器;执行器,被配置为当接收到被推送的任务消息时,执行接收到的任务消息。
[0007] 可选的,执行器还被配置为当任务消息被执行时,生成与被执行的任务消息对应的执行结果消息,并且将生成的执行结果消息推送到执行结果消息队列中,和/或,消息推送器还被配置为将待推送的任务消息推送给新创建的执行器或者空闲的执行器,和/或,任务消息具有版本号,与预存储的任务调度记录对应的版本号是生效版本号,执行器还被配置为在执行接收到的任务消息之前,将接收到的任务消息的版本号与生效版本号进行比较,并且当生效版本号非空且等于接收到的任务消息的版本号时,执行接收到的任务消息;分发器所生成的任务消息的版本号是与生成任务消息所基于的任务调度记录对应的版本号。
[0008] 可选的,本申请的实施例的任务执行系统还包括:检查器、快照与记录处理器和/或任务删除器,其中,检查器被配置为接收从执行结果消息队列推送的执行结果消息,当接收到的执行结果消息中存储的执行结果类型为成功或忽略时,生成结果日志,并且当接收到的执行结果消息中存储的执行结果类型为重试时,将与执行结果类型为重试的执行结果消息对应的任务消息推送到任务消息队列中;消息推送器还被配置为将执行结果消息队列中的待推送的执行结果消息推送给检查器;快照与记录处理器被配置为获取任务描述快照,并且基于预存储的任务描述快照和获取到的任务描述快照,发布至少一条任务调度记录并更新预存储的任务描述快照,其中,发布的任务调度记录具有相同的版本号;任务删除器被配置为当接收到删除指令时,删除预存储的任务描述快照,并且将与被删除的任务描述快照对应的版本号置为空。
[0009] 可选的,分发器、执行器和/或检查器通过无服务器的云函数来实现,消息推送器通过无服务器的事件总线来实现,任务调度记录被存储在任务调度表中,任务调度表被存储在云存储器中。
[0010] 可选的,待执行的任务消息指示从任务开始时间点至任务结束时间点期间内执行特定操作,特定操作以预定的周期执行,执行器还被配置为:当满足如下公式时,执行特定操作:(当前值‑开始值)mod周期内时间数≤(当前值‑结束值)mod周期内时间数,其中,mod表示取余运算,周期内时间数是一个周期内的时间单位的数量,时间单位包括小时、分钟和秒,当前值是从当前时间点所属的周期的开始时间点至当前时间点所经过的时间单位的数量,开始值是从当前时间点所属的周期的开始时间点至任务开始时间点所经过的时间单位的数量,结束值是从当前时间点所属的周期的开始时间点至任务结束时间点所经过的时间单位的数量。
[0011] 在第二方面,本申请的实施例提供了一种任务执行方法,包括:基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;将任务消息队列中的待推送的任务消息推送给执行器;当执行器接收到被推送的任务消息时,执行接收到的任务消息。
[0012] 可选的,本申请的实施例的任务执行方法还包括:当任务消息被执行时,由执行器生成与被执行的任务消息对应的执行结果消息,并且将生成的执行结果消息推送到执行结果消息队列中,和/或,待推送的任务消息被推送给新创建的执行器或者空闲的执行器,和/或,任务消息具有版本号,与预存储的任务调度记录对应的版本号是生效版本号,所生成的任务消息的版本号是与生成任务消息所基于的任务调度记录对应的版本号,在执行接收到的任务消息之前,任务执行方法还包括:将接收到的任务消息的版本号与生效版本号进行比较,并且当生效版本号非空且等于接收到的任务消息的版本号时,由执行器执行接收到的任务消息。
[0013] 可选的,本申请的实施例的任务执行方法还包括:接收从执行结果消息队列推送的执行结果消息,当接收到的执行结果消息中存储的执行结果类型为成功或忽略时,生成结果日志,并且当接收到的执行结果消息中存储的执行结果类型为重试时,将与执行结果类型为重试的执行结果消息对应的任务消息推送到任务消息队列中,和/或,获取任务描述快照,并且基于预存储的任务描述快照和获取到的任务描述快照,发布至少一条任务调度记录并更新预存储的任务描述快照,其中,发布的任务调度记录具有相同的版本号,和/或,当接收到删除指令时,删除预存储的任务描述快照,并且将与被删除的任务描述快照对应的版本号置为空。
[0014] 可选的,本申请的实施例的任务执行方法的至少一个步骤通过无服务器来实现,任务调度记录被存储在任务调度表中,任务调度表被存储在云存储器中。
[0015] 可选的,待执行的任务消息指示从任务开始时间点至任务结束时间点期间内执行特定操作,特定操作以预定的周期执行,当执行器接收到被推送的任务消息时,执行接收到的任务消息的步骤包括:当满足如下公式时,由执行器执行特定操作:(当前值‑开始值)mod周期内时间数≤(当前值‑结束值)mod周期内时间数,其中,mod表示取余运算,周期内时间数是一个周期内的时间单位的数量,时间单位包括小时、分钟和秒,当前值是从当前时间点所属的周期的开始时间点至当前时间点所经过的时间单位的数量,开始值是从当前时间点所属的周期的开始时间点至任务开始时间点所经过的时间单位的数量,结束值是从当前时间点所属的周期的开始时间点至任务结束时间点所经过的时间单位的数量。
[0016] 在第三方面,本申请的实施例提供了一种服务器,包括:存储器和处理器,存储器中存储有指令,指令适于处理器进行加载,以执行以上的任务执行方法。
[0017] 在第四方面,本申请的实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有指令,指令适于处理器进行加载,以执行以上的任务执行方法。
[0018] 在本申请的实施例提供的任务执行系统、方法、服务器及计算机可读存储介质中,可生成任务消息,生成的任务消息被推送到任务消息队列中,并且由执行器来执行任务消息。可通过向执行器推送任务消息来触发执行器对于任务消息的执行。也就是说,可以通过任务消息的推送来控制任务消息的执行时机。因此,本方案可更灵活的控制任务消息的执行。可在任务消息执行所需资源处于空闲状态下进行任务消息的推送,从而可提高任务消息执行所需资源的利用率。

附图说明

[0019] 为了更清楚地说明本申请的实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020] 图1为本申请的第一实施例提供的任务执行系统的结构示意图。
[0021] 图2为本申请的第二实施例提供的任务执行系统的结构示意图。
[0022] 图3为本申请的第三实施例提供的任务执行系统的结构示意图。
[0023] 图4为本申请的第四实施例提供的任务执行系统的结构示意图。
[0024] 图5为本申请的第五实施例提供的任务执行方法的流程示意图。
[0025] 图6为本申请的第六实施例提供的任务执行方法的流程示意图。
[0026] 图7为本申请的第七实施例提供的任务执行方法的流程示意图。
[0027] 图8为本申请的第八实施例提供的任务执行方法的流程示意图。
[0028] 图9为本申请的第九实施例提供的任务执行方法的流程示意图。
[0029] 图10为本申请的第十实施例提供的任务执行方法的流程示意图。
[0030] 图11为本申请的第十一实施例提供的服务器的结构示意图。

具体实施方式

[0031] 下面将结合本申请的实施例中的附图,对本申请的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0032] 本申请中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤、操作、组件或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤、操作、组件或模块,而是可选地还包括没有列出的步骤、操作、组件或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤、操作、组件或模块。
[0033] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其他实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其他实施例相结合。
[0034] 本申请的实施例提供了任务执行系统、任务执行方法、服务器及计算机可读存储介质,以下将分别进行详细说明。需要说明的是,以下各个实施例的描述先后顺序并不构成对具体实施先后顺序的限定,描述先后顺序包括但不限于步骤描述或操作描述的先后顺序和系统组成部分描述的先后顺序。
[0035] 根据第一实施例,参照图1所示任务执行系统的结构示意图,该任务执行系统可包括:分发器100,被配置为基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;消息推送器200,被配置为将任务消息队列中的待推送的任务消息推送给执行器300;执行器300,被配置为当接收到被推送的任务消息时,执行接收到的任务消息。
[0036] 随着电商平台多样化、交易规模巨量化、综合服务大、卖家批量化涌现、产业链分工更细化及完善,用户需求也越来越多。用户需求可通过网上购物系统、企业资源计划系统等计算机系统来实现。这样的计算机系统也可称为业务系统,这样的用户需求可通过执行相应的任务来实现,这里的任务可以是业务系统任务。在计算机系统中,用户需求可通过任务描述来记录,任务描述可用于表示发送邮件、调整商品价格等任务。可基于用户输入生成任务描述,并且基于任务描述生成任务描述快照。任务描述快照可以记录任务描述的内容。可预先存储任务描述快照,并且可预先存储两个版本的任务描述快照,便于进行回滚等操作。
[0037] 作为示例,业务系统任务可以是定时任务。定时任务包括:在时间点执行的任务、在时间段内执行的任务、周期性执行的任务。
[0038] 作为示例,可在与用户需求对应的任务描述的生成之后发布任务调度记录,甚至可在任务描述的生成之后立刻发布任务调度记录。在这种情况下,可及时将任务描述记录下来,从而及时将用户需求记录下来。任务调度记录的发布可在业务系统中实现,甚至可由业务系统中的组件来实现,例如,由下文描述的快照与记录处理器来实现。另外,生成任务消息的操作和/或执行任务消息的操作,可通过时间触发而被激活,或者通过事件触发而被激活。在考虑分布式系统的情况下,生成任务消息的操作可在第一子系统中被执行,例如,由第一子系统中的分发器来执行。执行任务消息的操作可在第二子系统中被执行,例如,由第二子系统中的执行器来执行。向执行器推送任务消息的操作可在第三子系统中被执行,即消息推送器可位于第三子系统。第一子系统、第二子系统和第三子系统中的一个或更多个子系统可以是云操作系统等。第一子系统、第二子系统和第三子系统可以是相同的系统或不同的系统。
[0039] 根据本申请的示例性实施例,执行器300还被配置为当任务消息被执行时,生成与被执行的任务消息对应的执行结果消息,并且将生成的执行结果消息推送到执行结果消息队列中。
[0040] 作为示例,消息推送器200还被配置为将待推送的任务消息推送给新创建的执行器或者空闲的执行器。通过配置消息推送器200,可为任务消息的执行安排合适的执行器,从而可更加合理的调用系统资源。
[0041] 作为示例,任务消息具有版本号,与预存储的任务调度记录对应的版本号是生效版本号,执行器300还被配置为在执行接收到的任务消息之前,将接收到的任务消息的版本号与生效版本号进行比较,并且当生效版本号非空且等于接收到的任务消息的版本号时,执行接收到的任务消息;分发器100所生成的任务消息的版本号是与生成任务消息所基于的任务调度记录对应的版本号。
[0042] 根据第二实施例,参照图2所示任务执行系统的结构示意图,该任务执行系统可包括:分发器100,被配置为基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;消息推送器200,被配置为将任务消息队列中的待推送的任务消息推送给执行器300;执行器300,被配置为当接收到被推送的任务消息时,执行接收到的任务消息;检查器400,被配置为接收从执行结果消息队列推送的执行结果消息,当接收到的执行结果消息中存储的执行结果类型为成功或忽略时,生成结果日志,并且当接收到的执行结果消息中存储的执行结果类型为重试时,将与执行结果类型为重试的执行结果消息对应的任务消息推送到任务消息队列中。消息推送器200还被配置为将执行结果消息队列中的待推送的执行结果消息推送给检查器400。通过重试,可保证任务消息的顺利执行。通过消息推送器200的推送,可激活检查器400,以控制检查器400的工作时机。
[0043] 根据第三实施例,参照图3所示任务执行系统的结构示意图,该任务执行系统可包括:快照与记录处理器500,被配置为获取任务描述快照,并且基于预存储的任务描述快照和获取到的任务描述快照,发布至少一条任务调度记录并更新预存储的任务描述快照,其中,发布的任务调度记录具有相同的版本号,也就是说,所述至少一条任务调度记录具有相同的版本号;分发器100,被配置为基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;消息推送器200,被配置为将任务消息队列中的待推送的任务消息推送给执行器300;执行器300,被配置为当接收到被推送的任务消息时,执行接收到的任务消息。
[0044] 作为示例,当用户产生新的需求或者用户更改旧的需求时,可生成新的任务描述。在这种情况下,可基于新的任务描述生成新的任务描述快照,以记录任务描述的内容。可将获取到的任务描述快照与预存储的任务描述快照进行比较。具体的,可比较任务描述快照的内容,可将具有不同内容的任务描述快照视为不同的任务描述快照。
[0045] 例如,第一任务描述可指示在每天的18:00至20:00将商品A的价格从5元修改为6元。第二任务描述可指示在每天的18:30至20:30将商品A的价格从5元修改为6元。在这种情况下,与第一任务描述对应的第一任务描述快照不同于与第二任务描述对应的第二任务描述快照。
[0046] 作为示例,版本号可以用阿拉伯数字来表示,可认为版本号越大,则版本越新。版本号越新可表示产生时间越晚。
[0047] 通过上述操作,可通过任务描述快照以及版本号体现任务描述的更改,也可体现用户需求的更改,由此可准确反映用户需求。
[0048] 根据第四实施例,参照图4所示任务执行系统的结构示意图,该任务执行系统可包括:分发器100,被配置为基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;消息推送器200,被配置为将任务消息队列中的待推送的任务消息推送给执行器300;执行器300,被配置为当接收到被推送的任务消息时,执行接收到的任务消息;任务删除器600,被配置为当接收到删除指令时,删除预存储的任务描述快照,并且将与被删除的任务描述快照对应的版本号置为空。
[0049] 通过上述方案,还可实现任务删除操作。通过任务描述快照的删除和将版本号置为空的操作,可保证在进行版本号比较以确定是否执行任务消息时,准确识别出不需要被执行的任务消息,从而保证任务删除操作的顺利实现。
[0050] 作为示例,可利用任务调度表来存储一条或更多条任务调度记录。任务调度表可被存储在存储器中;存储器可以是本地存储器或远程存储器,如云存储器等。可定时从任务调度表中读取任务调度记录,也可当特定事件发生时从任务调度表中读取任务调度记录。生成的任务消息可以是任务请求,当任务请求被处理时,可执行特定的业务系统任务,例如发送邮件、调整商品价格等业务系统任务。
[0051] 作为示例,分发器100、执行器300和/或检查器400通过无服务器(Serverless)的云函数来实现,消息推送器200通过无服务器的事件总线(EventBridge)来实现。
[0052] 在业务系统上线、断电等原因导致业务系统停机或重启时,由于云存储器与无服务器独立于业务系统,即使业务系统出现停机或重启等状况,也可通过无服务器和云存储器的配合来实现本申请的相应方案,因此可保证与任务描述快照对应的用户需求的实现。这里的业务系统可实现生成任务描述快照的操作和/或发布任务调度记录并更新任务描述快照的操作。
[0053] 作为示例,任务调度记录可包括多个字段,例如状态字段和版本号字段,状态字段可存储与业务系统任务对应的参数,当业务系统任务是邮件发送时,参数可包括:邮件发送时间点、收件地址和邮件内容;当业务系统任务是分时调价时,参数可包括:商品标识、调整时段和期望价格。
[0054] 也就是说,可根据待执行的任务消息的版本号和与预存储的任务描述快照对应的版本号,判断任务消息是否需要被执行。
[0055] 在本申请的实施例中,至少一条任务消息被推送到任务消息队列中。通过版本号比较,可判断任务消息的版本是否与生效版本号相匹配,可在匹配时允许任务消息的执行,并且在不匹配时不允许任务消息的执行。
[0056] 在本申请的实施例中,可基于至少一条任务调度记录生成具有至少一条任务调度记录的版本号的至少一条任务消息;可根据生成的至少一条任务消息之中的待执行的任务消息的版本号和与预存储的任务描述快照对应的版本号,执行待执行的任务消息。当生成执行结果消息时,可通过执行结果消息的执行结果类型,对任务消息的执行结果进行检查。根据执行结果类型可进行结果日志的生成和任务消息的重试。结果日志可被推送给业务系统,从而业务系统可获知执行结果。通过上述方案,还可对任务消息进行重试。也就是说,进行重试的任务消息可被重新执行,从而保证任务消息执行的成功率。需要被重试的任务消息虽然未被成功执行,但是未成功的原因可能是应用程序并发异常所导致,通过重试,这样的任务消息可能会被执行成功,因此通过上述检查,可保证任务消息被顺利执行,从而进一步保证任务的顺利执行。
[0057] 作为示例,待执行的任务消息指示从任务开始时间点至任务结束时间点期间内执行特定操作,特定操作以预定的周期执行,执行器300还被配置为:当满足如下公式时,执行特定操作:(当前值‑开始值)mod周期内时间数≤(当前值‑结束值)mod周期内时间数,其中,mod表示取余运算,周期内时间数是一个周期内的时间单位的数量,时间单位包括小时、分钟和秒,当前值是从当前时间点所属的周期的开始时间点至当前时间点所经过的时间单位的数量,开始值是从当前时间点所属的周期的开始时间点至任务开始时间点所经过的时间单位的数量,结束值是从当前时间点所属的周期的开始时间点至任务结束时间点所经过的时间单位的数量。
[0058] 另外,对于取余运算,具体包括:将当前值减去开始值得到第一运算值,随后将第一运算值除以周期内时间数,进而获得第一余数;将当前值减去结束值得到第二运算值,将第二运算值除以周期内时间数,进而获得第二余数。
[0059] 通过以上方案,即使从任务开始时间点至任务结束时间点的这段时间跨越了0:00这个时刻,也可保证特定操作的按时执行。
[0060] 如上所述,通过本申请的实施例提供的任务执行系统,可通过分发器100生成任务消息,并且向任务消息队列进行推送;可通过消息推送器200激活或触发执行器300的操作;消息推送器200可在任务消息队列中存在任务消息时或者在特定时间或事件发生时向执行器300推送任务消息;执行器300在接收到被推送的任务消息时被触发或激活,并且当被触发或激活时执行接收到的任务消息,从而可保证对任务消息的执行的灵活控制。本申请的技术方案,也适用于当用户需求包括周期性执行业务系统任务的场景,例如,周期性发送邮件、调整商品价格等场景。
[0061] 为了实施以上任务执行系统,相应的,本申请的实施例还提供一种任务执行方法。根据第五实施例,参照图5所示的任务执行方法的流程示意图,本申请的任务执行方法可包括:基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;将任务消息队列中的待推送的任务消息推送给执行器;当执行器接收到被推送的任务消息时,执行接收到的任务消息。
[0062] 作为示例,待推送的任务消息被推送给新创建的执行器或者空闲的执行器。
[0063] 根据第六实施例,参照图6所示的任务执行方法的流程示意图,本申请的实施例的任务执行方法还包括:当任务消息被执行时,由执行器生成与被执行的任务消息对应的执行结果消息,并且将生成的执行结果消息推送到执行结果消息队列中。
[0064] 作为示例,任务消息具有版本号,与预存储的任务调度记录对应的版本号是生效版本号,所生成的任务消息的版本号是与生成任务消息所基于的任务调度记录对应的版本号。
[0065] 根据第七实施例,参照图7所示的任务执行方法的流程示意图,本申请的示例性实施例的任务执行方法包括:基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;将任务消息队列中的待推送的任务消息推送给执行器;当执行器接收到被推送的任务消息时,执行接收到的任务消息;将接收到的任务消息的版本号与生效版本号进行比较,并且当生效版本号非空且等于接收到的任务消息的版本号时,由执行器执行接收到的任务消息。
[0066] 根据第八实施例,参照图8所示的任务执行方法的流程示意图,本申请的示例性实施例的任务执行方法包括:基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;将任务消息队列中的待推送的任务消息推送给执行器;当执行器接收到被推送的任务消息时,执行接收到的任务消息;接收从执行结果消息队列推送的执行结果消息,当接收到的执行结果消息中存储的执行结果类型为成功或忽略时,生成结果日志,并且当接收到的执行结果消息中存储的执行结果类型为重试时,将与执行结果类型为重试的执行结果消息对应的任务消息推送到任务消息队列中。
[0067] 作为示例,当任务消息被执行时,将生成与被执行的任务消息对应的执行结果消息,并且生成的执行结果消息将被推送到执行结果消息队列中;当执行结果消息队列中存在待推送的执行结果消息时,待推送的执行结果消息将被推送,以便根据执行结果类型执行相应操作,包括重试操作和结果日志生成操作。
[0068] 根据第九实施例,参照图9所示的任务执行方法的流程示意图,本申请的示例性实施例的任务执行方法包括:获取任务描述快照,并且基于预存储的任务描述快照和获取到的任务描述快照,发布至少一条任务调度记录并更新预存储的任务描述快照,其中,发布的任务调度记录具有相同的版本号;基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;将任务消息队列中的待推送的任务消息推送给执行器;当执行器接收到被推送的任务消息时,执行接收到的任务消息。
[0069] 根据第十实施例,参照图10所示的任务执行方法的流程示意图,本申请的示例性实施例的任务执行方法包括:基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;将任务消息队列中的待推送的任务消息推送给执行器;当执行器接收到被推送的任务消息时,执行接收到的任务消息;当接收到删除指令时,删除预存储的任务描述快照,并且将与被删除的任务描述快照对应的版本号置为空。
[0070] 作为示例,本申请的实施例的任务执行方法的至少一个步骤通过无服务器来实现,任务调度记录被存储在任务调度表中,任务调度表被存储在云存储器中。
[0071] 作为示例,待执行的任务消息指示从任务开始时间点至任务结束时间点期间内执行特定操作,特定操作以预定的周期执行,当执行器接收到被推送的任务消息时,执行接收到的任务消息的步骤包括:当满足如下公式时,由执行器执行特定操作:(当前值‑开始值)mod周期内时间数≤(当前值‑结束值)mod周期内时间数,其中,mod表示取余运算,周期内时间数是一个周期内的时间单位的数量,时间单位包括小时、分钟和秒,当前值是从当前时间点所属的周期的开始时间点至当前时间点所经过的时间单位的数量,开始值是从当前时间点所属的周期的开始时间点至任务开始时间点所经过的时间单位的数量,结束值是从当前时间点所属的周期的开始时间点至任务结束时间点所经过的时间单位的数量。
[0072] 根据第十一实施例,参照图11所示结构示意图,本申请的示例性实施例提供了一种服务器,包括:存储器10和处理器20,存储器10中存储有指令,指令适于处理器20进行加载,以执行以上的任务执行方法。
[0073] 上述所有的技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
[0074] 根据本申请的示例性实施例,提供了一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行本申请的示例性实施例提供的任务执行方法。
[0075] 也就是说,本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0076] 通过示例性实施例中的指令,可以执行如下步骤或操作:基于与任务描述快照对应的任务调度记录生成任务消息,并且将生成的任务消息推送到任务消息队列中;将任务消息队列中的待推送的任务消息推送给执行器;当执行器接收到被推送的任务消息时,执行接收到的任务消息。
[0077] 另外,在本申请的示例性实施例中,在已经确定需要在预定时间点向任务消息队列中推送任务消息的情况下,可在比预定时间点更早的时间点推送任务消息,从而可避免任务消息队列中已经存在的任务消息的执行影响需要被推送的任务消息的按时执行。在本申请的示例性实施例中,可针对快照与记录处理器500、分发器100、执行器300、检查器400和/或任务删除器600所执行的操作以及相应的方法步骤进行异步化处理。
[0078] 本申请的示例性实施例的计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
[0079] 由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一任务执行方法中的步骤,因此,可以实现本申请实施例所提供的任一任务执行方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
[0080] 本申请应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。