掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及计算机技术领域,特别是涉及一种任务请求处理方法、系统、计算机设备和存储介质。

背景技术

随着计算机技术的发展,出现了一种利用分布式计算系统处理计算任务的技术,该分布式计算系统可以通过部署容器的方式实现,算法开发者可以将开发的算法打包成为镜像,即可将该算法部署至分布式计算系统中。

传统技术中,针对分布式计算系统的计算任务处理,如果某个时间段计算任务量较大,往往需要耗费较多的计算资源,而对于计算任务量较少的时间段,则会出现计算资源的浪费,因此上述分布式计算系统的任务处理方法,计算资源的利用率较低。

发明内容

基于此,有必要针对上述技术问题,提供一种任务请求处理方法、系统、装置、计算机设备、计算机可读存储介质和计算机程序产品。

第一方面,本申请提供了一种任务请求处理方法,所述方法包括:

响应于待处理的任务请求,获取所述任务请求对应的任务类型;

所述任务类型为实时任务的情况下,通过请求路由与负载均衡器推送所述任务请求至对应的第一任务代理程序中,由所述第一任务代理程序将所述任务请求转发至第一算法服务,通过所述第一算法服务获取所述任务请求的处理结果;

所述任务类型为异步任务的情况下,获取所述任务请求中的任务信息,并将所述任务信息存储至消息队列中;在所述任务信息被任务代理服务器拉取并发送至所述任务请求对应的第二任务代理程序的情况下,由所述第二任务代理程序根据所述任务信息封装为算法服务请求,将所述算法服务请求发送至第二算法服务,通过所述第二算法服务获取所述任务请求的处理结果。

在其中一个实施例中,任务请求处理方法,还可以包括:获取为当前算法服务预先分配的当前副本数,以及获取所述当前算法服务的目标副本数;所述当前算法服务包括所述第一算法服务或者所述第二算法服务;在所述目标副本数与所述当前副本数不匹配的情况下,更新所述当前算法服务分配的副本数为所述目标副本数;按照所述目标副本数部署所述当前算法服务,以及所述当前算法服务对应的任务代理程序。

在其中一个实施例中,在所述当前算法服务为所述第一算法服务的情况下,所述获取所述当前算法服务的目标副本数,包括:接收由所述当前算法服务对应的任务代理程序反馈的所述当前算法服务对应的并发数;获取预先设定的系统目标平均并发数;根据所述当前算法服务对应的并发数、所述系统目标平均并发数以及所述当前副本数,得到所述目标副本数。

在其中一个实施例中,在所述当前算法服务为所述第二算法服务的情况下,所述获取所述当前算法服务的目标副本数,包括:接收由所述当前算法服务对应的任务代理程序反馈的所述当前算法服务的任务处理速率,以及获取所述当前算法服务对应的消息队列中存储的任务堆积量;获取预先设定的系统目标处理延时时间;根据所述任务处理速率、所述任务堆积量、所述系统目标处理延时时间以及所述当前副本数,得到所述目标副本数。

在其中一个实施例中,所述获取所述任务请求中的任务信息,并将所述任务信息存储至消息队列中,包括:从所述任务请求中识别出所述任务请求对应的算法服务标识,以及所述任务请求对应的任务信息;将所述任务信息存储至与所述算法服务标识相关联的消息队列中。

在其中一个实施例中,所述任务代理服务器预先从所述消息队列中拉取所述任务信息;所述在所述任务信息被任务代理服务器拉取并发送至所述任务请求对应的第二任务代理程序的情况下,由所述第二任务代理程序根据所述任务信息封装为算法服务请求,包括:在接收到候选任务代理程序从所述任务代理服务器中获取任务的任务获取请求的情况下,确定所述候选任务代理程序关联的算法服务;在所述关联的算法服务为所述算法服务标识表征的算法服务的情况下,将所述候选任务代理程序作为所述第二任务代理程序,并将所述任务信息从所述任务代理服务器发送至所述第二任务代理程序,由所述第二任务代理程序根据所述任务信息封装为算法服务请求。

在其中一个实施例中,所述通过所述第二算法服务获取所述任务请求的处理结果之后,还包括:在所述处理结果表征所述任务请求处理成功的情况下,通过所述第二任务代理程序向所述任务代理服务器发送成功通知信息;所述成功通知信息用于指示所述任务代理服务器进行回调通知或将所述处理结果进行存储;在所述处理结果表征所述任务请求处理失败的情况下,通过所述第二任务代理程序向所述任务代理服务器发送失败通知信息;所述失败通知信息用于指示所述任务代理服务器重新将所述任务信息发送至所述第二任务代理程序。

第二方面,本申请还提供了一种任务请求处理系统,所述系统包括:

实时网关,用于接收任务类型为实时任务的待处理的任务请求,将所述任务请求通过请求路由与负载均衡器推送至所述任务请求对应的第一容器计算单元的第一任务代理程序;

