亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

任務(wù)處理方法、裝置及存儲(chǔ)介質(zhì)與流程

文檔序號(hào):12863595閱讀:206來源:國知局
任務(wù)處理方法、裝置及存儲(chǔ)介質(zhì)與流程

本申請(qǐng)涉及通信技術(shù)領(lǐng)域,尤其涉及任務(wù)處理方法、裝置及存儲(chǔ)介質(zhì)。



背景技術(shù):

隨著計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,用戶可以很容易地接入互聯(lián)網(wǎng),并向互聯(lián)網(wǎng)上的服務(wù)器提交任務(wù),服務(wù)器則可以通過執(zhí)行用戶提交的任務(wù),為用戶提供相應(yīng)的服務(wù)。對(duì)于一個(gè)互聯(lián)網(wǎng)產(chǎn)品而言,往往會(huì)被大量的用戶在同一時(shí)間段使用。用戶在使用互聯(lián)網(wǎng)產(chǎn)品時(shí)所發(fā)出的任務(wù)請(qǐng)求指令,服務(wù)器通常會(huì)將任務(wù)請(qǐng)求指令對(duì)應(yīng)的任務(wù)提交到一個(gè)抽象的隊(duì)列,將任務(wù)堆積起來,然后通過fifo(firstinfirstout,先進(jìn)先出)和公平調(diào)度算法等調(diào)度策略,從隊(duì)列中選取某個(gè)具體任務(wù)并觸發(fā)執(zhí)行。

在執(zhí)行任務(wù)時(shí),針對(duì)任務(wù)隊(duì)列中簡單的任務(wù),可以采用一個(gè)任務(wù)執(zhí)行模塊進(jìn)行處理,針對(duì)比較復(fù)雜的任務(wù),需要依次調(diào)用不同的任務(wù)執(zhí)行模塊進(jìn)行處理,直到最后一個(gè)任務(wù)執(zhí)行模塊處理完成,將處理后的結(jié)果反饋至任務(wù)發(fā)送方。

然而,針對(duì)比較復(fù)雜的任務(wù),依次調(diào)用不同的任務(wù)執(zhí)行模塊對(duì)任務(wù)進(jìn)行處理,需要消耗的時(shí)間比較長,從而會(huì)導(dǎo)致任務(wù)隊(duì)列中出現(xiàn)任務(wù)堆積的現(xiàn)象。



技術(shù)實(shí)現(xiàn)要素:

為克服相關(guān)技術(shù)中存在的問題,本公開提供了任務(wù)處理方法、裝置及存儲(chǔ)介質(zhì)。

根據(jù)本公開實(shí)施例的第一方面,提供一種任務(wù)處理裝置,所述裝置包括父任務(wù)執(zhí)行模塊和至少兩個(gè)子任務(wù)執(zhí)行模塊,所述裝置中還設(shè)有父任務(wù)隊(duì)列和子任務(wù)隊(duì)列,父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中的任務(wù),每個(gè)子任務(wù)執(zhí)行模塊訂閱相應(yīng)子任務(wù)隊(duì)列中的任務(wù);

父任務(wù)執(zhí)行模塊,用于:按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù),并將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中;

子任務(wù)執(zhí)行模塊,用于:對(duì)與所述子任務(wù)執(zhí)行模塊對(duì)應(yīng)的子任務(wù)隊(duì)列中的子任務(wù)進(jìn)行處理。

在一個(gè)可選的實(shí)現(xiàn)方式中,至少包括兩個(gè)父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中的任務(wù),不同父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中不同類型的任務(wù)。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述裝置還包括:

入隊(duì)控制模塊,用于:接收到待處理任務(wù)后,根據(jù)所述待處理任務(wù)的類型,將所述待處理任務(wù)添加至與其類型對(duì)應(yīng)的父任務(wù)隊(duì)列中;

出隊(duì)控制模塊,用于:根據(jù)預(yù)設(shè)的調(diào)度策略以及父任務(wù)隊(duì)列對(duì)應(yīng)的類型,篩選出一個(gè)父任務(wù)隊(duì)列,以便父任務(wù)執(zhí)行模塊執(zhí)行篩選出的父任務(wù)隊(duì)列中的任務(wù)。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述子任務(wù)執(zhí)行模塊,還用于:

若所述子任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)所述子任務(wù)進(jìn)行重試處理,若重試失敗,則將所述處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列。

根據(jù)本公開實(shí)施例的第二方面,提供一種任務(wù)處理方法,所述方法包括:

父任務(wù)執(zhí)行模塊:按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù),并將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中;

