农场渲染方法、装置、电子设备和存储介质
文献发布时间:2023-06-19 11:57:35
技术领域
本发明涉及农场渲染技术领域,尤其涉及一种农场渲染方法、装置、电子设备和存储介质。
背景技术
随着云计算技术和分布式技术的普及,目前已经有越来越多的用户将需要占用大量计算资源的渲染任务提交到各大渲染农场进行完成。渲染农场通过分布式技术,可以实现在同一时间调用多个处理器进行并发的计算,通过计算机集群来完成超大规模的图形计算,提升整体渲染效率。
为满足用户的渲染需求,各大渲染农场商家普遍需要先在一个或几个固定地点部署大批量集群式节点机,再采用用户先来先服务原则,对优先提交的渲染任务优先分配渲染资源。
根据调查发现,影视行业存在的大小年、淡旺季和分布地点不确定等固有行业因素,目前各大渲染农场厂商基于成本考虑无法随时随地,每时每刻都保证节点机的无限量扩充。主要问题有:单纯的采用先来先服务原则,会导致部分提交渲染任务较早的用户占用了绝大部分的节点机,而提交渲染任务较晚的用户无法避免的出现所有待渲染任务都长时间等待的问题。单纯的只调用本地区部署的节点机,会经常出现本地区的节点机已经爆满,用户需要长时间排队等待,但是其他地区节点机仍然空闲的情况。
目前缺乏一种能够在地区节点机有限的场景下,仍然可以有效地对农场进行渲染,避免部分用户长时间等待的方式。
发明内容
本发明提供一种农场渲染方法、装置、电子设备和存储介质,用以解决现有技术中的地区节点机有限的情况下,有时会出现部分用户的渲染任务长时间等待的缺陷,实现在地区节点机有限的场景下,仍然可以有效地对农场进行渲染,避免用户长时间等待。
本发明提供一种农场渲染方法,包括:
获取第一子云内的多个待渲染任务,并将所述多个待渲染任务按照提交时间进行排序;
根据排序结果确定目标待渲染任务;
检测所述目标待渲染任务的请求用户的当前并行任务数量是否小于预设最大并行任务上限值,且检测所述目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测所述第一子云内是否具有与所述目标待渲染任务对应数量的空闲节点机;
如果所述目标待渲染任务的请求用户的当前并行任务数量小于所述预设最大并行任务上限值,且所述目标待渲染任务所需的节点数超过所述预设最大并行结点上限值,且所述第一子云内具有与所述目标待渲染任务对应数量的空闲节点机,则为所述目标待渲染任务分配与所述预设最大并行结点上限值数量相等的节点机;
基于分配的、与所述预设最大并行结点上限值数量相等的节点机,根据所述目标待渲染任务进行渲染。
根据本发明提供的农场渲染方法,在检测所述目标待渲染任务的请求用户的当前并行任务数量是否小于预设最大并行任务上限值,且检测所述目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测所述第一子云内是否具有与所述目标待渲染任务对应数量的空闲节点机之后,还包括:
如果所述目标待渲染任务的请求用户的当前并行任务数量小于所述预设最大并行任务上限值,且所述目标待渲染任务所需的节点数未超过所述预设最大并行结点上限值,且所述第一子云内具有与所述目标待渲染任务对应数量的空闲节点机,则在所述第一子云内根据所述目标待渲染任务分配对应数量的节点机;
基于分配的节点机根据所述目标待渲染任务进行渲染。
根据本发明提供的农场渲染方法,在检测所述目标待渲染任务的请求用户的当前并行任务数量是否小于预设最大并行任务上限值,且检测所述目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测所述第一子云内是否具有与所述目标待渲染任务对应数量的空闲节点机之后,还包括:
如果所述目标待渲染任务的请求用户的当前并行任务数量等于所述预设最大并行任务上限值,且所述目标待渲染任务所需的节点数未超过所述预设最大并行结点上限值,则使所述目标渲染任务进行等待,直至所述目标待渲染任务的请求用户的当前并行任务数量小于所述预设最大并行任务上限值为止。
根据本发明提供的农场渲染方法,在检测所述目标待渲染任务的请求用户的当前并行任务数量是否小于预设最大并行任务上限值,且检测所述目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测所述第一子云内是否具有与所述目标待渲染任务对应数量的空闲节点机之后,还包括:
如果所述第一子云内不具有与所述目标待渲染任务对应数量的空闲节点机,则将所述目标待渲染任务中的超负荷子任务通过所述第一子云的母云确定的第二子云的节点机进行渲染;
其中,所述母云分别与所述第一子云和所述第二子云通信连接。
根据本发明提供的农场渲染方法,在将所述目标待渲染任务中的超负荷子任务通过所述第一子云的母云确定的第二子云的节点机进行渲染之后,还包括:
所述第二子云将所述超负荷子任务的渲染结果发送给所述第一子云。
本发明还提供一种农场渲染装置,包括:
获取模块,用于获取第一子云内的多个待渲染任务;
排序模块,用于将所述多个待渲染任务按照提交时间进行排序;
控制处理模块,用于根据排序结果确定目标待渲染任务;所述控制处理模块还用于检测所述目标待渲染任务的请求用户的当前并行任务数量是否小于预设最大并行任务上限值,且检测所述目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测所述第一子云内是否具有与所述目标待渲染任务对应数量的空闲节点机;所述控制处理模块还用于如果所述目标待渲染任务的请求用户的当前并行任务数量小于所述预设最大并行任务上限值,且所述目标待渲染任务所需的节点数超过所述预设最大并行结点上限值,且所述第一子云内具有与所述目标待渲染任务对应数量的空闲节点机,则为所述目标待渲染任务分配与所述预设最大并行结点上限值数量相等的节点机;所述控制处理模块还用于基于分配的、与所述预设最大并行结点上限值数量相等的节点机,根据所述目标待渲染任务进行渲染。
根据本发明提供的农场渲染装置,所述控制处理模块还用于如果所述目标待渲染任务的请求用户的当前并行任务数量小于所述预设最大并行任务上限值,且所述目标待渲染任务所需的节点数未超过所述预设最大并行结点上限值,且所述第一子云内具有与所述目标待渲染任务对应数量的空闲节点机,则在所述第一子云内根据所述目标待渲染任务分配对应数量的节点机;所述控制处理模块还用于基于分配的节点机根据所述目标待渲染任务进行渲染。
根据本发明提供的农场渲染装置,所述控制处理模块还用于如果所述目标待渲染任务的请求用户的当前并行任务数量等于所述预设最大并行任务上限值,则使所述目标渲染任务进行等待,直至所述目标待渲染任务的请求用户的最大并行任务数量小于等于所述预设最大并行任务上限值为止。
根据本发明提供的农场渲染装置,还包括通信模块;所述控制处理模块还用于如果所述第一子云内不具有与所述目标待渲染任务对应数量的空闲节点机,则通过所述通信模块将所述目标待渲染任务中的超负荷任务提供给所述第一子云的母云,以便由所述母云确定的第二子云的节点机进行渲染;其中,所述母云分别与所述第一子云和所述第二子云通信连接。
根据本发明提供的农场渲染装置,所述通信模块还用于接收所述第二子云发送的所述超负荷任务的渲染结果。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述农场渲染方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述农场渲染方法的步骤。
本发明提供的农场渲染方法、装置、电子设备和存储介质,通过对子云内的多个待渲染任务按照提交时间进行排序,根据排序结果将最先提交的待渲染任务作为目标待渲染任务,检测目标待渲染任务的请求用户的最大并行任务数量、目标待渲染任务所需的节点数量和子云内是否有足够的空闲节点机,如果其他条件满足,仅是目标待渲染任务所需的节点数超过预设最大并行结点上限值,则在子云内为目标待渲染任务分配与所述预设最大并行结点上限值数量相等的节点机,通过这些分配的节点机根据渲染任务进行渲染。本发明通过最大并行任务数量和最大并行节点数的双重保障方式,可以避免子云的部分用户的渲染任务长时间等待。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的农场渲染方法的流程示意图;
图2是本发明提供的农场渲染装置的结构示意图;
图3是本发明一个示例中电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应理解,说明书通篇中提到的“实施例”或“一个实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“实施例中”或“在一个实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
在本发明的描述中,需要理解的是,术语“第一”和“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明中,子云为根据某个地区的节点机采用云技术建立的分布式集群。母云为所有子云的管理中心。
下面结合图1描述本发明的农场渲染方法。
S1:获取第一子云内的多个待渲染任务,并将多个待渲染任务按照提交时间进行排序。
具体地,第一子云的业务系统收到多个用户发送的多个待渲染任务时,可以在智能调度中心通过消息队列的方式进行存储,并根据多个待渲染任务的提交时间进行排序。
S2:根据排序结果确定目标待渲染任务。即将最早收到的、且未处理的待渲染任务作为目标待渲染任务。
S3:检测目标待渲染任务的请求用户的当前并行任务数量是否小于预设最大并行任务上限值,且检测目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测第一子云内是否具有与目标待渲染任务对应数量的空闲节点机。
具体地,根据第一子云内的节点机数量和性能对第一子云设定相应的最大并行任务上限值和最大并行结点上限值,以确保第一子云的处理能力,同时避免第一子云内的节点机为渲染内容较大的任务长时间占用,导致部分用户的待渲染任务长时间等待。
当确定目标待渲染任务之后,检测目标待渲染任务的请求用户的当前并行任务数量是否小于最大并行任务上限值(例如目标待渲染任务的请求用户为用户M,最大并行任务上限值为5,如果用户M的当前并行任务数量为0-4,则检定目标待渲染任务的请求用户的当前并行任务数量小于最大并行任务上限值),且检测目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测第一子云内是否具有与目标待渲染任务对应数量的空闲节点机。在本实施例中,目标待渲染任务所需的节点数为目标待渲染任务的子任务数量,例如目标待渲染任务存在1000帧需要渲染,则目标待渲染任务所需的节点数为1000。
S4:如果目标待渲染任务的请求用户的当前并行任务数量小于预设最大并行任务上限值,且目标待渲染任务所需的节点数超过预设最大并行结点上限值,且第一子云内具有与目标待渲染任务对应数量的空闲节点机,则为目标待渲染任务分配与预设最大并行结点上限值数量相等的节点机。
具体地,在第一云内有足够的空闲节点机时,如果目标待渲染任务的请求用户的当前并行任务数量小于预设最大并行任务上限值,但是目标待渲染任务所需的节点数超过预设最大并行结点上限值,第一云内的调度器需要根据预设最大并行结点上限值限定的节点机数量,为目标待渲染任务分配空闲节点机。例如目标待渲染任务为用户M提出的,最大并行任务上限值为5,如果用户M的当前并行任务数量为0至4,用户M提出的目标待渲染任务所需的节点数为1000,最大并行结点上限值为500,则第一子云为目标待渲染任务分配500个空闲节点机执行目标待渲染任务。
S5:基于分配的、与预设最大并行结点上限值数量相等的节点机,根据目标待渲染任务进行渲染。目标待渲染任务完成后,调度器将状态信息反馈给第一子云的业务系统,告知业务系统目标待渲染任务渲染完成。
在本发明的一个实施例中,在步骤S3之后,还包括:
如果目标待渲染任务的请求用户的最大并行任务数量小于预设最大并行任务上限值,且目标待渲染任务所需的节点数未超过预设最大并行结点上限值,且第一子云内具有与目标待渲染任务对应数量的空闲节点机,则在第一子云内根据目标待渲染任务分配对应数量的节点机;基于分配的节点机根据目标待渲染任务进行渲染。
具体地,在第一子云内有足够的空闲节点机时,如果目标待渲染任务的当前并行任务数量小于预设最大并行任务上限值,且目标待渲染任务所需的节点数也未超过预设最大并行结点上限值,则调度器为目标待渲染任务分配相应数量的空闲节点机,由这些分配的节点机完成目标待渲染任务。
在本发明的另一个实施例中,在步骤S3之后,还包括:
如果目标待渲染任务的请求用户的当前并行任务数量等于预设最大并行任务上限值,则使目标渲染任务进行等待,直至目标待渲染任务的请求用户的当前并行任务数量小于预设最大并行任务上限值为止。
具体地,如果目标待渲染任务的请求用户的当前并行任务数量超过预设最大并行任务上限值,例如目标待渲染任务为用户M提出的,最大并行任务上限值为5,如果用户M的当前并行任务数量为5,则使用户M提出的目标待渲染任务进行等待,直至用户M的当前并行任务数量小于5,再准备对目标渲染任务进行渲染。
在本发明的再一个实施例中,在步骤S3之后,还包括:
如果第一子云内不具有与目标待渲染任务对应数量的空闲节点机,则将目标待渲染任务中的超负荷子任务通过第一子云的母云确定的第二子云的节点机进行渲染。其中,超负荷子任务的数量为目标待渲染任务的子任务总数量与第一云内当前空闲节点机的数量之差,例如目标待渲染任务的子任务总数量为500,第一云内当前空闲节点机的数量为300,则超负荷子任务的数量为200。母云分别与第一子云和第二子云通信连接。
具体地,当第一子云的空闲节点机不足时,第一子云向母云提出将目标待渲染任务中的超负荷子任务转给其他子云内的节点机进行处理的请求。母云收到请求后,根据其他子云内空闲节点机的数量,以后其他子云与第一子云之间的通信线路情况确定进行处理的子云,作为第二子云。第二子云内的空闲节点机负责处理目标待渲染任务中的超负荷子任务。其中,第二子云处理目标待渲染任务中的超负荷子任务的方式与第一子云内单独处理目标待渲染任务的方式类似,区别在于第二子云的最大并行任务上限值和最大并行结点上限值,与第一子云内的最大并行任务上限值和最大并行结点上限值不同。
在第二子云对目标待渲染任务中的超负荷子任务渲染完成后,将渲染结果发送给第一子云,由第一子云根据目标待渲染任务中未超负荷子任务的渲染结果和第二子云发送的渲染结果进行合并,然后展示给目标待渲染任务对应的用户。
下面对本发明提供的农场渲染装置进行描述,下文描述的农场渲染装置与上文描述的农场渲染方法可相互对应参照。
图2是本发明提供的农场渲染装置的结构示意图。如图2所示,本发明提供的农场渲染装置,包括:获取模块210、排序模块220和控制处理模块220。
其中,获取模块210用于获取第一子云内的多个待渲染任务。排序模块220用于将多个待渲染任务按照提交时间进行排序。控制处理模块230用于根据排序结果确定目标待渲染任务。控制处理模块230还用于检测目标待渲染任务的请求用户的当前并行任务数量是否小于预设最大并行任务上限值,且检测目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测第一子云内是否具有与目标待渲染任务对应数量的空闲节点机。控制处理模块230还用于如果目标待渲染任务的请求用户的当前并行任务数量小于预设最大并行任务上限值,且目标待渲染任务所需的节点数超过预设最大并行结点上限值,且第一子云内具有与目标待渲染任务对应数量的空闲节点机,则为目标待渲染任务分配与预设最大并行结点上限值数量相等的节点机。控制处理模块230还用于基于分配的、与预设最大并行结点上限值数量相等的节点机,根据目标待渲染任务进行渲染。
在本发明的一个实施例中,控制处理模块230还用于如果目标待渲染任务的请求用户的当前并行任务数量小于预设最大并行任务上限值,且目标待渲染任务所需的节点数未超过预设最大并行结点上限值,且第一子云内具有与目标待渲染任务对应数量的空闲节点机,则在第一子云内根据目标待渲染任务分配对应数量的节点机;控制处理模块230还用于基于分配的节点机根据目标待渲染任务进行渲染。
在本发明的一个实施例中,控制处理模块230还用于如果目标待渲染任务的请求用户的当前并行任务数量等于预设最大并行任务上限值,则使目标渲染任务进行等待,直至目标待渲染任务的请求用户的最大并行任务数量小于等于预设最大并行任务上限值为止。
在本发明的一个实施例中,农场渲染装置还包括通信模块。控制处理模块230还用于如果第一子云内不具有与目标待渲染任务对应数量的空闲节点机,则通过通信模块将目标待渲染任务中的超负荷子任务提供给第一子云的母云,以便由母云确定的第二子云的节点机进行渲染。其中,母云分别与第一子云和第二子云通信连接。
在本发明的一个实施例中,通信模块还用于接收第二子云发送的超负荷子任务的渲染结果。
需要说明的是,本发明实施例的农场渲染装置的具体实施方式与本发明实施例的农场渲染方法的具体实施方式类似,具体参见农场渲染方法部分的描述,为了减少冗余,不做赘述。
另外,本发明实施例的农场渲染装置的其它构成以及作用对于本领域的技术人员而言都是已知的,为了减少冗余,不做赘述。
图3是本发明一个示例中电子设备的结构示意图。如图3所示,该电子设备可以包括:处理器310、通信接口320、存储器330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行农场渲染方法,该方法包括:获取第一子云内的多个待渲染任务,并将所述多个待渲染任务按照提交时间进行排序,其中,所述多个待渲染任务均用于进行农场渲染;根据排序结果确定目标待渲染任务;检测所述目标待渲染任务的请求用户的当前并行任务数量是否超过预设最大并行任务上限值,且检测所述目标待渲染任务所需的节点数是否小于预设最大并行结点上限值,且检测所述第一子云内是否具有与所述目标待渲染任务对应数量的空闲节点机;如果所述目标待渲染任务的请求用户的当前并行任务数量小于所述预设最大并行任务上限值,且所述目标待渲染任务所需的节点数超过所述预设最大并行结点上限值,且所述第一子云内具有与所述目标待渲染任务对应数量的空闲节点机,则为所述目标待渲染任务分配与所述预设最大并行结点上限值数量相等的节点机;基于分配的、与所述预设最大并行结点上限值数量相等的节点机,根据所述目标待渲染任务进行渲染。
在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。
另一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的农场渲染方法,该方法包括:获取第一子云内的多个待渲染任务,并将所述多个待渲染任务按照提交时间进行排序,其中,所述多个待渲染任务均用于进行农场渲染;根据排序结果确定目标待渲染任务;检测所述目标待渲染任务的请求用户的当前并行任务数量是否超过小于最大并行任务上限值,且检测所述目标待渲染任务所需的节点数是否超过预设最大并行结点上限值,且检测所述第一子云内是否具有与所述目标待渲染任务对应数量的空闲节点机;如果所述目标待渲染任务的请求用户的当前并行任务数量小于所述预设最大并行任务上限值,且所述目标待渲染任务所需的节点数超过所述预设最大并行结点上限值,且所述第一子云内具有与所述目标待渲染任务对应数量的空闲节点机,则为所述目标待渲染任务分配与所述预设最大并行结点上限值数量相等的节点机;基于分配的、与所述预设最大并行结点上限值数量相等的节点机,根据所述目标待渲染任务进行渲染。
存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
其中,非易失性存储器可以是只读存储器(Read-Only Memory,简称ROM)、可编程只读存储器(Programmable ROM,简称PROM)、可擦除可编程只读存储器(Erasable PROM,简称EPROM)、电可擦除可编程只读存储器(Electrically EPROM,简称EEPROM)或闪存。
易失性存储器可以是随机存取存储器(Random Access Memory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,简称SRAM)、动态随机存取存储器(Dynamic RAM,简称DRAM)、同步动态随机存取存储器(Synchronous DRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,简称DDRSDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,简称ESDRAM)、同步连接动态随机存取存储器(Synch Link DRAM,简称SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,简称DRRAM)。
本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
- 农场渲染方法、装置、电子设备和存储介质
- 游戏中的渲染方法、渲染装置、电子设备及可读存储介质