计算任务处理方法、装置、服务器及可读存储介质与流程
未命名
09-22
阅读:51
评论:0
1.本发明涉及数据处理技术领域,特别是涉及一种计算任务处理方法、装置、服务器及计算机可读存储介质。
背景技术:
2.当开发一个应用系统时,希望它是响应迅速,成本低廉的。但实际上,应用系统却面临各种各样的挑战,例如不可预测的流量高峰,依赖的下游服务变得缓慢,少量请求却消耗大量cpu、内存、数据库资源等。这些因素会导致整个应用系统被拖慢,甚至不能响应请求而崩溃。为了让应用服务响应迅速,就需要预留更多的计算资源,但这些计算资源大部分时候都是闲置的。
3.发明人在研究中发现现有的任务处理方式存在以下问题:当用户创建了大量长耗时的计算任务时,会直接将任务处理的请求推送到某一个服务器进行处理,如图1所示,使得这个服务器的大量计算资源被消耗,可能导致该服务器崩溃宕机,而其他服务器因未接收到计算任务,使得计算资源处于闲置状态,导致整个应用系统存在计算资源未得到充分的利用,计算效率低等问题。
技术实现要素:
4.本技术的目的在于提供一种计算任务处理方法、装置、服务器及计算机可读存储介质,提高了计算资源的利用率以及计算效率,增强了应用系统的稳定性,同时提升了用户使用体验。
5.为达到上述目的:
6.第一方面,本技术实施例提供了一种计算任务处理方法,应用于第一服务器,所述方法包括:
7.获取待计算的至少一计算任务数据;
8.将所述至少一计算任务数据存储至目标数据库中;
9.通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理。
10.在一实施方式中,所述消息组件包括kafka;所述通过消息组件向所有第二服务器发送有新的计算任务的通知消息,包括:
11.调用kafka向指定的topic产生一条有新的计算任务的通知消息,以向已订阅所述指定的topic的所有第二服务器发送所述通知消息。
12.在一实施方式中,还包括:
13.在将目标计算任务数据分配给所述第二服务器后,从所述目标数据库中删除所述目标计算任务数据,所述目标计算任务数据为任一计算任务数据。
14.第二方面,本技术实施例提供了一种计算任务处理方法,应用于第二服务器,所述方法包括:
15.获取第一服务器通过消息组件发送的有新的计算任务的通知消息;
16.响应于所述通知消息,创建一个异步线程;
17.通过所述异步线程从目标数据库中读取计算任务数据,并对读取到的计算任务数据进行处理,以及存储获得的计算结果。
18.在一实施方式中,所述创建一个异步线程之前,还包括:
19.检测当前是否正在处理计算任务数据;
20.确定当前未正在处理计算任务数据时,执行创建一个异步线程的步骤。
21.在一实施方式中,所述创建一个异步线程之后,还包括:
22.通过所述异步线程向所述消息组件发送已接收到所述通知消息的响应消息。
23.第三方面,本技术实施例提供了一种计算任务处理装置,包括:
24.第一获取模块,用于获取待计算的至少一计算任务数据;
25.存储模块,用于将所述至少一计算任务数据存储至目标数据库中;
26.第一处理模块,用于通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二计算服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理。
27.在一实施方式中,所述消息组件包括kafka;所述第一处理模块,具体用于:
28.调用kafka向指定的topic产生一条有新的计算任务的通知消息,以向已订阅所述指定的topic的所有第二服务器发送所述通知消息。
29.在一实施方式中,所述第一处理模块,还用于在将目标计算任务数据分配给所述第二服务器后,从所述目标数据库中删除所述目标计算任务数据,所述目标计算任务数据为任一计算任务数据。
30.第四方面,本技术实施例提供一种计算任务处理装置,包括:
31.第二获取模块,用于获取第一服务器通过消息组件发送的有新的计算任务的通知消息;
32.创建模块,用于响应于所述通知消息,创建一个异步线程;
33.第二处理模块,用于通过所述异步线程从目标数据库中读取计算任务数据,并对所述计算任务数据进行处理,以及存储获得的计算结果。
34.在一实施方式中,所述第二处理模块,还用于检测当前是否正在处理计算任务数据;确定当前未正在处理计算任务数据时,触发所述创建模块执行创建一个异步线程的步骤。
35.在一实施方式中,所述第二获取模块,还用于通过所述异步线程向所述消息组件发送已接收到所述通知消息的响应消息。
36.第五方面,本技术实施例提供一种服务器,包括:处理器和存储有计算机程序的存储器,在所述处理器运行所述计算机程序时,实现上述计算任务处理方法的步骤。
37.第六方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述计算任务处理方法的步骤。
38.本技术实施例提供的计算任务处理方法、装置、服务器及计算机可读存储介质,所述方法包括:获取待计算的至少一计算任务数据;将所述至少一计算任务数据存储至目标
数据库中;通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理。如此,在获取并存储待计算的至少一计算任务数据后,通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使所有第二服务器都能够获知有待计算的计算任务数据,并根据所述通知消息主动从目标数据库中读取计算任务数据进行处理,实现合理地利用所有服务器的计算资源,提高了计算资源的利用率以及计算效率,增强了应用系统的稳定性,同时提升了用户使用体验。
附图说明
39.图1为现有计算任务处理方法的过程示意图;
40.图2为本发明实施例提供的计算任务处理方法的流程示意图一;
41.图3为本发明实施例提供的计算任务处理方法的流程示意图二;
42.图4为本发明实施例提供的计算任务处理方法的具体过程示意图;
43.图5为本发明实施例中计算任务的构建与存储的示意图;
44.图6为本发明实施例中通知所有可提供计算服务的计算服务器节点的示意图;
45.图7为本发明实施例中执行计算任务的示意图;
46.图8为本发明实施例提供的计算任务处理装置的结构示意图一;
47.图9为本发明实施例提供的计算任务处理装置的结构示意图二;
48.图10为本发明实施例提供的服务器的结构示意图。
具体实施方式
49.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
50.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素,此外,本技术不同实施例中具有同样命名的部件、特征、要素可能具有相同含义,也可能具有不同含义,其具体含义需以其在该具体实施例中的解释或者进一步结合该具体实施例中上下文进行确定。
51.应当理解,尽管在本文可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语"如果"可以被解释成为"在
……
时"或"当
……
时"或"响应于确定"。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操
作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“a、b或c”或者“a、b和/或c”意味着“以下任一个:a;b;c;a和b;a和c;b和c;a、b和c”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
52.应该理解的是,虽然本技术实施例中的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
53.需要说明的是,在本文中,采用了诸如s1、s2等步骤代号,其目的是为了更清楚简要地表述相应内容,不构成顺序上的实质性限制,本领域技术人员在具体实施时,可能会先执行s2后执行s1等,但这些均应在本技术的保护范围之内。
54.应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
55.在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或者“单元”的后缀仅为了有利于本技术的说明,其本身没有特定的意义。因此,“模块”、“部件”或者“单元”可以混合地使用。
56.下面先对本技术可能涉及的名词进行解释说明,具体如下:
57.kafka是由apache软件基金会开发的一个开源流处理平台,是一种高吞吐量的分布式发布订阅消息系统,用于处理消费者在网站中的所有动作流数据。
58.redis是一个开源的使用ansi c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的api。
59.参阅图2,为本技术实施例提供的一种计算任务处理方法,该计算任务处理方法可以由本技术实施例提供的一种计算任务处理装置来执行,该计算任务处理装置可以采用软件和/或硬件的方式来实现,本实施例中以该计算任务处理方法的执行主体为第一服务器为例,本实施例提供的计算任务处理方法包括:
60.步骤s1、获取待计算的至少一计算任务数据。
61.可选地,第一服务器可接收用户通过指定接口等上传的待计算的至少一计算任务数据。可选地,由于计算任务数据通常是一批又一批地上传的,因此,第一服务器在同一时刻获得的计算任务数据可能有多个。这里,对于每个计算任务数据,可包括计算任务名称、计算任务内容等数据。需要说明的是,第一服务器可以为计算服务器(也可称为计算节点),也可以为其它类型的服务器等。
62.步骤s2、将所述至少一计算任务数据存储至目标数据库中。
63.可选地,第一服务器在获得至少一计算任务数据后,将所述至少一计算任务数据存储至目标数据库中。其中,目标数据库可以根据实际需求进行设置,本实施例中以目标数据库为redis为例,具体可以为redis集群等,以能够存储较多的数据且具有较高的数据读取效率。
64.步骤s3、通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进
行处理。
65.可选地,第一服务器在存储待计算的至少一计算任务数据完成后,由于第一服务器并不知道哪几个第二服务器可处理计算任务数据,也不知道至少一计算任务数据应该分配给哪几个第二服务器进行处理,因此,第一服务器可直接通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理,实现合理利用各第二服务器的计算资源。
66.可选地,所述消息组件包括kafka;所述通过消息组件向所有第二服务器发送有新的计算任务的通知消息,包括:
67.调用kafka向指定的topic产生一条有新的计算任务的通知消息,以向已订阅所述指定的topic的所有第二服务器发送所述通知消息。
68.可选地,在消息组件包括kafka且所有第二服务器已订阅kafka的topic时,第一服务器可直接调用kafka向指定的topic产生一条有新的计算任务的通知消息,以向已订阅所述指定的topic的所有第二服务器同时发送所述通知消息,从而告知所有第二服务器有待计算的计算任务数据。如此,通过kafka可实现快速且准确向所有第二服务器发送通知消息,使得所有第二服务器都能及时获得通知消息,进一步提高了计算资源的利用率。
69.可选地,所述方法还包括:
70.接收所述第二服务器发送的任务数据读取请求;
71.在所述目标数据库中的未处理任务队列包括有计算任务数据时,将所述未处理任务队列中的目标计算任务数据分配给所述第二服务器。
72.可选地,第一服务器接收任一第二服务器发送的任务数据读取请求,并在所述目标数据库中的未处理任务队列包括有计算任务数据时,将所述未处理任务队列中的目标计算任务数据分配给所述第二服务器,以由所述第二服务器处理目标计算任务数据。其中,目标计算任务数据为未处理任务队列中的任一计算任务数据。可选地,对于未处理任务队列中的计算任务数据,将按照先到先得的顺序分配给发送任务数据读取请求的第二服务器。
73.可选地,所述方法还包括:
74.在将目标计算任务数据分配给所述第二服务器后,从所述目标数据库中删除所述目标计算任务数据,所述目标计算任务数据为任一计算任务数据。
75.可选地,所述目标数据库中存储的至少一计算任务数据将按照先到先得的顺序进行分配,即将计算任务数据优先分配给从目标数据库中读取任务数据对应的时间早的第二服务器,直至对所有计算任务数据都分配完成。可选地,可以将所述目标数据库中存储的计算任务数据随机或按照顺序分配给第二服务器。这里,为了避免重复处理同一计算任务数据,在将任一计算任务数据即目标计算任务数据分配给所述第二服务器后,从所述目标数据库中删除所述目标计算任务数据。如此,通过及时删除目标数据库中存储的已被分配的计算任务数据,有效避免重复处理同一计算任务数据,提高了计算效率。
76.综上,上述实施例提供的计算任务处理方法中,在获取并存储待计算的至少一计算任务数据后,通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使所有第二服务器都能够获知有待计算的计算任务数据,并根据所述通知消息主动从目标数据库中读取计算任务数据进行处理,实现合理地利用所有服务器的计算资源,提高了计算资源的利用率以及计算效率,增强了应用系统的稳定性,同时提升了用户使用体验。
77.参阅图3,为本技术实施例提供的一种计算任务处理方法,该计算任务处理方法可以由本技术实施例提供的一种计算任务处理装置来执行,该计算任务处理装置可以采用软件和/或硬件的方式来实现,本实施例中以该计算任务处理方法的执行主体为第二服务器为例,本实施例提供的计算任务处理方法包括:
78.步骤s10、获取第一服务器通过消息组件发送的有新的计算任务的通知消息。
79.可选地,第二服务器接收第一服务器在获得待计算的至少一计算任务数据后,通过消息组件发送的有新的计算任务的通知消息。其中,在消息组件包括kafka且第二服务器已订阅kafka的topic时,第二服务器可通过kafka消费topic消息,以得到有新的计算任务需要处理的通知信息。需要说明的是,第二服务器具体可以为计算服务器(也可称为计算节点)等。
80.步骤s11、响应于所述通知消息,创建一个异步线程。
81.可选地,第二服务器响应于所述通知消息,创建一个异步线程,以基于该异步线程读取计算任务数据并对计算任务数据进行处理。
82.可选地,所述创建一个异步线程之前,还包括:
83.检测当前是否正在处理计算任务数据;
84.确定当前未正在处理计算任务数据时,执行创建一个异步线程的步骤。
85.具体地,第二服务器在获取所述通知消息后,先检测自身当前是否正在处理计算任务数据,即检测自身当前是否正在执行计算处理操作,若当前未正在处理计算任务数据,则可执行创建一个异步线程的步骤;若当前正在处理计算任务数据,则可在对当前计算任务数据处理完成后,再执行创建一个异步线程的步骤。如此,确保计算资源处于闲置状态的第二服务器能够积极去处理计算任务数据,进一步提高了计算资源的利用率以及计算效率。
86.步骤s12、通过所述异步线程从目标数据库中读取计算任务数据,并读取到的计算任务数据进行处理,以及存储获得的计算结果。
87.具体地,第二服务器通过创建的所述异步线程,可直接从目标数据库中读取计算任务数据,并对读取到的计算任务数据进行处理,然后将获得的计算结果存储至指定的数据库中。
88.可选地,第二服务器在处理完当前读取到的计算任务数据后,可继续通过所述异步线程从目标数据库中读取计算任务数据,并在再次读取到计算任务数据后,对再次读取到的计算任务数据进行处理,以此循环操作,直至从目标数据库中未读取计算任务数据,即目标数据库中存储的计算任务数据被处理完。其中,指定的数据库可以为mysql等。
89.可选地,所述创建一个异步线程之后,还包括:
90.通过所述异步线程向所述消息组件发送已接收到所述通知消息的响应消息。
91.可选地,第二服务器在创建所述异步线程之后,可通过所述异步线程向所述消息组件发送已接收到所述通知消息的响应消息,以告知所述第二服务器将对计算任务数据进行处理,避免所述消息组件再次发送通知消息,以及使所述消息组件及时了解哪些第二服务器可以对计算任务数据进行处理等。
92.综上,上述实施例提供的计算任务处理方法中,在获取到第一服务器通过消息组件发送的有新的计算任务的通知消息后,创建异步线程,并通过所述异步线程从目标数据
库中读取并处理计算任务数据,提高了计算资源的利用率以及计算效率,同时提升了用户使用体验。
93.基于前述实施例相同的发明构思,下面通过一具体应用场景对上述实施例提供的计算任务处理方法进行说明,本实施例中以第二服务器总共有5个为例。
94.假设第一服务器接收到用户通过restful api接口发送的一批计算任务数据,该批计算任务数据包括10个计算任务数据,则第一服务器可将该批计算任务数据存储到redis中,然后再调用kafka向指定的topic产生一条有新的计算任务的通知消息。由于所有5个第二服务器都已订阅kafka的消息,因此,5个第二服务器通过kafka消费topic消息,可以得到有新的计算任务需要处理的通知消息。对于当前未正在处理计算任务数据的第二服务器,该第二服务器可创建一个异步线程,以基于该异步线程主动读取redis中存储的计算任务数据,并对读取的计算任务数据进行处理,最后将计算结果存储至mysql数据库中。这里,redis中存储的任一计算任务数据被第二服务器读取红藕,将在redis中删除该计算任务数据。同时,每个第二服务器在处理完一个计算任务数据后,又可以继续到redis中读取计算任务数据,直至redis中没有可读取的计算任务数据。
95.基于前述实施例相同的发明构思,下面通过一具体示例对前述实施例进行详细说明,本示例中以所述目标数据库为redis集群且redis集群包括多个redis节点、第二服务器为计算服务器为例进行说明。
96.参阅图4,为本实施例提供的一种计算任务处理方法,主要包括以下过程:计算任务的构建与存储、通知所有可提供计算服务的计算服务器节点(以下简称为服务器节点或服务器)、执行计算任务、存储计算结果。下面对于上述每个过程进行具体描述,具体如下:
97.(一)计算任务的构建与存储。
98.如图5所示,计算任务的构建与存储主要包括两步:第一步是用户通过restful api接口,传递计算任务数据到服务器并存储到redis中;第二步是在redis中存储计算任务数据完成后,调用kafka向指定的topic生产一条有新的计算任务消息。
99.(二)通知所有可提供计算服务的计算服务器节点。
100.为了能通知所有计算服务器,引入一种高吞吐量的分布式发布订阅消息系统kafka。所有的计算服务器节点都需要订阅kafka的消息,当有新的计算任务数据存储到redis中时,就调用kafka发布消息,所有的计算服务器就可以通过kafka消费topic消息,得到有新的计算任务需要处理的信息,如图6所示。
101.(三)执行计算任务。
102.具体地,如图7所示,执行计算任务主要包括两步:第一步是消费kafka得到有新的计算任务需要处理的信息;第二步拉取redis中存储计算任务的基本信息,根据计算任务的基本信息创建一个异步线程来执行相关的业务逻辑,并得到计算结果。
103.(四)存储计算结果。
104.在通过获取redis中的计算任务数据,按照具体的业务逻辑计算得出计算结果后,将计算结果存储到数据库中(如mysql),以便下游业务查询。
105.综上,上述实施例提供的计算任务处理方法中,通过将合理地利用所有计算服务器节点的计算资源,提高了计算资源利用率,增强了应用系统的计算处理能力,提高计算任务处理效率,增强了应用系统的稳定性。同时,也能够让处理任务请求能够被迅速处理并反
馈给用户,也节省了成本。
106.基于前述实施例相同的发明构思,参阅图8,本技术实施例提供了一种计算任务处理装置,可应用于第一服务器,包括:
107.第一获取模块,用于获取待计算的至少一计算任务数据;
108.存储模块,用于将所述至少一计算任务数据存储至目标数据库中;
109.第一处理模块,用于通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二计算服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理。
110.综上,上述实施例提供的计算任务处理装置中,在获取并存储待计算的至少一计算任务数据后,通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使所有第二服务器都能够获知有待计算的计算任务数据,并根据所述通知消息主动从目标数据库中读取计算任务数据进行处理,实现合理地利用所有服务器的计算资源,提高了计算资源的利用率以及计算效率,增强了应用系统的稳定性,同时提升了用户使用体验。
111.在一实施方式中,所述消息组件包括kafka;所述第一处理模块,具体用于:
112.调用kafka向指定的topic产生一条有新的计算任务的通知消息,以向已订阅所述指定的topic的所有第二服务器发送所述通知消息。
113.在一实施方式中,所述第一处理模块,还用于在将目标计算任务数据分配给所述第二服务器后,从所述目标数据库中删除所述目标计算任务数据,所述目标计算任务数据为任一计算任务数据。
114.基于前述实施例相同的发明构思,参阅图9,本技术实施例提供了一种计算任务处理装置,可应用于第二服务器,包括:
115.第二获取模块,用于获取第一服务器通过消息组件发送的有新的计算任务的通知消息;
116.创建模块,用于响应于所述通知消息,创建一个异步线程;
117.第二处理模块,用于通过所述异步线程从目标数据库中读取计算任务数据,并对所述计算任务数据进行处理,以及存储获得的计算结果。
118.综上,上述实施例提供的计算任务处理装置中,在获取到第一服务器通过消息组件发送的有新的计算任务的通知消息后,创建异步线程,并通过所述异步线程从目标数据库中读取并处理计算任务数据,提高了计算资源的利用率以及计算效率,同时提升了用户使用体验。
119.在一实施方式中,所述第二处理模块,还用于检测当前是否正在处理计算任务数据;确定当前未正在处理计算任务数据时,触发所述创建模块执行创建一个异步线程的步骤。
120.在一实施方式中,所述第二获取模块,还用于通过所述异步线程向所述消息组件发送已接收到所述通知消息的响应消息。
121.关于计算任务处理装置的具体限定可以参见上文中对于计算任务处理方法的限定,在此不再赘述。上述计算任务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于服务器中的处理器中,也可以以软件形式存储于服务器中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
122.基于前述实施例相同的发明构思,本发明实施例提供了一种服务器,如图10所示,该服务器包括:处理器310和存储有计算机程序的存储器311;其中,图10中示意的处理器310并非用于指代处理器310的个数为一个,而是仅用于指代处理器310相对其他器件的位置关系,在实际应用中,处理器310的个数可以为一个或多个;同样,图10中示意的存储器311也是同样的含义,即仅用于指代存储器311相对其他器件的位置关系,在实际应用中,存储器311的个数可以为一个或多个。在所述处理器310运行所述计算机程序时,实现上述计算任务处理方法。
123.该服务器还可包括:至少一个网络接口312。该服务器中的各个组件通过总线系统313耦合在一起。可理解,总线系统313用于实现这些组件之间的连接通信。总线系统313除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图10中将各种总线都标为总线系统313。
124.其中,存储器311可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本发明实施例描述的存储器311旨在包括但不限于这些和任意其它适合类型的存储器。
125.本发明实施例中的存储器311用于存储各种类型的数据以支持该服务器的操作。这些数据的示例包括:用于在该服务器上操作的任何计算机程序,如操作系统和应用程序;联系人数据;电话簿数据;消息;图片;视频等。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含各种应用程序,例如媒体播放器(media player)、浏览器(browser)等,用于实现各种应用业务。这里,实现本发明实施例方法的程序可以包含在应用程序中。
126.基于前述实施例相同的发明构思,本实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,计算机可读存储介质可以是磁性随机存取存储器(fram,ferromagnetic random access memory)、只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读
存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备,如移动电话、计算机、平板设备、个人数字助理等。所述计算机可读存储介质中存储的计算机程序被处理器运行时,实现上述计算任务处理方法。所述计算机程序被处理器执行时实现的具体步骤流程请参考图2和图3所示实施例的描述,在此不再赘述。
127.以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
128.在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,除了包含所列的那些要素,而且还可包含没有明确列出的其他要素。
129.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
技术特征:
1.一种计算任务处理方法,应用于第一服务器,其特征在于,包括:获取待计算的至少一计算任务数据;将所述至少一计算任务数据存储至目标数据库中;通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理。2.根据权利要求1所述的方法,其特征在于,所述消息组件包括kafka;所述通过消息组件向所有第二服务器发送有新的计算任务的通知消息,包括:调用kafka向指定的topic产生一条有新的计算任务的通知消息,以向已订阅所述指定的topic的所有第二服务器发送所述通知消息。3.根据权利要求1或2所述的方法,其特征在于,还包括:在将目标计算任务数据分配给所述第二服务器后,从所述目标数据库中删除所述目标计算任务数据,所述目标计算任务数据为任一计算任务数据。4.一种计算任务处理方法,应用于第二服务器,其特征在于,包括:获取第一服务器通过消息组件发送的有新的计算任务的通知消息;响应于所述通知消息,创建一个异步线程;通过所述异步线程从目标数据库中读取计算任务数据,并对读取到的计算任务数据进行处理,以及存储获得的计算结果。5.根据权利要求4所述的方法,其特征在于,所述创建一个异步线程之前,还包括:检测当前是否正在处理计算任务数据;确定当前未正在处理计算任务数据时,执行创建一个异步线程的步骤。6.根据权利要求5所述的方法,其特征在于,所述创建一个异步线程之后,还包括:通过所述异步线程向所述消息组件发送已接收到所述通知消息的响应消息。7.一种计算任务处理装置,其特征在于,所述装置包括:第一获取模块,用于获取待计算的至少一计算任务数据;存储模块,用于将所述至少一计算任务数据存储至目标数据库中;第一处理模块,用于通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二计算服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理。8.一种计算任务处理装置,其特征在于,所述装置包括:第二获取模块,用于获取第一服务器通过消息组件发送的有新的计算任务的通知消息;创建模块,用于响应于所述通知消息,创建一个异步线程;第二处理模块,用于通过所述异步线程从目标数据库中读取计算任务数据,并对所述计算任务数据进行处理,以及存储获得的计算结果。9.一种服务器,其特征在于,包括:处理器和存储有计算机程序的存储器,在所述处理器运行所述计算机程序时,实现权利要求1至6中任一项所述的计算任务处理方法的步骤。10.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至6中任一项所述的计算任务处理方法的步骤。
技术总结
本申请公开了一种计算任务处理方法、装置、服务器及可读存储介质,包括:获取待计算的至少一计算任务数据;将所述至少一计算任务数据存储至目标数据库中;通过消息组件向所有第二服务器发送有新的计算任务的通知消息,以使各所述第二服务器根据所述通知消息从所述目标数据库中主动读取所述计算任务数据进行处理。如此,能够实现合理地利用所有服务器的计算资源,提高了计算资源的利用率以及计算效率,增强了应用系统的稳定性,同时提升了用户使用体验。使用体验。使用体验。
技术研发人员:余永华 姜召 赵丹 杨军辕 邹思艳
受保护的技术使用者:中科云谷科技有限公司
技术研发日:2023.06.21
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/