子任務(wù)執(zhí)行模塊:對(duì)與所述子任務(wù)執(zhí)行模塊對(duì)應(yīng)的子任務(wù)隊(duì)列中的子任務(wù)進(jìn)行處理。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述預(yù)設(shè)拆分規(guī)則根據(jù)所述待處理任務(wù)的復(fù)雜度確定。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述方法還包括:

子任務(wù)執(zhí)行模塊將所述子任務(wù)的處理結(jié)果以及任務(wù)標(biāo)識(shí)反饋至父任務(wù)執(zhí)行模塊,并移除所述子任務(wù)隊(duì)列中的所述子任務(wù);

父任務(wù)執(zhí)行模塊將各子任務(wù)執(zhí)行模塊發(fā)送的攜帶有同一任務(wù)標(biāo)識(shí)的處理結(jié)果反饋至任務(wù)發(fā)送方,并移除父任務(wù)隊(duì)列中任務(wù)標(biāo)識(shí)對(duì)應(yīng)的待處理任務(wù)。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述方法還包括:

入隊(duì)控制模塊:接收到待處理任務(wù)后,根據(jù)所述待處理任務(wù)的類型,將所述待處理任務(wù)添加至與其類型對(duì)應(yīng)的父任務(wù)隊(duì)列中;

出隊(duì)控制模塊:根據(jù)預(yù)設(shè)的調(diào)度策略以及父任務(wù)隊(duì)列對(duì)應(yīng)的類型,篩選出一個(gè)父任務(wù)隊(duì)列,以便父任務(wù)執(zhí)行模塊執(zhí)行篩選出的父任務(wù)隊(duì)列中的任務(wù)。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述方法還包括:

在對(duì)子任務(wù)隊(duì)列中的子任務(wù)進(jìn)行處理時(shí),若所述子任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)所述子任務(wù)進(jìn)行重試處理,若重試失敗,則將所述處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列。

根據(jù)本公開實(shí)施例的第三方面,提供一種任務(wù)處理方法,所述方法包括:

按照預(yù)設(shè)拆分規(guī)則,按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù);

將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中,以使與各所述子任務(wù)隊(duì)列關(guān)聯(lián)的子任務(wù)執(zhí)行模塊分別執(zhí)行所述子任務(wù)隊(duì)列中的子任務(wù)。

根據(jù)本公開實(shí)施例的第四方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述任一項(xiàng)所述方法的步驟。

本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:

本公開實(shí)施例中,由于父任務(wù)執(zhí)行模塊可以將待處理任務(wù)拆分為多個(gè)子任務(wù),并分別由不同子任務(wù)執(zhí)行模塊處理子任務(wù),又由于處理子任務(wù)隊(duì)列中子任務(wù)的子任務(wù)執(zhí)行模塊相互獨(dú)立,則可以利用不同的子任務(wù)執(zhí)行模塊同時(shí)對(duì)拆分獲得的不同子任務(wù)進(jìn)行處理,實(shí)現(xiàn)子任務(wù)的并發(fā)處理,從而不僅可以實(shí)現(xiàn)流量削峰,還可以提高處理效率,避免由于處理時(shí)間過長導(dǎo)致任務(wù)堆積的現(xiàn)象。

本公開實(shí)施例中,可以至少包括兩個(gè)父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中的任務(wù),不同父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中不同類型的任務(wù),通過不同父任務(wù)執(zhí)行模塊處理父任務(wù)隊(duì)列中不同類型的任務(wù),可以增加父任務(wù)隊(duì)列中任務(wù)的類型。

本公開實(shí)施例中,通過入隊(duì)控制模塊接收到待處理任務(wù)后,根據(jù)待處理任務(wù)的類型將待處理任務(wù)添加至與其類型對(duì)應(yīng)的父任務(wù)隊(duì)列中,并通過出隊(duì)控制模塊根據(jù)預(yù)設(shè)的調(diào)度策略以及父任務(wù)隊(duì)列對(duì)應(yīng)的類型,篩選出一個(gè)父任務(wù)隊(duì)列,以便父任務(wù)執(zhí)行模塊執(zhí)行篩選出的父任務(wù)隊(duì)列中的任務(wù),從而實(shí)現(xiàn)利用不同父任務(wù)隊(duì)列存儲(chǔ)不同類型的任務(wù),并按照任務(wù)類型執(zhí)行相應(yīng)任務(wù)隊(duì)列中的任務(wù)。

本公開實(shí)施例中,若所述子任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)子任務(wù)進(jìn)行重試處理,若重試失敗,則將處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列,從而避免網(wǎng)絡(luò)抖動(dòng)等造成任務(wù)丟失的問題。

應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。

附圖說明

此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實(shí)施例,并與說明書一起用于解釋本公開的原理。

圖1是本公開根據(jù)一示例性實(shí)施例示出的一種任務(wù)處理裝置的框圖。