第一容器计算单元,用于通过所述第一任务代理程序,将所述任务请求转发至所述第一容器计算单元中的第一算法服务,通过所述第一算法服务获取所述任务请求的处理结果;

异步网关,用于接收任务类型为异步任务的待处理的任务请求,获取所述任务请求的任务信息,并将所述任务信息存储至消息队列中;

任务代理服务器,用于从所述消息队列中拉取所述任务信息,并将所述任务信息发送至所述任务请求对应的第二容器计算单元的第二任务代理程序;

第二容器计算单元,用于通过所述第二任务代理程序,根据所述任务信息封装为算法服务请求,将所述算法服务请求发送至所述第二容器计算单元中的第二算法服务,通过所述第二算法服务获取所述任务请求的处理结果。

第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

响应于待处理的任务请求,获取所述任务请求对应的任务类型;

所述任务类型为实时任务的情况下,通过请求路由与负载均衡器推送所述任务请求至对应的第一任务代理程序中,由所述第一任务代理程序将所述任务请求转发至第一算法服务,通过所述第一算法服务获取所述任务请求的处理结果;

所述任务类型为异步任务的情况下,获取所述任务请求中的任务信息,并将所述任务信息存储至消息队列中;在所述任务信息被任务代理服务器拉取并发送至所述任务请求对应的第二任务代理程序的情况下,由所述第二任务代理程序根据所述任务信息封装为算法服务请求,将所述算法服务请求发送至第二算法服务,通过所述第二算法服务获取所述任务请求的处理结果。

第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

响应于待处理的任务请求,获取所述任务请求对应的任务类型;

所述任务类型为实时任务的情况下,通过请求路由与负载均衡器推送所述任务请求至对应的第一任务代理程序中,由所述第一任务代理程序将所述任务请求转发至第一算法服务,通过所述第一算法服务获取所述任务请求的处理结果;

所述任务类型为异步任务的情况下,获取所述任务请求中的任务信息,并将所述任务信息存储至消息队列中;在所述任务信息被任务代理服务器拉取并发送至所述任务请求对应的第二任务代理程序的情况下,由所述第二任务代理程序根据所述任务信息封装为算法服务请求,将所述算法服务请求发送至第二算法服务,通过所述第二算法服务获取所述任务请求的处理结果。

第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:

响应于待处理的任务请求,获取所述任务请求对应的任务类型;

所述任务类型为实时任务的情况下,通过请求路由与负载均衡器推送所述任务请求至对应的第一任务代理程序中,由所述第一任务代理程序将所述任务请求转发至第一算法服务,通过所述第一算法服务获取所述任务请求的处理结果;

所述任务类型为异步任务的情况下,获取所述任务请求中的任务信息,并将所述任务信息存储至消息队列中;在所述任务信息被任务代理服务器拉取并发送至所述任务请求对应的第二任务代理程序的情况下,由所述第二任务代理程序根据所述任务信息封装为算法服务请求,将所述算法服务请求发送至第二算法服务,通过所述第二算法服务获取所述任务请求的处理结果。

上述任务请求处理方法、系统、计算机设备、存储介质和计算机程序产品,响应于待处理的任务请求,获取任务请求对应的任务类型;任务类型为实时任务的情况下,通过请求路由与负载均衡器推送任务请求至对应的第一任务代理程序中,由第一任务代理程序将任务请求转发至第一算法服务,通过第一算法服务获取任务请求的处理结果;任务类型为异步任务的情况下,获取任务请求中的任务信息,并将任务信息存储至消息队列中;在任务信息被任务代理服务器拉取并发送至任务请求对应的第二任务代理程序的情况下,由第二任务代理程序根据任务信息封装为算法服务请求,将算法服务请求发送至第二算法服务,通过第二算法服务获取任务请求的处理结果。本申请通过在分布式计算系统接收到需要处理的任务请求时,确定任务请求的任务类型,如果任务类型是实时任务,则可以通过请求路由与负载均衡器将请求推送至第一任务代理程序,由第一任务代理程序将请求转发至第一算法服务来处理任务请求,而如果任务类型为异步任务则可以将任务请求的任务信息存储在消息队列中,之后如果任务信息被任务代理服务器拉取并发送至任务请求对应的第二任务代理程序,则可以通过第二任务代理程序根据任务信息封装为算法服务请求,并将算法服务请求发送至第二算法服务来处理任务请求,因此可以同时处理实时任务和异步任务,在保证实时任务处理的实时性的前提下,也可以通过异步任务来调整不同时间段的计算资源损耗,从而可以提高计算资源利用率。

附图说明

图1为一个实施例中任务请求处理方法的流程示意图;

图2为一个实施例中部署算法服务与任务代理程序的流程示意图;

图3为一个实施例中得到目标副本数的流程示意图;

