一种异步任务的处理方法、装置、电子设备及存储介质与流程

未命名 08-07 阅读:79 评论:0


1.本发明涉及分布式数据库技术领域,特别是涉及一种异步任务的处理方法、装置、电子设备以及存储介质。


背景技术:

2.构建一个应用服务的期望是该应用服务响应迅速,且成本低廉的。而在实际中,服务系统通常面临各种各样的挑战,例如不可预测的流量高峰,依赖的下游服务变得缓慢,少量请求却消耗大量cpu/内存资源。这些因素常常导致整个服务系统被拖慢,甚至不能响应请求。
3.为了让应用服务总是响应迅速,很多时候不得不预留更多的计算资源,但大部分时候,这些计算资源都是闲置的。
4.为了避免资源浪费,可以将耗时缓慢,或者需要消耗大量资源的处理逻辑从请求处理主逻辑中剥离出来,交给更具资源弹性的异步系统执行,让请求能够被迅速处理返回给用户,也节省了成本。
5.然而,现有的异步任务系统不稳定,在执行任务失败后容易导致异步任务系统不可用。


技术实现要素:

6.鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种异步任务的处理方法、装置、电子设备以及存储介质,包括:
7.一种异步任务的处理方法,涉及分布式数据库以及客户端,所述分布式数据库中存储有待执行的一个或多个异步任务,所述客户端用于执行所述分布式数据库中的异步任务,所述方法包括:
8.所述客户端获取针对目标服务的线程信息和可用内存信息;所述目标服务为所述客户端在所述分布式数据库中注册的用于处理异步任务的服务;
9.所述客户端在所述线程信息表征为存在可用线程且所述可用内存信息大于预设的内存指标信息时,从所述分布式数据库中根据所述一个异步任务的优先级获取目标异步任务,并执行所述目标异步任务;
10.所述客户端在所述目标异步任务执行失败时,调整所述目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息。
11.可选地,所述根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息,包括:
12.在调整后的优先级不小于预设的第一优先级,且小于预设的第二优先级时,确定所述第二优先级和所述调整后的优先级的第一优先级差值;其中,第一优先级小于第二优先级;
13.按照所述第一优先级差值与所述内存指标信息的乘积,更新用于触发执行所述目
标异步任务的内存指标信息。
14.可选地,所述根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息,包括:
15.在调整后的优先级小于预设的第一优先级时,确定所述第一优先级和所述调整后的优先级的第二优先级差值;
16.按照所述第二优先级差值与所述内存指标信息的乘积,更新用于触发执行所述目标异步任务的内存指标信息。
17.可选地,还包括:
18.当所述目标异步任务的优先级不大于第三优先级时,禁止所述客户端执行所述目标异步任务,其中,所述第三优先级小于所述第一优先级。
19.可选地,还包括:
20.在所述客户端执行所述目标异步任务过程中,若监测到所述客户端处于宕机状态,则将所述目标异步任务的任务状态更新为执行失败。
21.可选地,还包括:
22.统计在所述客户端执行所述目标异步任务过程中的所述客户端的宕机次数;
23.在所述宕机次数不小于预设次数时,禁止所述客户端执行所述目标异步任务。
24.可选地,在所述客户端获取针对目标服务的线程信息和可用内存信息之前,还包括:
25.当所述客户端中不存在目标服务的服务标识时,在所述分布式数据库中查询所述服务标识;
26.当所述分布式数据库中未查询到所述服务标识时,将所述服务标识对应的服务信息发送至所述分布式数据库,以在所述分布式数据库注册所述目标服务。
27.一种异步任务的处理装置,涉及分布式数据库以及客户端,所述分布式数据库中存储有待执行的一个或多个异步任务,所述客户端用于执行所述分布式数据库中的异步任务,所述装置包括:
28.信息获取模块,用于获取针对目标服务的线程信息和可用内存信息;所述目标服务为所述客户端在所述分布式数据库中注册的用于处理异步任务的服务;
29.异步任务执行模块,用于在所述线程信息表征为存在可用线程且所述可用内存信息大于预设的内存指标信息时,从所述分布式数据库中根据所述一个异步任务的优先级获取目标异步任务,并执行所述目标异步任务;
30.任务执行失败模块,用于在所述目标异步任务执行失败时,调整所述目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息。
31.一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述异步任务的处理方法。
32.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述异步任务的处理方法。
33.本发明实施例具有以下优点:
34.发明实施例通过客户端获取针对目标服务的线程信息和可用内存信息;并在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任务,并执行目标异步任务,进而在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息,实现了在异步任务失败后动态调整任务优先级以及内存指标信息,从而增加异步任务系统的稳定性和可用性。
附图说明
35.为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
36.图1是本发明一实施例提供的一种异步任务的处理方法的步骤流程图;
37.图2是本发明一实施例提供的另一种异步任务的处理方法的步骤流程图;
38.图3是本发明一实施例提供的另一种异步任务的处理方法的步骤流程图;
39.图4a是本发明一实施例提供的一种异步任务系统的结构框架图;
40.图4b是本发明一实施例提供的一种异步任务注册流程图;
41.图4c是本发明一实施例提供的一种异步任务执行流程图;
42.图4d是本发明一实施例提供的一种服务监控流程图;
43.图5是本发明一实施例提供的异步任务的处理装置的结构示意图。
具体实施方式
44.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.参照图1,示出了本发明一实施例提供的一种异步任务的处理方法的步骤流程图,涉及分布式数据库以及客户端,分布式数据库中存储有待执行的一个或多个异步任务,客户端用于执行分布式数据库中的异步任务,具体可以包括如下步骤:
46.步骤101,客户端获取针对目标服务的线程信息和可用内存信息;目标服务为客户端在分布式数据库中注册的用于处理异步任务的服务;
47.异步业务系统可以包含两个组件:客户端与分布式数据库,其中,客户端负责具体的任务代码的异步执行,客户端以依赖包/库的形式嵌入到业务服务之中;数据库充当注册中心以及保存元数据信息,元数据信息可以包含任务信息以及客户端的状态。其中,分布式数据库可以是mysql数据库。
48.客户端将需要异步执行的方法句柄保存到本地客户端之中,每一个需要异步执行的方法句柄对应一个业务key。业务key可以由开发人员指定,一个业务场景对应一个唯一的业务key,也对应着一段代码。方法句柄如java开发语言,可以通过反射获取,拿到方法句柄就如同拿到了这一段业务代码的执行权。
49.在项目启动时,客户端可以在分布式数据库中对异步任务的目标服务进行注册,进而在客户端组需要执行异步任务时,客户端可以先确定检测当前状态,如确定客户端针对所述目标服务的线程信息和可用内存信息,具体的,目标服务的线程信息可以包括针对目标服务开启的线程数量、当前正在使用的线程数量、当前处于空闲状态的线程数量;可用内存信息为该客户端当前可以用于目标服务的内存信息。
50.步骤102,客户端在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任务,并执行目标异步任务;
51.当客户端的当前状态满足预设条件时,可以触发执行异步任务,其中,客户端的线程信息表征为存在可用线程且可用内存信息大于预设的内存信息时,确定客户端的当前状态满足预设条件,此时,客户端可以查询分布式数据库中存储的目标服务关联的可执行异步任务,并执行可执行异步任务,
52.在一示例中,在分布式数据库中新增的任务没有被其他业务系统通过cas方式抢夺到的时候,确定该异步任务为可执行任务,同时,当分布式数据库中存在多个可执行任务时,可以按照异步任务的优先级从高到低排列,客户端取出当前优先级最高的异步任务作为目标异步任务,并执行该目标异步任务。
53.在一示例中,当业务系统需执行异步任务时,会通过客户端的接口向数据库中的异步任务表新增一条任务数,异步任务可以包含如下属性:任务id、任务状态、业务key、参数、删除标识、优先级、任务执行服务id、备注信息。在新增完异步任务之后,各个业务服务满足预设条件时会从数据库中进行调用异步任务并执行。
54.步骤103,客户端在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息。
55.在客户端中目标异步任务执行失败的情况下,则表征该业务场景(即目标服务)比较消耗内存,或者该业务场景的逻辑存在问题。从而,为避免客户端在下一次碰到该类业务场景时执行失败,则可以对该业务场景下目标异步任务的执行逻辑变更执行要求,如提高目标异步任务的执行要求。
56.具体的,客户端可以对目标异步任务的优先级进行降级处理,优先级降低,客户端可以优先出去其他异步任务,将目标异步任务延后处理,以避免客户端持续卡死在同一目标异步任务,导致任务处理消耗时长。
57.进一步的,在降低任务优先级的同时,还可以动态修改目标异步任务的触发条件,如更新内存指标信息。在实际应用中,在目标异步任务执行失败的情况下,可以提高内存指标信息,即提高触发执行目标异步任务的门槛,从而,在客户端预留的内存足够的情况下,更容易执行目标异步任务。
58.需要说明的是,优先级以及内存指标数据的更新逻辑可以依照实际需要设置,在本发明实施例中对此不做过多限制。
59.在本发明一实施例中,根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息,包括:在调整后的优先级不小于预设的第一优先级,且小于预设的第二优先级时,确定第二优先级和调整后的优先级的第一优先级差值;其中,第一优先级小于第二优先级;按照第一优先级差值与内存指标信息的乘积,更新用于触发执行目标异步任务的内
存指标信息。
60.在实际应用中,处于不同优先级的目标异步任务可以设置不同的内存指标信息更新逻辑,当调整后的优先级在第一优先级和第二优先级之间时,将第二优先级减去调整后的优先级,得到第一优先级差值,进而,将第一优先级差值与内存指标信息相乘,得到更新后的用于触发执行目标异步任务的内存指标信息。
61.其中,优先级可以以整数的形式表示,在目标异步任务执行失败的情况下,可以以固定数值递减(如每失败一次,数值减一)。
62.在本发明另一实施例中,根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息,包括:在调整后的优先级小于预设的第一优先级时,确定第一优先级和调整后的优先级的第二优先级差值;按照第二优先级差值与内存指标信息的乘积,更新用于触发执行目标异步任务的内存指标信息。
63.在实际应用中,在调整后的优先级小于第一优先级时,将第一优先级减去调整后的优先级,得到第二优先级差值,进而,将第二优先级差值与内存指标信息相乘,得到更新后的用于触发执行目标异步任务的内存指标信息。
64.在本发明一实施例中,在异步任务执行过程中,方法还包括:当目标异步任务的优先级不大于第三优先级时,禁止客户端执行目标异步任务,其中,第三优先级小于第一优先级。
65.在实际应用中,如目标异步任务屡次失败,则随着该类任务失败次数越高,执行的指标就越严格。当目标异步任务多次失败导致优先级小于或等于第三优先级时,第三优先级为设置的最低优先级,则表示目标异步任务的代码开发可能存在问题,从而可以禁止客户端执行目标异步任务。
66.例如:同一种业务场景的目标异步任务(即业务key相同的任务)执行失败时,会使该类目标异步任务的优先级-1。如任务优先级默认为1(即第二优先级),当前客户端获取到该任务,当任务的优先级为负数时,在客户端线程池完全空闲,且当前系统的可用内存占比大于等于任务的优先级的绝对值*内存指标率才会触发执行目标异步任务。
67.如果任务的优先级大于或等于0(即第一优先级),且优先级《默认优先级(即第二优先级)时,当前系统的可用内存占比需大于等于(默认优先级-任务优先级)*任务内存指标率才会执行。
68.当该类任务的优先级达到系统最低优先级(即第三优先级,系统可配置,默认-5)就不再调度该目标异步任务(即禁止执行该目标异步任务),以此操作来增加系统稳定性。
69.第一次执行任务,任务内存的指标为10%,优先级为1,当前系统的可用内存大于10%,该任务执行失败了,那么将优先级降为0,当系统的可用内存(1-0)*10%=10%时再尝试一次,仍然失败了,则优先级降为-1,当系统的可用内存[0-(-1)]*10%=10%时再执行一次,仍然失败,则优先级降为-2,此时系统的可用内存为[0-(-2)]*10%=20%时,才可以执行该类任务。
[0070]
在发明实施例中,通过客户端获取针对目标服务的线程信息和可用内存信息;并在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任务,并执行目标异步任务,进而在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发
执行目标异步任务的内存指标信息,实现了在异步任务失败后动态调整任务优先级以及内存指标信息,从而增加异步任务系统的稳定性和可用性。通过该方案可使用分布式数据库完成一个高可用分布式异步任务系统,极大的降低长耗时,消耗大量资源,或者容易出错的代码逻辑对业务系统带来的内存溢出风险。
[0071]
参照图2,示出了本发明一实施例提供的另一种异步任务的处理方法的步骤流程图,涉及分布式数据库以及客户端,分布式数据库中存储有待执行的一个或多个异步任务,客户端用于执行分布式数据库中的异步任务,具体可以包括如下步骤:
[0072]
步骤201,客户端获取针对目标服务的线程信息和可用内存信息;目标服务为客户端在分布式数据库中注册的用于处理异步任务的服务;
[0073]
步骤202,客户端在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任务,并执行目标异步任务;
[0074]
步骤203,客户端在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息。
[0075]
步骤204,在客户端执行目标异步任务过程中,若监测到客户端处于宕机状态,则将目标异步任务的任务状态更新为执行失败。
[0076]
在客户端中,还可以包含了一个服务监控线程,用来做集群时,可以进一步进行容错/高可用处理。
[0077]
分布式数据库可以与多个客户端连接,各客户端彼此独立,同时客户端可以定期更新mysql中的数据,通过mysql,客户端之间可以了解到彼此的状态。实现客户端之间的状态监控。
[0078]
其他客户端检测到存在客户端宕机,可以将宕机的客户端正在执行的任务刷新为失败状态,保证任务不再被调度。
[0079]
在一示例中,当其他客户端发现当前客户端已经超过一个时间周期未刷新数据时,可以将当前客户端最后执行的任务id记录到mysql数据库中,该任务id可能为引发该客户端宕机的任务id。
[0080]
步骤205,统计在客户端执行目标异步任务过程中的客户端的宕机次数;
[0081]
在客户端执行目标异步任务过程中,可以累计宕机次数,以便确定客户端对目标异步任务的执行情况。
[0082]
步骤206,在宕机次数不小于预设次数时,禁止客户端执行目标异步任务。
[0083]
在宕机次数大于或等于预设次数时,表示客户端执行目标异步任务可能存在问题,从而,可以禁止客户端执行目标异步任务。
[0084]
在本发明实施例中,通过客户端获取针对目标服务的线程信息和可用内存信息;并在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任务,并执行目标异步任务,进而在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息,在所述客户端执行所述目标异步任务过程中,若监测到所述客户端处于宕机状态,则将所述目标异步任务的任务状态更新为执行失败,统计在所述客户端执行所述目标异步任务过程中的所述客户端的宕机次数;在所述宕机次数不
小于预设次数时,禁止所述客户端执行所述目标异步任务,实现了在异步任务失败后动态调整任务优先级以及内存指标信息,从而增加异步任务系统的稳定性和可用性。
[0085]
参照图3,示出了本发明一实施例提供的另一种异步任务的处理方法的步骤流程图,涉及分布式数据库以及客户端,分布式数据库中存储有待执行的一个或多个异步任务,客户端用于执行分布式数据库中的异步任务,具体可以包括如下步骤:
[0086]
步骤301,当客户端中不存在目标服务的服务标识时,在分布式数据库中查询服务标识;
[0087]
在客户端中可以判断目标服务的服务标识是否存在,当存在目标服务的服务标识,可以更新客户端的服务心跳;当不存在目标服务的服务标识时,根据预设的ip地址,在分布式数据库中查询服务标识。
[0088]
步骤302,当分布式数据库中未查询到服务标识时,将服务标识对应的服务信息发送至分布式数据库,以在分布式数据库注册目标服务。
[0089]
当分布式数据库中查询待服务标识时,则表示服务标识已在分布式数据库中注册,则刷新客户端的服务标识,进而可以更新客户端的服务心跳。
[0090]
当分布式数据库未查询到服务标识,则表示服务标识未在分布式数据库中注册,则可以新增服务标识的服务信息,将服务信息发送至分布式数据库进行注册,同时,刷新客户端的服务标识。
[0091]
在完成服务注册的情况下,可以在分布式数据库中新增一个或多个异步任务,以在客户端指标符合预设条件时,触发执行异步任务。
[0092]
步骤303,获取针对目标服务的线程信息和可用内存信息;目标服务为客户端在分布式数据库中注册的用于处理异步任务的服务;
[0093]
步骤304,在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任务,并执行目标异步任务;
[0094]
步骤305,在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息。
[0095]
在本发明实施例中,通过分布式数据库当注册中心可以减少异步任务系统的中间件依赖,即异步任务系统只需要分布式数据库一个中间件即可运行,引入客户端的服务注册与发现功能还可以保存客户端的状态,用来做更好的高可用处理。
[0096]
以下结合图4a至图4d对本发明上述实施例进行示例性说明:
[0097]
如图4a所示为一种异步任务系统的结构示意图,异步任务系统包括客户端和mysql数据库。其中,客户端通过内部api在mysql数据库中进行任务注册;客户端还包括任务分派线程,任务分派线程用于通过定期从数据库中拉取异步任务(如采用compare and swap方式拉取),交给客户端来执行具体的业务逻辑代码;客户端还包括心跳注册线程,心跳注册线程用于多个客户端定时向mysql数据库报告使用本客户端的业务系统是否是存活状态,在分布式场景中,一个客户端正在执行任务,但是客户端宕机了,此时就需要另一个客户端来通知用户,该任务执行失败。
[0098]
如图4b所示为一种服务注册与发明的流程示意图,在客户端中,在项目启动的情况下,会依照图4b所示流程执行服务注册。具体的,在客户端中可以判断当前服务id是否存
在,在当前服务id存在时,则更新客户端的服务心跳,当客户端中当前服务id不存在时,则根据ip地址向数据库查询当前服务id,在查询待服务id时,则刷新客户端服务id,当未查询待服务id时,则新增服务信息,并通过mysql数据库进行服务注册,同时刷新客户端服务id。采用mysql数据库充当服务的注册中心,可以减少异步任务系统的中间件依赖。同时,可以保存客户端的状态,用来做更好的高可用处理。
[0099]
如图4c所示为一种异步任务执行流程图,业务系统可以调用客户端接口向mysql数据库中的异步任务表新增一条任务数据。异步任务可以包含如下任意一项或多项属性:任务id、任务状态、业务key、参数、删除标识、优先级、任务执行服务id、备注信息。其中,服务id对应一个业务系统,任务id对应一个业务系统中的一次功能执行。
[0100]
在mysql数据库新增完异步任务之后,当客户端中各个业务服务满足条件时会调用mysql数据库中的异步任务。
[0101]
在客户端中可以设置定时任务,定时进行指标判断,其中,判断的指标可以包括当前客户端有可用的线程(即线程信息),以及当前服务有达标的空闲内存占比(即可用内存大于内存指标信息)。
[0102]
在客户端中符合指标时,任务分派线程可以从mysql数据库中查询本服务支持执行的异步任务,当分布式数据库中新增一个任务时会携带一个业务key,任务分派线程在获取任务时仅会查询客户端所包含业务key的任务。
[0103]
cas修改mysql数据库中的异步任务的任务状态以及执行标识,进而判断cas锁定任务是否成功,在锁定成功时,将异步任务放入线程池中执行,向业务系统反馈异步任务代码,在锁定失败时,则返回定时任务。
[0104]
在异步任务执行过程中如任务执行失败,则可以调整异步任务的优先级,并基于调整后优先级计算内存指标信息。
[0105]
如图4d所示为一种服务监控流程示意图,在项目开始后,按照图4c的流程图执行服务的注册与发现,然后,在客户端中执行检测过期的服务,在检测到客户端中存在过期的服务时(即其他客户端发现当前客户端已经超过一个时间周期没有刷新自己的数据,则确定该客户端存在过去的服务),将过期客户端正在执行的任务刷为失败,并记录客户端宕机时执行的任务id。
[0106]
需要说明的是,对于方法实施例,为了简单描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0107]
参照图5,示出了本发明一实施例提供的一种异步任务的处理装置的结构示意图,涉及分布式数据库以及客户端,分布式数据库中存储有待执行的一个或多个异步任务,客户端用于执行分布式数据库中的异步任务,具体可以包括如下模块:
[0108]
信息获取模块501,用于获取针对目标服务的线程信息和可用内存信息;目标服务为客户端在分布式数据库中注册的用于处理异步任务的服务;
[0109]
异步任务执行模块502,用于在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任
务,并执行目标异步任务;
[0110]
任务执行失败模块503,用于在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息。
[0111]
在本发明一实施例中,任务执行失败模块503包括:
[0112]
第一优先级差值确定子模块,用于在调整后的优先级不小于预设的第一优先级,且小于预设的第二优先级时,确定第二优先级和调整后的优先级的第一优先级差值;其中,第一优先级小于第二优先级;
[0113]
第一内存指标调整子模块,用于按照第一优先级差值与内存指标信息的乘积,更新用于触发执行目标异步任务的内存指标信息。
[0114]
在本发明一实施例中,任务执行失败模块503包括:
[0115]
第二优先级差值确定子模块,用于在调整后的优先级小于预设的第一优先级时,确定第一优先级和调整后的优先级的第二优先级差值;
[0116]
第二内存指标调整子模块,用于按照第二优先级差值与内存指标信息的乘积,更新用于触发执行目标异步任务的内存指标信息。
[0117]
在本发明一实施例中,装置还包括:
[0118]
第一禁止执行模块,用于当目标异步任务的优先级不大于第三优先级时,禁止客户端执行目标异步任务,其中,第三优先级小于第一优先级。
[0119]
在本发明一实施例中,装置还包括:
[0120]
在客户端执行目标异步任务过程中,若监测到客户端处于宕机状态,则将目标异步任务的任务状态更新为执行失败。
[0121]
在本发明一实施例中,装置还包括:
[0122]
宕机次数统计,用于统计在客户端执行目标异步任务过程中的客户端的宕机次数;
[0123]
第二禁止执行模块,用于在宕机次数不小于预设次数时,禁止客户端执行目标异步任务。
[0124]
在本发明一实施例中,装置还包括:
[0125]
服务标识查询模块,用于当客户端中不存在目标服务的服务标识时,在分布式数据库中查询服务标识;
[0126]
服务注册模块,用于当分布式数据库中未查询到服务标识时,将服务标识对应的服务信息发送至分布式数据库,以在分布式数据库注册目标服务。
[0127]
本发明一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上异步任务的处理方法。
[0128]
本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上异步任务的处理方法。
[0129]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0130]
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0131]
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0132]
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0133]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0134]
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0135]
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
[0136]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
[0137]
以上对所提供的一种异步任务的处理方法、装置、电子设设备以及存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