圖2是本公開根據(jù)一示例性實(shí)施例示出的另一種任務(wù)處理裝置的框圖。

圖3是本公開根據(jù)一示例性實(shí)施例示出的一種任務(wù)處理方法的流程圖。

圖4是本公開根據(jù)一示例性實(shí)施例示出的另一種任務(wù)處理方法的流程圖。

圖5是本公開根據(jù)一示例性實(shí)施例示出的一種用于任務(wù)處理的裝置的框圖。

圖6是本公開根據(jù)一示例性實(shí)施例示出的另一種用于任務(wù)處理的裝置的框圖。

具體實(shí)施方式

這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。

在本公開使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本公開。在本公開和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。

應(yīng)當(dāng)理解,盡管在本公開可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本公開范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。

在計(jì)算機(jī)和互聯(lián)網(wǎng)等技術(shù)領(lǐng)域中,通常都會(huì)涉及對(duì)大量的任務(wù)進(jìn)行處理的需求。以購物為例,購物平臺(tái)方配置有服務(wù)器,在其服務(wù)器中配置有任務(wù)處理裝置。實(shí)際應(yīng)用中,存在大量的客戶端同時(shí)提交任務(wù)的情況,特別是搶購等促銷活動(dòng)期間,客戶端對(duì)服務(wù)端數(shù)據(jù)庫的訪問請(qǐng)求會(huì)突然增大,特別是對(duì)那些性價(jià)比高的暢銷商品而言,操作數(shù)據(jù)庫中相關(guān)記錄的請(qǐng)求會(huì)瞬間大增,這將導(dǎo)致在數(shù)據(jù)庫服務(wù)端產(chǎn)生行鎖競爭和等待。當(dāng)競爭非常激烈,數(shù)據(jù)庫性能會(huì)急劇下降,從而影響其他記錄的正常讀寫。

目前,可以使用任務(wù)隊(duì)列的方式對(duì)大量的任務(wù)進(jìn)行限流,進(jìn)而保護(hù)核心服務(wù)的正常運(yùn)行。一般采用先進(jìn)先出的調(diào)度方式處理任務(wù)隊(duì)列中的任務(wù)。在執(zhí)行任務(wù)時(shí),針對(duì)任務(wù)隊(duì)列中簡單的任務(wù),可以采用一個(gè)任務(wù)執(zhí)行模塊進(jìn)行處理,針對(duì)比較復(fù)雜的任務(wù),需要依次調(diào)用不同的任務(wù)執(zhí)行模塊進(jìn)行處理,直到最后一個(gè)任務(wù)執(zhí)行模塊處理完成,將處理后的結(jié)果反饋至任務(wù)發(fā)送方。然而,針對(duì)比較復(fù)雜的任務(wù),依次調(diào)用不同的任務(wù)執(zhí)行模塊對(duì)任務(wù)進(jìn)行處理,需要消耗的時(shí)間比較長,從而會(huì)導(dǎo)致任務(wù)隊(duì)列中出現(xiàn)任務(wù)堆積現(xiàn)象。

針對(duì)相關(guān)技術(shù)中存在任務(wù)處理不合理的情況,本公開實(shí)施例提供了一種任務(wù)處理方案,通過構(gòu)建分布式處理架構(gòu),能夠?qū)⒈容^復(fù)雜的任務(wù)拆分為多個(gè)子任務(wù),并利用并行處理的方式同時(shí)處理各個(gè)子任務(wù),從而提高復(fù)雜任務(wù)的處理效率,進(jìn)而避免任務(wù)隊(duì)列中出現(xiàn)任務(wù)堆積的問題。接下來對(duì)本公開實(shí)施例進(jìn)行詳細(xì)說明。

本公開方案可以應(yīng)用在流量削峰的場景中,本公開任務(wù)處理裝置的實(shí)施例可以應(yīng)用在各場景的服務(wù)器集群中。為了更好理解本公開的任務(wù)處理方法、裝置及存儲(chǔ)介質(zhì),本公開結(jié)合一具體場景對(duì)本實(shí)施例的任務(wù)處理方案進(jìn)行說明。圖1是本公開根據(jù)一示例性實(shí)施例示出的一種任務(wù)處理裝置的框圖,本實(shí)施例的任務(wù)處理方法可以應(yīng)用于購物等電商平臺(tái)方,該平臺(tái)方為用戶提供有客戶端,用戶通過客戶端,可以獲得電商平臺(tái)方所提供的購物服務(wù)。