图4为另一个实施例中得到目标副本数的流程示意图;

图5为一个实施例中任务请求处理系统的结构示意图;

图6为一个实施例中系统构建和发布流程的流程示意图;

图7为一个实施例中任务计算流程示意图;

图8为一个实施例中任务处理交互流程示意图;

图9为一个实施例中自动扩缩容流程示意图;

图10为一个实施例中实时系统扩缩容交互流程示意图;

图11为一个实施例中异步系统扩缩容交互流程示意图;

图12为一个实施例中系统结构和数据流示意图;

图13为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在一个实施例中,如图1所示,提供了一种任务请求处理方法,本实施例以该方法应用于服务器进行举例说明,可以理解的是,该方法也可以应用于终端,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:

步骤S101,响应于待处理的任务请求,获取所述任务请求对应的任务类型。

其中,任务请求是用于请求分布式计算服务器集群执行计算任务的计算任务请求,该请求可以是由需要进行任务处理的终端触发得到,任务请求的信息可以是http请求,而任务类型则指的是待处理的计算任务的任务类型,该任务类型可以包括两种,需要实时处理的实时任务,以及可以异步处理的异步任务,该任务类型的确定可以是发起任务请求时由发起任务请求的终端选择从而确定,也可以是服务器根据预先确定的任务请求与任务类型之间的对应关系确定得到,例如服务器中可以预先建立有任务请求A与实时任务类型的对应关系,以及任务请求B与异步任务类型的对应关系,当待处理的任务请求是任务请求A,那么其任务类型则可以是实时任务。

步骤S102,任务类型为实时任务的情况下,通过请求路由与负载均衡器推送任务请求至对应的第一任务代理程序中,由第一任务代理程序将请求转发至第一算法服务,通过第一算法服务获取任务请求的处理结果。

其中,请求路由和负载均衡器是设置于分布式计算服务器集群中,用于推送任务请求的设备,而第一算法服务则可以用于对该实时任务提供算法计算服务,第一任务代理程序则是用于将任务请求转发至第一算法服务的代理程序。本实施例中,算法服务的数量可以是多个,分别用于处理不同的任务请求,并且每一个算法任务都对应有一个任务代理程序,由任务代理程序发送请求至算法服务以对该请求进行处理,第一算法服务即为用于处理待处理的实时任务请求的算法服务,而第一任务代理程序则指的是和第一算法服务对应的任务代理程序。

具体来说,如果任务类型为实时任务的情况下,分布式计算服务器可以通过请求路由与负载均衡器将该任务请求推送至对应的第一任务代理程序,之后第一任务代理程序则可以将该任务请求进行转发处理,将其转发至第一算法服务,从而可以通过运行第一算法服务,来实现针对实时任务请求的处理,得到相应的处理结果。

步骤S103,任务类型为异步任务的情况下,获取任务请求中的任务信息,并将任务信息存储至消息队列中;在任务信息被任务代理服务器拉取并发送至任务请求对应的第二任务代理程序的情况下,由第二任务代理程序根据任务信息封装为算法服务请求,将算法服务请求发送至第二算法服务,通过第二算法服务获取任务请求的处理结果。

任务信息则是用于描述任务请求中任务内容的信息,而消息队列则是用于存储任务信息的任务队列,该消息队列可以通过MQ队列来实现,而任务代理服务器则是用于从消息队列中提取任务信息的代理服务器,该服务器可以用于将存储在MQ队列中的异步任务请求的任务信息,转发至相应的任务代理程序中。其中第二算法服务即为用于处理待处理的异步任务请求的算法服务,而第二任务代理程序则指的是和第二算法服务对应的任务代理程序。

而如果任务类型为异步任务,由于不需要实时完成针对该任务请求的处理,因此可以先将该任务请求的任务信息,先存储在消息队列中,之后任务代理服务器则可以从消息队列中拉取出上述任务信息,并且还可以将任务信息发送至对应的第二任务代理程序中。第二任务代理程序接收到上述任务信息后,则可以将任务信息封装成算法服务请求,该算法服务请求也可以是http请求,以请求第二算法服务来获取任务请求的处理结果。