技术特征:
1.一种异步任务的处理方法,其特征在于,涉及分布式数据库以及客户端,所述分布式数据库中存储有待执行的一个或多个异步任务,所述客户端用于执行所述分布式数据库中的异步任务,所述方法包括:所述客户端获取针对目标服务的线程信息和可用内存信息;所述目标服务为所述客户端在所述分布式数据库中注册的用于处理异步任务的服务;所述客户端在所述线程信息表征为存在可用线程且所述可用内存信息大于预设的内存指标信息时,从所述分布式数据库中根据所述一个异步任务的优先级获取目标异步任务,并执行所述目标异步任务;所述客户端在所述目标异步任务执行失败时,调整所述目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息。2.根据权利要求1所述的方法,其特征在于,所述根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息,包括:在调整后的优先级不小于预设的第一优先级,且小于预设的第二优先级时,确定所述第二优先级和所述调整后的优先级的第一优先级差值;其中,第一优先级小于第二优先级;按照所述第一优先级差值与所述内存指标信息的乘积,更新用于触发执行所述目标异步任务的内存指标信息。3.根据权利要求1所述的方法,其特征在于,所述根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息,包括:在调整后的优先级小于预设的第一优先级时,确定所述第一优先级和所述调整后的优先级的第二优先级差值;按照所述第二优先级差值与所述内存指标信息的乘积,更新用于触发执行所述目标异步任务的内存指标信息。4.根据权利要求1所述的方法,其特征在于,还包括:当所述目标异步任务的优先级不大于第三优先级时,禁止所述客户端执行所述目标异步任务,其中,所述第三优先级小于所述第一优先级。5.根据权利要求1所述的方法,其特征在于,还包括:在所述客户端执行所述目标异步任务过程中,若监测到所述客户端处于宕机状态,则将所述目标异步任务的任务状态更新为执行失败。6.根据权利要求1所述的方法,其特征在于,还包括:统计在所述客户端执行所述目标异步任务过程中的所述客户端的宕机次数;在所述宕机次数不小于预设次数时,禁止所述客户端执行所述目标异步任务。7.根据权利要求1至6所述的方法,其特征在于,在所述客户端获取针对目标服务的线程信息和可用内存信息之前,还包括:当所述客户端中不存在目标服务的服务标识时,在所述分布式数据库中查询所述服务标识;当所述分布式数据库中未查询到所述服务标识时,将所述服务标识对应的服务信息发送至所述分布式数据库,以在所述分布式数据库注册所述目标服务。8.一种异步任务的处理装置,其特征在于,涉及分布式数据库以及客户端,所述分布式数据库中存储有待执行的一个或多个异步任务,所述客户端用于执行所述分布式数据库中
的异步任务,所述装置包括:信息获取模块,用于获取针对目标服务的线程信息和可用内存信息;所述目标服务为所述客户端在所述分布式数据库中注册的用于处理异步任务的服务;异步任务执行模块,用于在所述线程信息表征为存在可用线程且所述可用内存信息大于预设的内存指标信息时,从所述分布式数据库中根据所述一个异步任务的优先级获取目标异步任务,并执行所述目标异步任务;任务执行失败模块,用于在所述目标异步任务执行失败时,调整所述目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行所述目标异步任务的内存指标信息。9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述异步任务的处理方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述异步任务的处理方法。

技术总结
本发明实施例提供了一种异步任务的处理方法、装置、电子设备以及存储介质,方法包括:客户端获取针对目标服务的线程信息和可用内存信息;并在线程信息表征为存在可用线程且可用内存信息大于预设的内存指标信息时,从分布式数据库中根据一个异步任务的优先级获取目标异步任务,并执行目标异步任务,进而在目标异步任务执行失败时,调整目标异步任务的优先级,并根据调整后的优先级,更新用于触发执行目标异步任务的内存指标信息。通过本发明实施例,实现了在异步任务失败后动态调整任务优先级以及内存指标信息,从而增加异步任务系统的稳定性和可用性。稳定性和可用性。稳定性和可用性。


技术研发人员:路晓梦 王世彪 王志海 喻波 安鹏
受保护的技术使用者:北京明朝万达科技股份有限公司
技术研发日:2023.04.18
技术公布日:2023/8/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