電商平臺(tái)方配置有服務(wù)器集群,在其服務(wù)器集群中配置有任務(wù)處理裝置。實(shí)際應(yīng)用中,存在大量的客戶端同時(shí)提交任務(wù)的情況,客戶端提交的任務(wù)會(huì)到達(dá)任務(wù)處理裝置。在該任務(wù)處理裝置中配置有父任務(wù)執(zhí)行模塊集群11和子任務(wù)執(zhí)行模塊集群12。父任務(wù)執(zhí)行模塊集群11中可以包括一個(gè)或多個(gè)父任務(wù)執(zhí)行模塊(如111、112、113……11m)。子任務(wù)執(zhí)行模塊集群12中可以包括至少兩個(gè)子任務(wù)執(zhí)行模塊(如121、122、123……12k)。所述裝置中還設(shè)有父任務(wù)隊(duì)列和子任務(wù)隊(duì)列,父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中的任務(wù),以便父任務(wù)隊(duì)列在監(jiān)控到該任務(wù)時(shí)通知父任務(wù)執(zhí)行模塊。每個(gè)子任務(wù)執(zhí)行模塊訂閱相應(yīng)子任務(wù)隊(duì)列中的任務(wù),以便子任務(wù)隊(duì)列在監(jiān)控到該任務(wù)時(shí)通知子任務(wù)執(zhí)行模塊。其中,不同子任務(wù)執(zhí)行模塊可以對(duì)應(yīng)不同子任務(wù)隊(duì)列。例如,父任務(wù)執(zhí)行模塊預(yù)先與父任務(wù)隊(duì)列建立訂閱關(guān)系,訂閱關(guān)系可以是父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中指定類型任務(wù)或任意類型的任務(wù),以便父任務(wù)隊(duì)列檢測(cè)到需處理父任務(wù)執(zhí)行模塊所訂閱的任務(wù)時(shí),父任務(wù)隊(duì)列可以將該任務(wù)發(fā)送至父任務(wù)執(zhí)行模塊。同理,子任務(wù)執(zhí)行模塊可以預(yù)先與子任務(wù)隊(duì)列建立訂閱關(guān)系,訂閱關(guān)系可以是子任務(wù)執(zhí)行模塊訂閱子任務(wù)隊(duì)列中指定類型任務(wù)或任意類型任務(wù),在子任務(wù)隊(duì)列檢測(cè)到需處理子任務(wù)執(zhí)行模塊所訂閱的任務(wù)時(shí),子任務(wù)隊(duì)列可以將該任務(wù)發(fā)送至子任務(wù)執(zhí)行模塊??梢姡ㄟ^訂閱的方式可以快速獲取到任務(wù)隊(duì)列中的任務(wù),進(jìn)而可以提高獲取效率。

關(guān)于父任務(wù)執(zhí)行模塊集群中父任務(wù)執(zhí)行模塊的數(shù)量,父任務(wù)執(zhí)行模塊的數(shù)量可以根據(jù)父任務(wù)隊(duì)列中任務(wù)的類型數(shù)量確定,不同父任務(wù)執(zhí)行模塊可以訂閱父任務(wù)隊(duì)列中不同類型的任務(wù),父任務(wù)執(zhí)行模塊的數(shù)量可以靈活配置。其中,任務(wù)的類型可以根據(jù)任務(wù)標(biāo)識(shí)、產(chǎn)生任務(wù)的對(duì)象、任務(wù)的處理對(duì)象等任務(wù)的相關(guān)信息確定。

關(guān)于父任務(wù)執(zhí)行模塊,可以配置一部分父任務(wù)執(zhí)行模塊分別處理父任務(wù)隊(duì)列中比較復(fù)雜的任務(wù),一部分父任務(wù)執(zhí)行模塊分別處理父任務(wù)隊(duì)列中比較簡單的任務(wù)。如果父任務(wù)執(zhí)行模塊為處理簡單任務(wù)的模塊時(shí),可以直接將獲取到的待處理任務(wù)進(jìn)行處理。如果父任務(wù)執(zhí)行模塊為處理復(fù)雜任務(wù)的模塊時(shí),可以按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù),并將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中。每個(gè)子任務(wù)執(zhí)行模塊用于對(duì)與所述子任務(wù)執(zhí)行模塊對(duì)應(yīng)的子任務(wù)隊(duì)列中的子任務(wù)進(jìn)行處理。其中,簡單任務(wù)和復(fù)雜任務(wù)可以基于是否由一個(gè)獨(dú)立的父任務(wù)執(zhí)行模塊執(zhí)行而區(qū)分。

可見,每個(gè)子任務(wù)對(duì)應(yīng)發(fā)送到一個(gè)獨(dú)立的子任務(wù)隊(duì)列中,由于處理子任務(wù)隊(duì)列中子任務(wù)的子任務(wù)執(zhí)行模塊相互獨(dú)立,則可以利用不同的子任務(wù)執(zhí)行模塊同時(shí)對(duì)拆分獲得的不同子任務(wù)進(jìn)行處理,實(shí)現(xiàn)子任務(wù)的并發(fā)處理,從而可以提高處理效率,避免由于處理時(shí)間過長導(dǎo)致任務(wù)堆積的現(xiàn)象。