上述任务请求处理方法中,通过响应于待处理的任务请求,获取任务请求对应的任务类型;任务类型为实时任务的情况下,通过请求路由与负载均衡器推送任务请求至对应的第一任务代理程序中,由第一任务代理程序将任务请求转发至第一算法服务,通过第一算法服务获取任务请求的处理结果;任务类型为异步任务的情况下,获取任务请求中的任务信息,并将任务信息存储至消息队列中;在任务信息被任务代理服务器拉取并发送至任务请求对应的第二任务代理程序的情况下,由第二任务代理程序根据任务信息封装为算法服务请求,将算法服务请求发送至第二算法服务,通过第二算法服务获取任务请求的处理结果。本申请通过在分布式计算系统接收到需要处理的任务请求时,确定任务请求的任务类型,如果任务类型是实时任务,则可以通过请求路由与负载均衡器将请求推送至第一任务代理程序,由第一任务代理程序将请求转发至第一算法服务来处理任务请求,而如果任务类型为异步任务则可以将任务请求的任务信息存储在消息队列中,之后如果任务信息被任务代理服务器拉取并发送至任务请求对应的第二任务代理程序,则可以通过第二任务代理程序根据任务信息封装为算法服务请求,并将算法服务请求发送至第二算法服务来处理任务请求,因此可以同时处理实时任务和异步任务,在保证实时任务处理的实时性的前提下,也可以通过异步任务来调整不同时间段的计算资源损耗,从而可以提高计算资源利用率。

在一个实施例中,如图2所示,任务请求处理方法,还可以包括:

步骤S201,获取为当前算法服务预先分配的当前副本数,以及获取当前算法服务的目标副本数;当前算法服务包括第一算法服务或者第二算法服务。

当前算法服务可以是上述用于处理实时任务请求的第一算法服务,也可以是用于处理异步任务请求的第二算法服务,而当前副本数则指的是当前时刻为当前算法服务预先分配的计算副本数,可以用于表征当前时刻为当前算法服务预先分配的计算资源,而目标副本数则指的是当前时刻为当前时刻为当前算法服务最有分配的副本数,可以用于表征当前时刻为当前算法服务最优分配的计算资源。

具体来说,分布式计算服务器在接收到待处理的任务请求时,可以获取用于处理该任务请求的算法服务,即可以是用于处理实时任务请求的第一算法服务,也可以是用于处理异步任务请求的第二算法服务,作为当前算法服务,之后还可以获取在当前时刻分布式计算服务器预先为该当前算法服务分配的计算副本数,作为当前副本数,以及获取在当前时刻分布式计算服务器为当前算法服务最优分配的计算副本数,作为目标副本数。

步骤S202,在目标副本数与当前副本数不匹配的情况下,更新当前算法服务分配的副本数为目标副本数;

步骤S203,按照目标副本数部署当前算法服务,以及当前算法服务对应的任务代理程序。

如果目标副本数和当前副本数不匹配,例如可以是目标副本数多于当前副本数,也可以是目标副本数少于当前副本数,在这种情况下,分布式计算服务器则可以将当前算法服务分配的副本数由当前副本数更新为目标副本数,并基于目标副本数来部署当前算法服务,以及当前算法服务对应的任务代理程序。

如果目标副本数多于当前副本数,例如目标副本数为40,而当前副本数为20,此时为当前算法服务分配的计算资源要小于当前算法服务最优的计算资源,此时则需要为当前算法服务分配更多的计算资源,通过增加当前算法服务分配的副本数,即将分配的副本数增加至目标副本数40,并利用目标副本数部署当前算法服务以及对应的任务代理程序,即为当前算法服务以及对应的任务代理程序部署40个副本,从而可以实现增加当前算法服务的计算资源。

同理,如果目标副本数小于当前副本数,例如目标副本数为20,而当前副本数为40,此时为当前算法服务分配的计算资源要大于当前算法服务最优的计算资源,即会造成计算资源的冗余,此时则可以为当前算法服务减少分配的计算资源,通过减少当前算法服务分配的副本数,即将分配的副本数减少至目标副本数20,并利用目标副本数部署当前算法服务以及对应的任务代理程序,即为当前算法服务以及对应的任务代理程序部署20个副本,从而可以实现减少当前算法服务的计算资源。

本实施例中,还可以基于当前算法服务预先分配的当前副本数,以及目标副本数,来为当前算法服务以及任务代理程序分配计算副本,从而可以提高计算资源分配的智能性,进一步提高计算资源的利用率。

进一步地,如图3所示,在当前算法服务为第一算法服务的情况下,步骤S201可以进一步包括:

步骤S301,接收由当前算法服务对应的任务代理程序反馈的当前算法服务对应的并发数。

并发数指的是当前时刻请求当前算法服务的任务请求的请求数,本实施例中,如果当前算法服务是用于处理实时任务请求的第一算法服务,该算法服务对应的任务代理程序,则可以向分布式计算服务器反馈当前时刻该算法服务对应的并发数。

步骤S302,获取预先设定的系统目标平均并发数;

步骤S303,根据当前算法服务对应的并发数、系统目标平均并发数以及当前副本数,得到目标副本数。

系统目标评价并发数则是预先设定的系统目标并发数,本实施例中,分布式计算服务器可以预先设定有系统目标平均并发数,之后基于当前算法服务对应的并发数、系统目标平均并发数以及当前副本数,来计算得到目标副本数。

例如,目标副本数可以通过以下公式计算得到:

其中,r′表示目标副本数,c表示当前算法服务对应的并发数,t表示系统目标平均并发数,而r表示当前副本数。