其中,預(yù)設(shè)拆分規(guī)則是預(yù)先設(shè)定的可以將指定類型的待處理任務(wù)拆分為至少兩個(gè)子任務(wù)的規(guī)則。例如,可以將下訂單的任務(wù)拆分為核實(shí)訂單信息是否準(zhǔn)確的子任務(wù)、查詢賬戶余額是否充足的子任務(wù)、查詢商品是否充足的子任務(wù)等。

在一個(gè)例子中,預(yù)設(shè)拆分規(guī)則可以根據(jù)待處理任務(wù)的復(fù)雜度確定。其中,復(fù)雜度和拆分獲得的子任務(wù)的數(shù)量可以正相關(guān),復(fù)雜度越高的待處理任務(wù)可以拆分為較多的子任務(wù),復(fù)雜度越低的待處理任務(wù)可以拆分為較少的子任務(wù),具體拆分規(guī)則可以靈活配置。

可以理解的是,待處理任務(wù)的復(fù)雜度可以是拆分規(guī)則的確定因素之一,還可以由其他因素確定拆分規(guī)則。例如,其他因素可以是父任務(wù)執(zhí)行模塊所在設(shè)備的處理能力、待處理任務(wù)的類型等等。

由上述實(shí)施例可見,由于父任務(wù)執(zhí)行模塊可以將待處理任務(wù)拆分為多個(gè)子任務(wù),并分別由不同子任務(wù)執(zhí)行模塊處理子任務(wù),又由于各個(gè)子任務(wù)執(zhí)行模塊相互獨(dú)立,從而實(shí)現(xiàn)提高處理效率。

進(jìn)一步的,子任務(wù)執(zhí)行模塊在執(zhí)行子任務(wù)后,可以將所述子任務(wù)的處理結(jié)果以及任務(wù)標(biāo)識(shí)反饋至父任務(wù)執(zhí)行模塊,并移除所述子任務(wù)隊(duì)列中的所述子任務(wù)。父任務(wù)執(zhí)行模塊可以將各子任務(wù)執(zhí)行模塊發(fā)送的攜帶有同一任務(wù)標(biāo)識(shí)的處理結(jié)果反饋至任務(wù)發(fā)送方,并移除父任務(wù)隊(duì)列中任務(wù)標(biāo)識(shí)對(duì)應(yīng)的待處理任務(wù)。

可見,主任務(wù)隊(duì)列提供了持久性存儲(chǔ)的功能,只有在同一任務(wù)標(biāo)識(shí)的所有子任務(wù)都存在處理結(jié)果后,才移除父任務(wù)隊(duì)列中任務(wù)標(biāo)識(shí)對(duì)應(yīng)的待處理任務(wù),避免父任務(wù)隊(duì)列中任務(wù)丟失。

實(shí)際應(yīng)用中,服務(wù)端可能接收到多種類型的待處理任務(wù),有些待處理任務(wù)比較重要(優(yōu)先級(jí)高),有些待處理任務(wù)相對(duì)沒那么重要(優(yōu)先級(jí)低),如果將所有類型的待處理任務(wù)放到同一個(gè)任務(wù)隊(duì)列中,且均采用先進(jìn)先出原則進(jìn)行處理,則可能耽誤某些重要/核心的待處理任務(wù),鑒于此,本公開還提供一個(gè)可選的實(shí)施例,在該實(shí)施例中,所述裝置不僅包括父任務(wù)執(zhí)行模塊和至少兩個(gè)子任務(wù)執(zhí)行模塊,父任務(wù)執(zhí)行模塊訂閱父任務(wù)隊(duì)列中的任務(wù),每個(gè)子任務(wù)執(zhí)行模塊訂閱相應(yīng)子任務(wù)隊(duì)列中的任務(wù),所述裝置還包括:

入隊(duì)控制模塊13,用于:接收到待處理任務(wù)后,根據(jù)所述待處理任務(wù)的類型,將所述待處理任務(wù)添加至與其類型對(duì)應(yīng)的父任務(wù)隊(duì)列中。

出隊(duì)控制模塊14,用于:根據(jù)預(yù)設(shè)的調(diào)度策略以及父任務(wù)隊(duì)列對(duì)應(yīng)的類型,篩選出一個(gè)父任務(wù)隊(duì)列,以便父任務(wù)執(zhí)行模塊執(zhí)行篩選出的父任務(wù)隊(duì)列中的任務(wù)。

如圖2所示,圖2是本公開根據(jù)一示例性實(shí)施例示出的另一種任務(wù)處理裝置的框圖。在該架構(gòu)中,作為其中一種實(shí)現(xiàn)手段,入隊(duì)控制模塊13、父任務(wù)隊(duì)列(1至m)、出隊(duì)控制模塊14、父任務(wù)執(zhí)行模塊(1至p)可以設(shè)置在同一個(gè)服務(wù)器中,子任務(wù)隊(duì)列1和子任務(wù)執(zhí)行模塊1可以設(shè)置在同一個(gè)服務(wù)器中,子任務(wù)隊(duì)列q和子任務(wù)執(zhí)行模塊q可以設(shè)置在同一個(gè)服務(wù)器中。

其中,待處理任務(wù)可以是任務(wù)發(fā)送方發(fā)送的任務(wù),任務(wù)發(fā)送方可以是客戶端等產(chǎn)生任務(wù)的一方。在接收到待處理任務(wù)后,可以按照不同的待處理任務(wù)添加至與其類型對(duì)應(yīng)的父任務(wù)隊(duì)列中。相同或相近類型的待處理任務(wù)可以劃分到同一個(gè)父任務(wù)隊(duì)列中,或者相同優(yōu)先級(jí)別的不同類型的待處理任務(wù)可以劃分到同一父任務(wù)隊(duì)列中。

預(yù)設(shè)的調(diào)度策略是預(yù)先設(shè)置的用于篩選出父任務(wù)隊(duì)列的策略,在一個(gè)例子中,可以根據(jù)父任務(wù)隊(duì)列對(duì)應(yīng)的類型篩選出優(yōu)先級(jí)高的類型對(duì)應(yīng)的父任務(wù)隊(duì)列,以便父任務(wù)執(zhí)行模塊執(zhí)行篩選出的父任務(wù)隊(duì)列中的任務(wù),實(shí)現(xiàn)重要的任務(wù)優(yōu)先執(zhí)行??梢岳斫獾氖?,待處理任務(wù)的類型是篩選父任務(wù)隊(duì)列的因素之一,還可以包含其他篩選因素,在此不一一贅述。

在一個(gè)可選的實(shí)現(xiàn)方式中,為了避免網(wǎng)絡(luò)抖動(dòng)等造成任務(wù)丟失的問題,本公開還預(yù)設(shè)了一種失敗消息隊(duì)列,通過失敗消息隊(duì)列存儲(chǔ)處理失敗的任務(wù)。具體的,所述子任務(wù)執(zhí)行模塊,還用于:若所述子任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)所述子任務(wù)進(jìn)行重試處理,若重試失敗,則將所述處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列。

本實(shí)施例中,在任務(wù)執(zhí)行后,執(zhí)行結(jié)果存在成功或失敗兩種結(jié)果。若執(zhí)行成功,則該子任務(wù)完成處理;若執(zhí)行失敗,則該子任務(wù)處理失敗。若子任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)所述子任務(wù)進(jìn)行重試處理。其中,預(yù)設(shè)的重新機(jī)制可以是立即重試,也可以是間隔預(yù)設(shè)時(shí)間后重試。

在實(shí)際應(yīng)用中,也可能存在子任務(wù)持續(xù)了很多次執(zhí)行后,該子任務(wù)仍然執(zhí)行不成功的情況。針對(duì)此種情況,本實(shí)施例中,若處理失敗的任務(wù)的失敗次數(shù)或重試次數(shù)達(dá)到預(yù)設(shè)次數(shù)閾值(即重試失敗),可以將處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列。其中,預(yù)設(shè)次數(shù)閾值可以是3次或5次等。管理人員可以查看失敗消息隊(duì)列中的子任務(wù),進(jìn)而解決導(dǎo)致失敗的問題。

進(jìn)一步的,在將處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列后,可以將處理失敗的子任務(wù)從子任務(wù)隊(duì)列中移除,并反饋處理結(jié)果至父任務(wù)執(zhí)行模塊,由父任務(wù)執(zhí)行模塊通過入隊(duì)控制模塊將執(zhí)行結(jié)果反饋至任務(wù)發(fā)送方。

可以理解的是,如果父任務(wù)執(zhí)行模塊為不需要拆分待處理任務(wù)的模塊,則父任務(wù)執(zhí)行模塊,還用于:若所述待處理任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)所述待處理任務(wù)進(jìn)行重試處理,若重試失敗,則將所述處理失敗的待處理任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列。

以上實(shí)施方式中的各種技術(shù)特征可以任意進(jìn)行組合,只要特征之間的組合不存在沖突或矛盾,但是限于篇幅,未進(jìn)行一一描述,因此上述實(shí)施方式中的各種技術(shù)特征的任意進(jìn)行組合也屬于本說明書公開的范圍。

以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)模塊上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本公開方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。