本实施例中,如果当前算法服务为用于处理实时任务请求的第一算法服务,可以根据当前算法服务对应的并发数、系统目标平均并发数以及当前副本数计算得到目标副本数,从而可以提高目标副本数的计算精度。

另外,如图4所示,在当前算法服务为所述第二算法服务的情况下,步骤S201可以进一步包括:

步骤S401,接收由当前算法服务对应的任务代理程序反馈的当前算法服务的任务处理速率,以及获取当前算法服务对应的消息队列中存储的任务堆积量。

任务处理速率可以用于表征在当前时刻中当前算法服务处理任务请求的快慢,而任务堆积量则指的是当前算法服务对应的消息队列中存储的任务信息的堆积量,本实施例中,不同消息队列可以预先构建有和不同算法服务的对应关系,可以用于存储通过该算法服务处理的异步任务请求的任务信息,当前算法服务对应的消息队列则指的是和当前算法服务对应的消息队列。例如算法服务A可以用于处理异步任务请求A,并且算法服务A预先和消息队列A构建有对应关系,那么在接收到异步任务请求A后,异步任务请求A的任务信息则可以存储至消息队列A。

具体来说,如果当前算法服务是用于处理实时任务请求的第二算法服务,该算法服务对应的任务代理程序,可以向分布式计算服务器反馈当前时刻该算法服务对应的任务处理速率,并且分布式计算服务器也可以从算法服务对应的消息队列中获取消息队列中存储任务的任务堆积量。

步骤S402,获取预先设定的系统目标处理延时时间;

步骤S403,根据任务处理速率、任务堆积量、系统目标处理延时时间以及当前副本数,得到目标副本数。

系统目标处理延时时间则指的是预先设定的分布式计算服务器处理异步任务的延时时间,本实施例中,分布式计算服务器可以预先设定有系统目标处理延时时间,之后基于当前算法服务对应的任务处理速率、消息队列中的任务堆积量、系统目标处理延时时间以及当前副本数,来计算得到目标副本数。

例如,目标副本数可以通过以下公式计算得到:

其中,r′表示目标副本数,a表示消息队列中的任务堆积量,c表示当前算法服务对应的任务处理速率,t表示系统目标处理延时时间,而r表示当前副本数。

本实施例中,如果当前算法服务为用于处理实时任务请求的第二算法服务,可以根据当前算法服务对应的任务处理速率、系统目标处理延时时间、消息队列中的任务堆积量以及当前副本数计算得到目标副本数,从而可以提高目标副本数的计算精度。

在一个实施例中,步骤S103可以进一步包括:从任务请求中识别出任务请求对应的算法服务标识,以及任务请求对应的任务信息;将任务信息存储至与算法服务标识相关联的消息队列中。

算法服务标识是用于标识用于处理该任务请求的算法服务的服务标识,可以是算法服务ID,该服务标识可以附带于任务请求中,以表征用于处理该任务请求所使用的算法服务。具体来说,如果任务请求表征的是异步任务请求,在发起任务请求时,可以在任务请求中携带用于标识对该任务请求进行处理的算法服务的算法服务标识,并且可以携带该任务请求对应的任务信息。

同时,不同消息队列可以预先构建有和不同算法服务的对应关系,例如消息队列A对应于算法服务A、消息队列B对应为算法服务B,而消息队列C对应于算法服务C,那么在确定出算法服务标识后,则可以将该任务请求的任务信息存储至相应算法服务标识的消息队列中。以待处理的任务请求携带的算法服务标识是标识A为例,由于标识A可以用于标识算法服务A,因此分布式计算服务器可以将待处理的任务请求的任务信息存储至消息队列A中。

本实施例中,待处理的任务请求中还可以携带有算法服务标识,可以用于标识用于处理该任务请求的算法服务,从而可以将该任务请求的任务信息存储至该算法服务标识关联的消息队列中,可以提高任务信息存储至消息队列的效率。

进一步地,任务代理服务器预先从消息队列中拉取任务信息;步骤S103可以进一步包括:在接收到候选任务代理程序从任务代理服务器中获取任务的任务获取请求的情况下,确定候选任务代理程序关联的算法服务;在关联的算法服务为算法服务标识表征的算法服务的情况下,将候选任务代理程序作为第二任务代理程序,并将任务信息从任务代理服务器发送至第二任务代理程序,由第二任务代理程序根据任务信息封装为算法服务请求。

本实施例中,任务代理服务器从消息队列中拉取任务信息,以及将任务信息发送至第二任务代理程序的过程可以是不同步进行的,即可以是由任务代理服务器先从消息队列中拉取任务信息,并在任务代理服务器中存储,之后才从任务代理服务器中将任务信息发送至第二任务代理程序。而发送任务信息的触发条件则可以是通过第二任务代理程序向任务代理服务器发起用于获取任务信息的任务获取请求的方式触发。而候选任务代理程序则是任意一个用于处理异步任务请求的算法服务对应的任务代理程序。