與前述任務(wù)處理裝置的實(shí)施例相對(duì)應(yīng),本公開還提供了任務(wù)處理方法及存儲(chǔ)介質(zhì)的實(shí)施例。

如圖3所示,圖3是本公開根據(jù)一示例性實(shí)施例示出的一種任務(wù)處理方法的流程圖,該方法包括以下步驟:

在步驟301中,父任務(wù)執(zhí)行模塊:按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù),并將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中。

在步驟302中,子任務(wù)執(zhí)行模塊:對(duì)與所述子任務(wù)執(zhí)行模塊對(duì)應(yīng)的子任務(wù)隊(duì)列中的子任務(wù)進(jìn)行處理。

由上述實(shí)施例可見,由于父任務(wù)執(zhí)行模塊可以將待處理任務(wù)拆分為多個(gè)子任務(wù),并分別由不同子任務(wù)執(zhí)行模塊處理子任務(wù),又由于處理子任務(wù)隊(duì)列中子任務(wù)的子任務(wù)執(zhí)行模塊相互獨(dú)立,則可以利用不同的子任務(wù)執(zhí)行模塊同時(shí)對(duì)拆分獲得的不同子任務(wù)進(jìn)行處理,實(shí)現(xiàn)子任務(wù)的并發(fā)處理,從而可以提高處理效率,避免由于處理時(shí)間過長導(dǎo)致任務(wù)堆積的現(xiàn)象。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述預(yù)設(shè)拆分規(guī)則根據(jù)所述待處理任務(wù)的復(fù)雜度確定。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述方法還包括:

子任務(wù)執(zhí)行模塊將所述子任務(wù)的處理結(jié)果以及任務(wù)標(biāo)識(shí)反饋至父任務(wù)執(zhí)行模塊,并移除所述子任務(wù)隊(duì)列中的所述子任務(wù)。

父任務(wù)執(zhí)行模塊將各子任務(wù)執(zhí)行模塊發(fā)送的攜帶有同一任務(wù)標(biāo)識(shí)的處理結(jié)果反饋至任務(wù)發(fā)送方,并移除父任務(wù)隊(duì)列中任務(wù)標(biāo)識(shí)對(duì)應(yīng)的待處理任務(wù)。

由上述實(shí)施例可見,主任務(wù)隊(duì)列提供了持久性存儲(chǔ)的功能,只有在同一任務(wù)標(biāo)識(shí)的所有子任務(wù)都存在處理結(jié)果后,才移除父任務(wù)隊(duì)列中任務(wù)標(biāo)識(shí)對(duì)應(yīng)的待處理任務(wù),避免父任務(wù)隊(duì)列中任務(wù)丟失。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述方法還包括:

入隊(duì)控制模塊:接收到待處理任務(wù)后,根據(jù)所述待處理任務(wù)的類型,將所述待處理任務(wù)添加至與其類型對(duì)應(yīng)的父任務(wù)隊(duì)列中。

出隊(duì)控制模塊:根據(jù)預(yù)設(shè)的調(diào)度策略以及父任務(wù)隊(duì)列對(duì)應(yīng)的類型,篩選出一個(gè)父任務(wù)隊(duì)列,以便父任務(wù)執(zhí)行模塊執(zhí)行篩選出的父任務(wù)隊(duì)列中的任務(wù)。

由上述實(shí)施例可見,通過入隊(duì)控制模塊接收到待處理任務(wù)后,根據(jù)待處理任務(wù)的類型將待處理任務(wù)添加至與其類型對(duì)應(yīng)的父任務(wù)隊(duì)列中,并通過出隊(duì)控制模塊根據(jù)預(yù)設(shè)的調(diào)度策略以及父任務(wù)隊(duì)列對(duì)應(yīng)的類型,篩選出一個(gè)父任務(wù)隊(duì)列,以便父任務(wù)執(zhí)行模塊執(zhí)行篩選出的父任務(wù)隊(duì)列中的任務(wù),從而實(shí)現(xiàn)利用不同父任務(wù)隊(duì)列存儲(chǔ)不同類型的任務(wù),并按照任務(wù)類型執(zhí)行相應(yīng)任務(wù)隊(duì)列中的任務(wù)。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述方法還包括:

在對(duì)子任務(wù)隊(duì)列中的子任務(wù)進(jìn)行處理時(shí),若所述子任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)所述子任務(wù)進(jìn)行重試處理,若重試失敗,則將所述處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列。

由上述實(shí)施例可見,若所述子任務(wù)處理失敗,啟動(dòng)預(yù)設(shè)的重試機(jī)制對(duì)子任務(wù)進(jìn)行重試處理,若重試失敗,則將處理失敗的子任務(wù)添加至預(yù)設(shè)的失敗消息隊(duì)列,從而避免網(wǎng)絡(luò)抖動(dòng)等造成任務(wù)丟失的問題。

如圖4所示,圖4是本公開根據(jù)一示例性實(shí)施例示出的另一種任務(wù)處理方法的流程圖,該方法包括以下步驟:

在步驟401中,按照預(yù)設(shè)拆分規(guī)則,按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù)。

在步驟402中,將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中,以使與各所述子任務(wù)隊(duì)列關(guān)聯(lián)的子任務(wù)執(zhí)行模塊分別執(zhí)行所述子任務(wù)隊(duì)列中的子任務(wù)。

相應(yīng)的,本公開還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述任一項(xiàng)所述方法的步驟。

本公開可采用在一個(gè)或多個(gè)其中包含有程序代碼的存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。計(jì)算機(jī)可用存儲(chǔ)介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體,可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括但不限于:相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。

如圖5所示,圖5是本公開根據(jù)一示例性實(shí)施例示出的一種用于任務(wù)處理的裝置500的框圖。

例如,裝置500可以被提供為服務(wù)器。參照?qǐng)D5,裝置500包括處理組件522,其進(jìn)一步包括一個(gè)或多個(gè)處理器,以及由存儲(chǔ)器532所代表的存儲(chǔ)器資源,用于存儲(chǔ)可由處理部件522的執(zhí)行的指令,例如應(yīng)用程序。存儲(chǔ)器532中存儲(chǔ)的應(yīng)用程序可以包括一個(gè)或一個(gè)以上的每一個(gè)對(duì)應(yīng)于一組指令的模塊。此外,處理組件522被配置為執(zhí)行指令,以執(zhí)行上述任務(wù)處理方法。

裝置500還可以包括一個(gè)電源組件526被配置為執(zhí)行裝置500的電源管理,一個(gè)有線或無線網(wǎng)絡(luò)接口550被配置為將裝置500連接到網(wǎng)絡(luò),和一個(gè)輸入輸出(i/o)接口558。裝置500可以操作基于存儲(chǔ)在存儲(chǔ)器532的操作系統(tǒng)。

其中,當(dāng)所述存儲(chǔ)器532中的指令由所述處理組件522執(zhí)行時(shí),使得裝置500能夠執(zhí)行一種任務(wù)處理方法,包括:

父任務(wù)執(zhí)行模塊:按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù),并將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中。

子任務(wù)執(zhí)行模塊:對(duì)與所述子任務(wù)執(zhí)行模塊對(duì)應(yīng)的子任務(wù)隊(duì)列中的子任務(wù)進(jìn)行處理。

如圖6所示,圖6是本公開根據(jù)一示例性實(shí)施例示出的另一種用于任務(wù)處理的裝置600的框圖。

例如,裝置600可以被提供為服務(wù)器。參照?qǐng)D6,裝置600包括處理組件622,其進(jìn)一步包括一個(gè)或多個(gè)處理器,以及由存儲(chǔ)器632所代表的存儲(chǔ)器資源,用于存儲(chǔ)可由處理部件622的執(zhí)行的指令,例如應(yīng)用程序。存儲(chǔ)器632中存儲(chǔ)的應(yīng)用程序可以包括一個(gè)或一個(gè)以上的每一個(gè)對(duì)應(yīng)于一組指令的模塊。此外,處理組件622被配置為執(zhí)行指令,以執(zhí)行上述任務(wù)處理方法。

裝置600還可以包括一個(gè)電源組件626被配置為執(zhí)行裝置600的電源管理,一個(gè)有線或無線網(wǎng)絡(luò)接口650被配置為將裝置600連接到網(wǎng)絡(luò),和一個(gè)輸入輸出(i/o)接口658。裝置600可以操作基于存儲(chǔ)在存儲(chǔ)器632的操作系統(tǒng)。

其中,當(dāng)所述存儲(chǔ)器632中的指令由所述處理組件622執(zhí)行時(shí),使得裝置600能夠執(zhí)行一種任務(wù)處理方法,包括:

按照預(yù)設(shè)拆分規(guī)則,按照預(yù)設(shè)拆分規(guī)則,將從父任務(wù)隊(duì)列中獲取到的待處理任務(wù)拆分為至少兩個(gè)子任務(wù)。

將各子任務(wù)分別發(fā)送至不同的子任務(wù)隊(duì)列中,以使與各所述子任務(wù)隊(duì)列關(guān)聯(lián)的子任務(wù)執(zhí)行模塊分別執(zhí)行所述子任務(wù)隊(duì)列中的子任務(wù)。

本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本公開的其它實(shí)施方案。本公開旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。

應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。

以上所述僅為本公開的較佳實(shí)施例而已,并不用以限制本公開,凡在本公開的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本公開保護(hù)的范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1