具体来说,任务代理服务器可以预先消息队列中拉取待处理的异步任务请求的任务信息,并将其存储。之后,如果某一个任务代理程序,即候选任务代理程序向任务代理服务器触发任务获取请求时,如果该候选任务代理程序关联的算法服务,即为待处理的异步任务请求中算法服务标识表征的算法服务时,该候选任务代理程序即可作为第二任务代理程序,因此可以将上述待处理的异步任务请求的任务信息。从任务代理服务器中发送至第二任务代理程序,由第二任务代理程序对该任务信息进行封装成算法服务请求。

本实施例中,任务代理服务器可以预先从消息队列中拉取任务信息,因此可以在接收到任务代理程序发起的任务获取请求时,即可将相应任务信息发送至相应的任务代理程序,而不是在任务代理程序发起的任务获取请求时,才从消息队列中提取任务信息,通过该方式可以提高异步任务的处理效率。

另外,步骤S103之后,还可以包括:在处理结果表征任务请求处理成功的情况下,通过第二任务代理程序向任务代理服务器发送成功通知信息;成功通知信息用于指示任务代理服务器进行回调通知或将处理结果进行存储;在处理结果表征任务请求处理失败的情况下,通过第二任务代理程序向任务代理服务器发送失败通知信息;失败通知信息用于指示任务代理服务器重新将任务信息发送至第二任务代理程序。

如果第二算法服务处理任务请求的处理结果是处理成功,即任务请求已成功处理的情况下,那么第二任务代理程序还可以向任务代理服务器发送任务处理成功通知信息,该通知信息可以指示任务代理服务器进行回调通知,即向触发任务请求的终端进行HTTP回调通知,也可以是将上述任务处理的成功的结果进行存储,等待触发任务请求的终端查询上述处理结果。

而如果第二算法服务处理任务请求的处理结果是处理失败,即任务请求未处理成功的情况下,那么为了保证任务的顺利处理,第二任务代理程序还可以向任务代理服务器发送任务处理失败通知信息,该通知信息可以指示任务代理服务器重新将任务信息发送至第二任务代理程序,以使得第二任务代理程序再次将任务信息封装为算法服务请求,以请求第二算法服务再次获取任务请求的处理结果。

本实施例中,如果任务请求的处理结果为处理成功,则可以反馈成功通知信息,以使得任务代理服务器通过回调通知或者存储处理结果的方式,来向触发任务请求的终端反馈处理结果,而如果处理失败,则可以反馈失败通知信息,来使任务代理服务器重新发送任务信息,以再次处理任务请求,从而可以提高异步任务请求的处理完整性。

在一个实施例中,如图5所示,还提供了一种任务请求处理系统,该系统可以包括实时网关501、第一容器计算单元502、异步网关503、任务代理服务器504以及第二容器计算单元505,其中第一容器计算单元502中可以包含有第一任务代理程序以及第一算法服务,而第二容器计算单元505中可以包含有第二任务代理程序以及第二算法服务,第一容器计算单元502与第二容器计算单元505可以通过容器pod来实现。

具体来说,实时网关501是用于接收任务类型为实时任务的任务请求的网关,如果待处理的任务请求的任务类型为实时任务,终端可以向实时网关501触发上述任务请求,实时网关501则可以将该实时任务请求通过请求路由以及负载均衡器推送至用于对该实时任务请求进行处理的容器计算单元,即第一容器计算单元中的第一任务代理程序。

而第一容器计算单元502则是包含有第一任务代理程序以及,用于处理实时任务请求的第一算法服务的容器计算单元,在第一任务代理程序接收到由负载均衡器推送的任务请求后,则可以将该任务请求转发至第一算法服务,由第一算法服务对实时任务请求进行处理,从而得到该任务请求的处理结果。

而异步网关503则是用于接收任务类型为异步任务的任务请求的网关,如果待处理的任务请求的任务类型为异步任务,终端可以向异步网关503触发上述任务请求,异步网关503则可以将该异步任务请求中的任务信息,存储至消息队列中,该消息队列可以是预先建立有与用于处理该异步任务请求的第二算法服务的关联关系的消息队列。

之后,任务代理服务器504则可以消息队列中拉取出上述任务信息,并且将该任务信息发送至用于对该异步任务请求进行处理的容器计算单元,即第二容器计算单元505中的第二任务代理程序。

而第二容器计算单元505则是包含有第二任务代理程序以及,用于处理异步任务请求的第二算法服务的容器计算单元,在第二任务代理程序接收到由任务代理服务器504推送的任务信息后,则可以根据任务信息进行封装,得到算法服务请求,并将该算法服务请求发送至第二算法服务,由第二算法服务对异步任务请求进行处理,从而得到该任务请求的处理结果。

本实施例中,还提供了一种任务请求处理系统,该系统可以包括:实时网关501,用于接收任务类型为实时任务的待处理的任务请求,将任务请求通过请求路由与负载均衡器推送至任务请求对应的第一容器计算单元502的第一任务代理程序;第一容器计算单元502,用于通过第一任务代理程序,将任务请求转发至第一容器计算单元502中的第一算法服务,通过第一算法服务获取任务请求的处理结果;异步网关503,用于接收任务类型为异步任务的待处理的任务请求,获取任务请求的任务信息,并将任务信息存储至消息队列中;任务代理服务器504,用于从消息队列中拉取任务信息,并将任务信息发送至任务请求对应的第二容器计算单元505的第二任务代理程序;第二容器计算单元505,用于通过第二任务代理程序,根据任务信息封装为算法服务请求,将算法服务请求发送至第二容器计算单元505中的第二算法服务,通过第二算法服务获取任务请求的处理结果。本申请通过在实时网关501接收到实时任务请求时,可以通过请求路由与负载均衡器将请求推送至第一容器计算单元502中的第一任务代理程序,由第一任务代理程序将请求转发至第一容器计算单元502中的第一算法服务来处理任务请求,在异步网关503接收到异步任务请求时,可以将任务请求的任务信息存储在消息队列中,之后如果任务信息被任务代理服务器504拉取并发送至任务请求对应的第二容器计算单元505中的第二任务代理程序,则可以通过第二任务代理程序根据任务信息封装为算法服务请求,并将算法服务请求发送至第二容器计算单元505中的第二算法服务来处理任务请求,因此可以同时处理实时任务和异步任务,在保证实时任务处理的实时性的前提下,也可以通过异步任务来调整不同时间段的计算资源损耗,从而可以提高计算资源利用率。

在一个实施例中,还提供了一种可自动扩缩容的实时、异步分布式计算系统,通过简化算法服务开发、自动嵌入任务代理容器到计算服务单元、基于K8S多副本分布式部署、配套设计任务网关、任务队列、任务代理、自动扩缩容等功能,可以支持单一功能的算法计算逻辑快速实现成复杂的实时、异步分布式计算系统。本实施例一方面让开发者专注于计算逻辑开发工作,减轻开发工作量,提升工程效率。另一方面,本实施例设计了基于K8S分布式部署的自动扩缩容能力,不仅降低系统机器运维成本,还能解决大规模实时、异步计算任务需求。最后,本实施例可以应用到机器视觉、视频去水印、音频处理、图片生成、推荐等多种业务大规模计算场景中。该系统的实现方式可以包括以下过程:

1、系统开发、构建和发布

实时、异步计算系统的开发,算法开发者的主要工作变成开发算法逻辑函数,然后嵌入到预开发好的算法服务框架即可,极大简化了开发者工作。系统开发流程如图6所示,可以包括:(1)算法服务开发:开发算法逻辑函数,然后嵌入到预开发好的算法服务框架。(2)镜像构建和发布:CI流程自动打包成镜像并推送到仓库存储,系统发布会拉取打包好的算法服务容器镜像,并自动注入任务代理容器构成算法服务部署后部署到K8S中。

2、实时、异步任务计算

相同的算法服务,通过任务代理的两种不同运行模式,可以自动配合请求路由、负载均衡、任务代理服务器和任务消息队列,变成实时、异步计算系统,具体工作流程可如图7所示。

(1)实时任务计算:

任务发送、路由选择和负载均衡:实时计算的任务以HTTP请求方式发送给实时网关,请求体中包含了所有任务信息,任务请求将被任务网关路由和负载均衡到目标算法服务中,由任务代理接收。

任务代理和计算:实时计算系统中,任务代理以实时转发模式运行,接受到HTTP任务请求后仅做数据统计工作,请求体不做任何处理直接转发算法服务做计算后返回结果。

(2)异步任务计算:

任务发送、队列存储和消费:异步计算的任务以HTTP请求方式发送给异步网关,请求体中包含了所有任务信息和目标算法服务标识,异步网关根据目标算法服务标识不同,将任务信息存储到不同的任务消息队列中,待任务代理服务器进行任务消费。

任务代理和计算:异步计算系统中,任务代理服务器和任务代理以生产者和消费者模式运行,首先任务代理服务器会读取任务消息队列中的任务,任务代理则以消费者角色主动请求任务代理服务器来获取待计算的任务,任务代理获取到任务后将任务内容封装成HTTP请求发送给算法服务做计算。如果任务计算成功,任务代理将通知任务代理服务器任务处理完成;任务计算失败,任务代理将通知任务代理服务器任务重新分发。

任务结果通知:任务计算后的结果由任务代理服务器进行HTTP回调通知,或者存储到数据库中待查询。

实时、异步的任务计算的系统模块交互设计如图8所示,其中:

实时计算系统:任务代理以实时模式运行,实时计算任务通过实时网关发送后,由请求路由和负载均衡器推送给到指定计算服务的计算单元,任务代理容器接收后直接透明转发给算法服务容器做计算。

异步计算系统:任务代理以异步模式运行,异步计算任务通过异步网关发送后,存储在异步任务消息队列中,任务代理主动请求任务代理服务器获取待计算任务时,任务代理服务器会从任务消息队列中拉取任务发送给到任务代理,任务代理容器再下发给到算法服务容器做计算。

3、算法服务自动扩缩容:

实时、异步计算系统的计算服务均部署在K8S中,天然支持大规模多副本分布式计算,如图9所示,根据计算类型不同,采用两种扩缩容方式实现自动扩缩容能力。

实时计算自动扩缩容:

任务指标统计:实时计算系统,任务代理会实时统计透传的任务请求的QPS、并发数、请求延时指标,系统用这些指标做扩缩容的计算依据。

自动扩缩容:扩缩容模块实时秒级查询任务代理统计的请求指标,计算出最优的算法服务副本数,以基于并发数扩缩容为例,假设当前并发数是c,系统目标平均并发数是t,当前副本数是r,期望副本数

异步计算自动扩缩容:

任务指标统计:异步计算系统中,任务消息队列定时上报任务堆积量到存储,任务代理定时上报任务的消费速率存储,系统用这两个指标做扩缩容的计算依据。

自动扩缩容:扩缩容模块定时查询存储的任务堆积量和消费速率指标,计算出最优的算法服务副本数,假设任务堆积量是a,消费速率是c,系统目标处理延时时间是t,当前副本数是r,期望副本数

自动扩缩容的系统模块交互设计如图10和图11所示,其中:

实时计算自动扩缩容:实时计算系统中,任务代理会统计并实时上报算法服务的QPS、并发数等请求指标数据到指标服务,自动扩缩容器会每秒查询请求指标数据,根据配置的扩容阈值计算出最优副本数,更新计算服务的部署进行服务动态扩缩容。

异步计算自动扩缩容:异步计算系统中,指标服务会主动收集异步任务消息队列的任务堆积量,自动扩容器定时查询堆积量指标数据,根据配置的最大处理延时时间阈值计算除最优副本数,更新计算服务的部署进行服务动态扩缩容。

4、系统部署架构和数据流:

(1)系统部署实现:采用了分层的概念,主要包括了网关层、队列层、代理层和计算层,可如图12所示。

网关层,提供了实时和异步两种网关,实时计算请求通过实时网关发送负载均衡器,请求均匀给到计算服务单元,异步计算请求通过异步网关将任务发送到指定优先级队列中等待计算

代理层,负载均衡器负载对实时计算任务做请求路由和负载均衡,保证算法计算服务负载平均。任务代理服务器负责读取任务队列中的代计算任务,发送给任务代理做任务计算,获取计算结果后回调通知。

计算层,基于K8S部署算法服务单元,任务由计算服务单元中的任务代理容器获取后给到算法服务容器进行计算,支持自动扩缩容。

任务数据流:异步计算的任务经过网关输入到队列中,然后由任务代理分发给算法服务做计算;实时计算的任务经过网关后直达负载均衡,然后转发给算法服务做计算。

分布式计算:算法服务部署在K8S中,支持计算服务单元横向扩容部署在多个机器节点上,天然支持大规模多副本分布式计算。

上述可自动扩缩容的实时、异步分布式计算系统,降低了实时、异步计算系统的开发工作量,多副本分布式部署方式解决了大规模任务场景的性能瓶颈问题,系统支持根据任务量进行计算资源自动扩缩容,可提升资源利用率,降低系统服务运维成本。算法开发者只需要开发算法计算逻辑函数,嵌入到预开发的算法服务框架后打包成镜像,就可以自动生成实时、异步计算系统,工作量相比现有技术更少,开发者更专注于核心算法逻辑。并且分布式部署和自动扩缩容,算法服务借助K8S容器编排能力实现了大规模分布式部署,可有效应对大规模任务计算场景,配合自动扩缩容能力可以按照任务量进行扩缩容,轻松应对任务量变化情况。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储算法服务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务请求处理方法。

本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

相关技术
  • 产品购买请求处理方法、装置、计算机设备和存储介质
  • 任务处理方法、装置、电子设备及计算机可读存储介质
  • 绩效任务数据处理方法、装置、计算机设备及存储介质
  • 任务处理方法、装置、电子设备及计算机可读存储介质
  • 自动化游戏任务处理方法及存储介质、计算机设备
  • 任务请求的处理方法、装置、系统及计算机可读存储介质
  • 任务请求处理方法、装置、系统、可读存储介质和电子设备
技术分类

06120116498179