本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種回調(diào)消息的處理方法和隊(duì)列管理系統(tǒng)。
背景技術(shù):
在互聯(lián)網(wǎng)的云服務(wù)中,云服務(wù)提供方的后臺(tái)實(shí)現(xiàn)了各類應(yīng)用場(chǎng)景下的業(yè)務(wù)邏輯,并定義了相關(guān)的網(wǎng)絡(luò)協(xié)議接口供云服務(wù)使用方調(diào)用,云服務(wù)使用方按照協(xié)議開發(fā)自己的客戶端即可實(shí)現(xiàn)對(duì)應(yīng)功能,而不需要關(guān)注云服務(wù)提供方的后臺(tái)服務(wù)器的具體實(shí)現(xiàn)。例如,云服務(wù)提供方的后臺(tái)服務(wù)器提供了一種發(fā)送即時(shí)消息的服務(wù),云服務(wù)使用方需要使用該功能時(shí),只需要在云服務(wù)使用方的客戶端中執(zhí)行發(fā)送、接收消息的功能,就可以借助云服務(wù)提供方的臺(tái)服務(wù)器完成消息收發(fā)。
但有些情況下,云服務(wù)使用方希望自身就能夠監(jiān)控具體的業(yè)務(wù)邏輯,因此云服務(wù)使用方也可以搭建自己的使用方后臺(tái)服務(wù)器,并以提供回調(diào)接口的方式和云服務(wù)提供方的后臺(tái)服務(wù)器進(jìn)行交互。例如,云服務(wù)使用方想要統(tǒng)計(jì)消息發(fā)送的成功量和失敗量,那么可以搭建自己的后臺(tái)服務(wù)器并提供回調(diào)接口,當(dāng)云服務(wù)提供方的后臺(tái)服務(wù)器發(fā)送消息成功或失敗時(shí)就可以將相關(guān)信息通過回調(diào)接口通知到云服務(wù)使用方的后臺(tái)服務(wù)器。
在基于云服務(wù)提供方和云服務(wù)使用方實(shí)現(xiàn)的回調(diào)過程中,目前可以直接通過超文本傳輸協(xié)議(英文全稱:Hyper Text Transfer Protocol,英文簡(jiǎn)稱:HTTP)實(shí)現(xiàn),云服務(wù)提供方的后臺(tái)服務(wù)器在適當(dāng)時(shí)機(jī)發(fā)出HTTP請(qǐng)求進(jìn)行回調(diào),云服務(wù)使用方的后臺(tái)服務(wù)器進(jìn)行HTTP響應(yīng)。如果云服務(wù)提供方的后臺(tái)服務(wù)器在預(yù)定時(shí)間內(nèi)未收到使用方后臺(tái)服務(wù)器的響應(yīng),提供方后臺(tái)服務(wù)器可以進(jìn)行重試,也可以放棄回調(diào),具體取決于雙方約定。提供方后臺(tái)服務(wù)器的多次重試會(huì)嚴(yán)重影響云服務(wù)提供方的正常業(yè)務(wù)。但是云服務(wù)提供方的后臺(tái)服務(wù)器直接發(fā)起的HTTP請(qǐng)求并不可靠,無法保證云服務(wù)使用方的后臺(tái)服務(wù)器能夠收到這個(gè)回調(diào)。如果云服務(wù)提供方和云服務(wù)使用方之間的網(wǎng)絡(luò)(一般是公網(wǎng))出現(xiàn)網(wǎng)絡(luò)波動(dòng),或者云服務(wù)使用方的后臺(tái)服務(wù)器出現(xiàn)短時(shí)間故障,那么回調(diào)將會(huì)丟失,而重試機(jī)制可能在系統(tǒng)恢復(fù)前就已經(jīng)結(jié)束了。
因此,目前在基于云服務(wù)提供方和云服務(wù)使用方實(shí)現(xiàn)的回調(diào)過程中存在回調(diào)功能不可靠,回調(diào)失敗率高的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種回調(diào)消息的處理方法和隊(duì)列管理系統(tǒng),用于保證回調(diào)功能的可靠性,提高回調(diào)成功率。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供以下技術(shù)方案:
第一方面,本發(fā)明實(shí)施例提供一種回調(diào)消息的處理方法,包括:
隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留所述第一回調(diào)消息在所述分布式消息隊(duì)列中,所述分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)所述回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí);
所述隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,所述回調(diào)請(qǐng)求包括:所述第一回調(diào)消息和所述第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí);
所述隊(duì)列管理系統(tǒng)判斷在預(yù)置的時(shí)間段內(nèi)是否接收到所述使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng);
當(dāng)所述隊(duì)列管理系統(tǒng)在所述時(shí)間段內(nèi)接收到所述回調(diào)響應(yīng)時(shí),所述隊(duì)列管理系統(tǒng)獲取所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí);
若所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是所述第一消息標(biāo)識(shí),所述隊(duì)列管理系統(tǒng)將所述第一消息標(biāo)識(shí)對(duì)應(yīng)的所述第一回調(diào)消息從所述分布式消息隊(duì)列中刪除掉。
第二方面,本發(fā)明實(shí)施例還提供一種隊(duì)列管理系統(tǒng),包括:
回調(diào)消息讀取模塊,用于從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留所述第一回調(diào)消息在所述分布式消息隊(duì)列中,所述分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)所述回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí);
回調(diào)請(qǐng)求發(fā)送模塊,用于向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,所述回調(diào)請(qǐng)求包括:所述第一回調(diào)消息和所述第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí);
判斷模塊,用于判斷在預(yù)置的時(shí)間段內(nèi)是否接收到所述使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng);
回調(diào)響應(yīng)解析模塊,用于當(dāng)所述隊(duì)列管理系統(tǒng)在所述時(shí)間段內(nèi)接收到所述回調(diào)響應(yīng)時(shí),獲取所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí);
回調(diào)消息管理模塊,用于若所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是所述第一消息標(biāo)識(shí),將所述第一消息標(biāo)識(shí)對(duì)應(yīng)的所述第一回調(diào)消息從所述分布式消息隊(duì)列中刪除掉。
從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):
在本發(fā)明實(shí)施例中,隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留第一回調(diào)消息在分布式消息隊(duì)列中,分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,回調(diào)請(qǐng)求包括:第一回調(diào)消息和第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng),當(dāng)隊(duì)列管理系統(tǒng)在時(shí)間段內(nèi)接收到回調(diào)響應(yīng)時(shí),隊(duì)列管理系統(tǒng)獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí),若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)將第一消息標(biāo)識(shí)對(duì)應(yīng)的第一回調(diào)消息從分布式消息隊(duì)列中刪除掉。由于本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器提供的回調(diào)消息都保存在分布式消息隊(duì)列中,隊(duì)列管理系統(tǒng)也是從分布式消息隊(duì)列中讀取出第一回調(diào)消息,為了保證回調(diào)功能的可靠性,在分布式消息隊(duì)列中仍保存有第一回調(diào)消息,當(dāng)隊(duì)列管理系統(tǒng)從使用方后臺(tái)服務(wù)器獲取到第一消息標(biāo)識(shí)之后才會(huì)刪除分布式消息隊(duì)列中的第一回調(diào)消息。本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器的正常業(yè)務(wù)不會(huì)受到回調(diào)過程的影響,隊(duì)列管理系統(tǒng)通過實(shí)時(shí)維護(hù)分布式消息隊(duì)列可以保證第一回調(diào)消息能夠發(fā)送到使用方后臺(tái)服務(wù)器,因此可以保證回調(diào)功能的可靠性,提高回調(diào)成功率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種回調(diào)消息的處理方法的流程方框示意圖;
圖2為本發(fā)明實(shí)施例提供的另一種回調(diào)消息的處理方法的流程方框示意圖;
圖3為本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng)的一種實(shí)現(xiàn)場(chǎng)景示意圖;
圖4為本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng)實(shí)現(xiàn)回調(diào)消息寫入的一種實(shí)現(xiàn)場(chǎng)景示意圖;
圖5為本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng)實(shí)現(xiàn)回調(diào)消息讀出的一種實(shí)現(xiàn)場(chǎng)景示意圖;
圖6-a為本發(fā)明實(shí)施例提供的一種隊(duì)列管理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖6-b為本發(fā)明實(shí)施例提供的另一種隊(duì)列管理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖6-c為本發(fā)明實(shí)施例提供的另一種隊(duì)列管理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖6-d為本發(fā)明實(shí)施例提供的另一種隊(duì)列管理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖6-e為本發(fā)明實(shí)施例提供的另一種隊(duì)列管理系統(tǒng)的組成結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng)通過服務(wù)器實(shí)現(xiàn)的組成結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明實(shí)施例提供了一種回調(diào)消息的處理方法和隊(duì)列管理系統(tǒng),用于保證回調(diào)功能的可靠性,提高回調(diào)成功率。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
以下分別進(jìn)行詳細(xì)說明。
本發(fā)明回調(diào)消息的處理方法的一個(gè)實(shí)施例,具體可以應(yīng)用于基于云服務(wù)提供方和云服務(wù)使用方實(shí)現(xiàn)的回調(diào)過程,請(qǐng)參閱圖1所示,本發(fā)明一個(gè)實(shí)施例提供的回調(diào)消息的處理方法,可以包括如下步驟:
101、隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留第一回調(diào)消息在分布式消息隊(duì)列中,分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí)。
在本發(fā)明實(shí)施例中,分布式消息隊(duì)列可以由隊(duì)列管理系統(tǒng)來實(shí)時(shí)維護(hù),分布式消息隊(duì)列中存儲(chǔ)有提供方后臺(tái)服務(wù)器提供的至少一個(gè)回調(diào)消息。該提供方后臺(tái)服務(wù)器具體可以是云服務(wù)提供方中設(shè)置的后臺(tái),提供方后臺(tái)服務(wù)器可以根據(jù)云服務(wù)使用方的要求來發(fā)送回調(diào)消息。本發(fā)明實(shí)施例提供方后臺(tái)服務(wù)器并不會(huì)直接向云服務(wù)使用方來發(fā)送回調(diào)消息,而是通過本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng)來完成回調(diào)消息的發(fā)送,而不會(huì)增加提供方后臺(tái)服務(wù)器的負(fù)荷,保證后方服務(wù)器正常的業(yè)務(wù)功能。
在本發(fā)明實(shí)施例中,隊(duì)列管理系統(tǒng)用于向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)消息,隊(duì)列管理系統(tǒng)首先從分布式消息隊(duì)列中讀取出回調(diào)消息,為便于描述,將讀取到的回調(diào)消息定義為第一回調(diào)消息,本發(fā)明實(shí)施例中隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取到第一回調(diào)消息是復(fù)制讀取,在分布式消息隊(duì)列中仍保留該第一回調(diào)消息,例如隊(duì)列管理系統(tǒng)將分布式消息隊(duì)列中的第一回調(diào)消息復(fù)制到內(nèi)存緩沖區(qū),隊(duì)列管理系統(tǒng)可以讀取到第一回調(diào)消息。本發(fā)明實(shí)施例中隊(duì)列管理系統(tǒng)讀取分布式消息隊(duì)列可以根據(jù)該隊(duì)列的生成方式來讀取,例如可以是按照先入先出原則來讀取,不限定的是,也可以采用其它特定順序來讀取,或者使用特定的算法來確定每次從分布式消息隊(duì)列中哪個(gè)位置開始讀取。本發(fā)明實(shí)施例中隊(duì)列管理系統(tǒng)讀取到的第一回調(diào)消息時(shí),并不是同時(shí)從分布式消息隊(duì)列中刪除掉,以避免回調(diào)消息傳送失敗時(shí)第一回調(diào)消息的丟失,提高回調(diào)消息的管理可靠性。
在本發(fā)明的一些實(shí)施例中,本發(fā)明實(shí)施例提供的回調(diào)消息的處理方法中,還可以包括如下步驟:
A1、隊(duì)列管理系統(tǒng)從提供方后臺(tái)服務(wù)器獲取到回調(diào)消息,并將獲取到的回調(diào)消息寫入到分布式消息隊(duì)列中。
其中,隊(duì)列管理系統(tǒng)除了執(zhí)行讀取回調(diào)消息,還可以與提供方后臺(tái)服務(wù)器進(jìn)行實(shí)時(shí)的交互,若提供方后臺(tái)服務(wù)器產(chǎn)生有回調(diào)消息,則隊(duì)列管理系統(tǒng)可以實(shí)時(shí)的從提供方后臺(tái)服務(wù)器獲取到回調(diào)消息,隊(duì)列管理系統(tǒng)將該回調(diào)消息寫入到分布式消息隊(duì)列中。
進(jìn)一步的,在本發(fā)明的一些實(shí)施例中,步驟A1隊(duì)列管理系統(tǒng)從提供方后臺(tái)服務(wù)器獲取到回調(diào)消息,并將獲取到的回調(diào)消息寫入到分布式消息隊(duì)列中之后,本發(fā)明實(shí)施例提供的回調(diào)消息的處理方法中,還可以包括如下步驟:
B1、隊(duì)列管理系統(tǒng)判斷回調(diào)消息寫入分布式消息隊(duì)列的寫入頻率是否超過預(yù)置的回調(diào)頻率;
B2、若寫入頻率超過回調(diào)頻率,隊(duì)列管理系統(tǒng)暫緩從分布式消息隊(duì)列中讀取回調(diào)消息。
其中,后方服務(wù)器和隊(duì)列管理系統(tǒng)之間約定設(shè)置一回調(diào)頻率,隊(duì)列管理系統(tǒng)可以判斷回調(diào)消息寫入分布式消息隊(duì)列的寫入頻率是否超過預(yù)置的回調(diào)頻率,若寫入頻率超過回調(diào)頻率,則說明隊(duì)列管理系統(tǒng)寫入分布式消息隊(duì)列的回調(diào)消息過多,若隊(duì)列管理系統(tǒng)不停的讀取出回調(diào)消息并向使用方后臺(tái)服務(wù)器推送,可能會(huì)加重使用方后臺(tái)服務(wù)器的負(fù)荷,此時(shí)隊(duì)列管理系統(tǒng)可以暫緩從分布式消息隊(duì)列中讀取回調(diào)消息。舉例說明,云服務(wù)的提供方后臺(tái)服務(wù)器可以和云服務(wù)的使用方后臺(tái)服務(wù)器約定一個(gè)最大的回調(diào)頻率,以避免回調(diào)請(qǐng)求出現(xiàn)尖峰時(shí)壓垮云服務(wù)的使用方后臺(tái)服務(wù)器。如果寫入量在短時(shí)間內(nèi)超過了最大的回調(diào)頻率,可以暫緩讀取,起到削峰的作用。該回調(diào)頻率可以是以間隔的方式來控制,也可以是秒(或分鐘等)內(nèi)的最大請(qǐng)求來控制。在云服務(wù)提供方和云服務(wù)適用方的回調(diào)過程中,也有可能由于業(yè)務(wù)特點(diǎn),回調(diào)請(qǐng)求量并不均勻,會(huì)在某個(gè)時(shí)間點(diǎn)出現(xiàn)尖峰,短時(shí)間內(nèi)的大量請(qǐng)求超過了云服務(wù)的提供方后臺(tái)服務(wù)器的處理能力,導(dǎo)致部分HTTP請(qǐng)求未被正確接收處理。而本發(fā)明實(shí)施例中后天服務(wù)器只需要將回調(diào)消息存儲(chǔ)到分布式消息隊(duì)列中即可,隊(duì)列管理系統(tǒng)可以自動(dòng)調(diào)節(jié)發(fā)送回調(diào)請(qǐng)求的快慢,從而緩解這種尖峰,起到削峰的作用。
在本發(fā)明的一些實(shí)施例中,步驟101隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留第一回調(diào)消息在分布式消息隊(duì)列中之后,本發(fā)明實(shí)施例提供的回調(diào)消息的處理方法中,還可以包括如下步驟:
C1、隊(duì)列管理系統(tǒng)將保留在分布式消息隊(duì)列中的第一回調(diào)消息標(biāo)記為未響應(yīng)狀態(tài);
C2、隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取沒有被標(biāo)記為未響應(yīng)狀態(tài)的第二回調(diào)消息,并向使用方后臺(tái)服務(wù)器發(fā)送讀取到的第二回調(diào)消息。
其中,隊(duì)列管理系統(tǒng)為了管理分布式消息隊(duì)列,還可以對(duì)已經(jīng)讀取的第一回調(diào)消息進(jìn)行標(biāo)記,在分布式消息隊(duì)列中第一回調(diào)消息可以標(biāo)記為未響應(yīng)狀態(tài),則隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取回調(diào)消息時(shí)可以檢查回調(diào)消息的標(biāo)記,如果某個(gè)回調(diào)消息標(biāo)記為未響應(yīng)狀態(tài),則說明該回調(diào)消息已經(jīng)被讀取過了,不需要重復(fù)讀取,而是可以讀取下一個(gè)回調(diào)消息,例如從分布式消息隊(duì)列中讀取沒有被標(biāo)記為未響應(yīng)狀態(tài)的第二回調(diào)消息,并向使用方后臺(tái)服務(wù)器發(fā)送讀取到的第二回調(diào)消息,對(duì)于第二回調(diào)消息的處理可以參閱本發(fā)明實(shí)施例對(duì)第一回調(diào)消息的處理流程,此處不再贅述。
102、隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,回調(diào)請(qǐng)求包括:第一回調(diào)消息和第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí)。
在本發(fā)明實(shí)施例中,隊(duì)列管理系統(tǒng)讀取到第一回調(diào)消息后,隊(duì)列管理系統(tǒng)可以向后方客戶端推送該第一回調(diào)消息,具體的,隊(duì)列管理系統(tǒng)可以發(fā)送回調(diào)請(qǐng)求,在該回調(diào)請(qǐng)求中攜帶有第一消息標(biāo)識(shí),以使使用方后臺(tái)服務(wù)器確定是接收到了哪個(gè)回調(diào)消息。本發(fā)明實(shí)施例中使用方后臺(tái)服務(wù)器是與提供方后臺(tái)服務(wù)器對(duì)應(yīng)的后臺(tái)服務(wù)器,使用方后臺(tái)服務(wù)器可以用于接收回調(diào)消息,具體的,使用方后臺(tái)服務(wù)器可以是云服務(wù)使用方中部署的后臺(tái)。
103、隊(duì)列管理系統(tǒng)判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)。
在本發(fā)明實(shí)施例中,隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器推送回調(diào)請(qǐng)求之后,隊(duì)列管理系統(tǒng)還需要監(jiān)控回調(diào)請(qǐng)求是否成功到達(dá)使用方后臺(tái)服務(wù)器。隊(duì)列管理系統(tǒng)可以按照預(yù)設(shè)的時(shí)間段判斷在該時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)。例如,隊(duì)列管理系統(tǒng)判斷在預(yù)定時(shí)間內(nèi)(比如30秒)是否收到回調(diào)響應(yīng)。
在本發(fā)明實(shí)施例中,隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求之后,使用方后臺(tái)服務(wù)器接收隊(duì)列管理系統(tǒng)發(fā)送的回調(diào)請(qǐng)求,當(dāng)使用方后臺(tái)服務(wù)器成功接收到回調(diào)請(qǐng)求時(shí),使用方后臺(tái)服務(wù)器從回調(diào)請(qǐng)求中提取出第一回調(diào)消息和第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí),使用方后臺(tái)服務(wù)器向隊(duì)列管理系統(tǒng)發(fā)送回調(diào)響應(yīng),該回調(diào)響應(yīng)攜帶第一消息標(biāo)識(shí)。若使用方后臺(tái)服務(wù)器沒有成功接收到回調(diào)請(qǐng)求,使用方后臺(tái)服務(wù)器可以不做響應(yīng),也可以回復(fù)接收失敗,具體取決于實(shí)現(xiàn)場(chǎng)景。需要說明的是,在本發(fā)明實(shí)施例中使用方后臺(tái)服務(wù)器接收到的回調(diào)請(qǐng)求中攜帶有哪個(gè)消息響應(yīng),使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)中就攜帶哪個(gè)消息響應(yīng)。
在本發(fā)明的一些實(shí)施例中,步驟103隊(duì)列管理系統(tǒng)判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng),具體可以包括如下步驟:
D1、隊(duì)列管理系統(tǒng)監(jiān)測(cè)隊(duì)列管理系統(tǒng)和使用方后臺(tái)服務(wù)器之間建立的WebSocket連接,判斷在時(shí)間段內(nèi)是否接收到通過WebSocket連接傳送的回調(diào)響應(yīng)。
其中,隊(duì)列管理系統(tǒng)可以和使用方后臺(tái)服務(wù)器之間建立的WebSocket連接,即隊(duì)列管理系統(tǒng)和使用方后臺(tái)服務(wù)器之間可以通過WebSocket協(xié)議進(jìn)行通信,實(shí)現(xiàn)隊(duì)列管理系統(tǒng)與使用方后臺(tái)服務(wù)器之間的全雙工通信(英文名稱:full-duplex),例如,隊(duì)列管理系統(tǒng)可以通過HTTP請(qǐng)求完成與使用方后臺(tái)服務(wù)器的握手。不限定的是,本發(fā)明實(shí)施例中還可以使用HTTP連接,此處不做限定。
104、當(dāng)隊(duì)列管理系統(tǒng)在時(shí)間段內(nèi)接收到回調(diào)響應(yīng)時(shí),隊(duì)列管理系統(tǒng)獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)。
在本發(fā)明實(shí)施例中,隊(duì)列管理系統(tǒng)通過步驟103的判斷可知,若判斷結(jié)果為在時(shí)間段內(nèi)接收到回調(diào)響應(yīng),隊(duì)列管理系統(tǒng)解析該回調(diào)響應(yīng),可以獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)。需要說的是,在本發(fā)明實(shí)施例中回調(diào)響應(yīng)是使用方后臺(tái)服務(wù)器對(duì)接收到的回調(diào)消息的反饋,則使用方后臺(tái)服務(wù)器接收到哪個(gè)回調(diào)消息就會(huì)反饋相應(yīng)的消息標(biāo)識(shí),因此隊(duì)列管理系統(tǒng)可以進(jìn)一步執(zhí)行后續(xù)步驟105。
105、若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)將第一消息標(biāo)識(shí)對(duì)應(yīng)的第一回調(diào)消息從分布式消息隊(duì)列中刪除掉。
在本發(fā)明實(shí)施例中,隊(duì)列管理系統(tǒng)從回調(diào)響應(yīng)中獲取其攜帶的消息標(biāo)識(shí),然后確定回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是否是第一消息標(biāo)識(shí),若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是第一消息標(biāo)識(shí),則說明使用方后臺(tái)服務(wù)器成功接收到第一回調(diào)消息,此時(shí)隊(duì)列管理系統(tǒng)將第一消息標(biāo)識(shí)對(duì)應(yīng)的第一回調(diào)消息從分布式消息隊(duì)列中刪除掉。
在本發(fā)明的一些實(shí)施例中,步驟104隊(duì)列管理系統(tǒng)獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)之后,本發(fā)明實(shí)施例提供的回調(diào)消息的處理方法中,還可以包括如下步驟:
E1、若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)不是第一消息標(biāo)識(shí),判斷回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息是否已經(jīng)發(fā)送給使用方后臺(tái)服務(wù)器;
E2、若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息已經(jīng)發(fā)送給使用方后臺(tái)服務(wù)器,將回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息從分布式消息隊(duì)列中刪除掉;
E3、若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息還未發(fā)送給使用方后臺(tái)服務(wù)器,或回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息不存在于分布式消息隊(duì)列中,則對(duì)回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)不做處理。
其中,步驟104中隊(duì)列管理系統(tǒng)從回調(diào)響應(yīng)中解析出消息標(biāo)識(shí),該回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)可能不是第一消息標(biāo)識(shí),例如使用方后臺(tái)服務(wù)器收到了第二回調(diào)消息,則該使用方后臺(tái)服務(wù)器會(huì)向隊(duì)列管理系統(tǒng)發(fā)送第二消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)接收到回調(diào)響應(yīng),從而回調(diào)響應(yīng)中解析出來了第二消息標(biāo)識(shí),進(jìn)一步的判斷出該第二回調(diào)消息已經(jīng)發(fā)送給了使用方后臺(tái)服務(wù)器,則隊(duì)列管理系統(tǒng)將第二回調(diào)消息從分布式消息隊(duì)列中刪除掉,若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息還未發(fā)送給使用方后臺(tái)服務(wù)器,或回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息不存在于分布式消息隊(duì)列中,說明使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)是無效的響應(yīng),隊(duì)列管理系統(tǒng)可以不做任何處理,即對(duì)回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)不做處理,該隊(duì)列管理系統(tǒng)在這種情況下可以丟棄接收到的回調(diào)響應(yīng)。
通過前述實(shí)施例對(duì)本發(fā)明的舉例說明可知,隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留第一回調(diào)消息在分布式消息隊(duì)列中,分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,回調(diào)請(qǐng)求包括:第一回調(diào)消息和第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng),當(dāng)隊(duì)列管理系統(tǒng)在時(shí)間段內(nèi)接收到回調(diào)響應(yīng)時(shí),隊(duì)列管理系統(tǒng)獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí),若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)將第一消息標(biāo)識(shí)對(duì)應(yīng)的第一回調(diào)消息從分布式消息隊(duì)列中刪除掉。由于本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器提供的回調(diào)消息都保存在分布式消息隊(duì)列中,隊(duì)列管理系統(tǒng)也是從分布式消息隊(duì)列中讀取出第一回調(diào)消息,為了保證回調(diào)功能的可靠性,在分布式消息隊(duì)列中仍保存有第一回調(diào)消息,當(dāng)隊(duì)列管理系統(tǒng)從使用方后臺(tái)服務(wù)器獲取到第一消息標(biāo)識(shí)之后才會(huì)刪除分布式消息隊(duì)列中的第一回調(diào)消息。本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器的正常業(yè)務(wù)不會(huì)受到回調(diào)過程的影響,隊(duì)列管理系統(tǒng)通過實(shí)時(shí)維護(hù)分布式消息隊(duì)列可以保證第一回調(diào)消息能夠發(fā)送到使用方后臺(tái)服務(wù)器,因此可以保證回調(diào)功能的可靠性,提高回調(diào)成功率。
前述實(shí)施例介紹了本發(fā)明回調(diào)消息的處理方法,接下來請(qǐng)參閱圖2所示,本發(fā)明另一個(gè)實(shí)施例提供的回調(diào)消息的處理方法,可以包括如下步驟:
201、隊(duì)列管理系統(tǒng)按照先入先出原則從分布式消息隊(duì)列的頭部讀取到第一回調(diào)消息,并保留第一回調(diào)消息在分布式消息隊(duì)列中,分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí)。
其中,分布式消息隊(duì)列中按照先入先出原則保存有提供方后臺(tái)服務(wù)器提供的多個(gè)回調(diào)消息,第一回調(diào)消息處于分布式消息隊(duì)列的頭部,隊(duì)列管理系統(tǒng)可以從分布式消息隊(duì)列的頭部取出第一回調(diào)消息。
202、隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,回調(diào)請(qǐng)求包括:第一回調(diào)消息和第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí)。
203、隊(duì)列管理系統(tǒng)判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)。
其中,步驟202至步驟203與前述實(shí)施例中步驟102至步驟103相類似,此處不再贅述,在步驟203之后可以分別執(zhí)行步驟204和步驟205
204、當(dāng)隊(duì)列管理系統(tǒng)在時(shí)間段內(nèi)沒有接收到回調(diào)響應(yīng)時(shí),隊(duì)列管理系統(tǒng)將第一回調(diào)消息轉(zhuǎn)移到分布式消息隊(duì)列的尾部。
其中,步驟203中隊(duì)列管理系統(tǒng)監(jiān)測(cè)在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng),若在該時(shí)間段沒有收到任何響應(yīng),則確定使用方后臺(tái)服務(wù)器沒有收到回調(diào)請(qǐng)求,那么隊(duì)列管理系統(tǒng)發(fā)送的第一回調(diào)消息就沒有被正確接收,此時(shí)需要將第一回調(diào)消息轉(zhuǎn)移到分布式消息隊(duì)列的尾部。隊(duì)列管理系統(tǒng)繼續(xù)不斷的從分布式消息隊(duì)列中取出回調(diào)消息,并通過步驟201至步驟204繼續(xù)執(zhí)行回調(diào)功能。
205、當(dāng)隊(duì)列管理系統(tǒng)在時(shí)間段內(nèi)接收到回調(diào)響應(yīng)時(shí),隊(duì)列管理系統(tǒng)獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)。
其中,步驟205與前述實(shí)施例中步驟104相類似,此處不再贅述。
206、隊(duì)列管理系統(tǒng)獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)之后,若隊(duì)列管理系統(tǒng)在時(shí)間段結(jié)束時(shí)還沒有獲取到使用方后臺(tái)服務(wù)器發(fā)送的第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)將第一回調(diào)消息轉(zhuǎn)移到分布式消息隊(duì)列的尾部。
其中,隊(duì)列管理系統(tǒng)對(duì)回調(diào)響應(yīng)進(jìn)行解析后,確定回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)不是第一消息標(biāo)識(shí),并且一直到預(yù)置的時(shí)間段結(jié)束,隊(duì)列管理系統(tǒng)仍未收到第一消息標(biāo)識(shí),則說明使用方后臺(tái)服務(wù)器并沒有收到第一回調(diào)消息,隊(duì)列管理系統(tǒng)將第一回調(diào)消息轉(zhuǎn)移到分布式消息隊(duì)列的尾部,以備下次輪詢到該第一回調(diào)消息讀取時(shí)再次發(fā)送給使用方后臺(tái)服務(wù)器。
在本發(fā)明的一些實(shí)施例中,步驟203和/或步驟206隊(duì)列管理系統(tǒng)將第一回調(diào)消息轉(zhuǎn)移到分布式消息隊(duì)列的尾部之后,本發(fā)明實(shí)施例還可以包括如下步驟:
F1、隊(duì)列管理系統(tǒng)重新從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留第一回調(diào)消息在分布式消息隊(duì)列中;
F2、隊(duì)列管理系統(tǒng)重新向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求;
F3、隊(duì)列管理系統(tǒng)重新判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng);
F4、若隊(duì)列管理系統(tǒng)在預(yù)置的時(shí)間段結(jié)束時(shí)還沒有獲取到使用方后臺(tái)服務(wù)器發(fā)送的第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)將第一回調(diào)消息再次轉(zhuǎn)移到分布式消息隊(duì)列的尾部。
其中,隊(duì)列管理系統(tǒng)通過輪詢讀取分布式消息隊(duì)列,若分布式消息隊(duì)列中又輪到讀取第一回調(diào)消息,則執(zhí)行步驟F1,F(xiàn)2至F4的詳細(xì)實(shí)現(xiàn)請(qǐng)參閱前述實(shí)施例。
在本發(fā)明的另一些實(shí)施例中,步驟F3隊(duì)列管理系統(tǒng)重新判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)之后,本發(fā)明實(shí)施例還可以包括如下步驟:
G1、若隊(duì)列管理系統(tǒng)在預(yù)置的時(shí)間段結(jié)束時(shí)還沒有獲取到使用方后臺(tái)服務(wù)器發(fā)送的第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)判斷重新發(fā)送回調(diào)請(qǐng)求的發(fā)送次數(shù)是否超過閾值,若發(fā)送次數(shù)超過閾值,隊(duì)列管理系統(tǒng)將第一回調(diào)消息從分布式消息隊(duì)列中刪除掉,并將第一回調(diào)消息存儲(chǔ)到隊(duì)列管理系統(tǒng)的存儲(chǔ)器中。
其中,為了解決隊(duì)列管理系統(tǒng)對(duì)某個(gè)回調(diào)消息的多次發(fā)送,可以設(shè)置閾值,對(duì)發(fā)送次數(shù)進(jìn)行監(jiān)控,若發(fā)送次數(shù)超過閾值,則隊(duì)列管理系統(tǒng)將第一回調(diào)消息從分布式消息隊(duì)列中刪除掉,并將第一回調(diào)消息存儲(chǔ)到隊(duì)列管理系統(tǒng)的存儲(chǔ)器中。通過對(duì)發(fā)送次數(shù)設(shè)置閾值可以避免對(duì)同一個(gè)回調(diào)消息的多次發(fā)送,可以節(jié)省資源用于發(fā)送其它的回調(diào)消息。
通過以上實(shí)施例對(duì)本發(fā)明實(shí)施例的描述可知,由于本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器提供的回調(diào)消息都保存在分布式消息隊(duì)列中,隊(duì)列管理系統(tǒng)也是按照先入先出原則從分布式消息隊(duì)列中讀取出第一回調(diào)消息,為了保證回調(diào)功能的可靠性,在分布式消息隊(duì)列中仍保存有第一回調(diào)消息,當(dāng)隊(duì)列管理系統(tǒng)從使用方后臺(tái)服務(wù)器獲取到第一消息標(biāo)識(shí)之后才會(huì)刪除分布式消息隊(duì)列中的第一回調(diào)消息,當(dāng)?shù)谝换卣{(diào)消息沒有成功推送時(shí),還可以通過分布式消息隊(duì)列繼續(xù)推送。本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器的正常業(yè)務(wù)不會(huì)受到回調(diào)過程的影響,隊(duì)列管理系統(tǒng)通過實(shí)時(shí)維護(hù)分布式消息隊(duì)列可以保證第一回調(diào)消息能夠發(fā)送到使用方后臺(tái)服務(wù)器,因此可以保證回調(diào)功能的可靠性,提高回調(diào)成功率。
為便于更好的理解和實(shí)施本發(fā)明實(shí)施例的上述方案,下面舉例相應(yīng)的應(yīng)用場(chǎng)景來進(jìn)行具體說明。
請(qǐng)參閱圖2所示,為本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng)的一種實(shí)現(xiàn)場(chǎng)景示意圖。本發(fā)明實(shí)施例提出了如下方案,通過在云服務(wù)的提供方后臺(tái)服務(wù)器和云服務(wù)的使用方后臺(tái)服務(wù)器之間增加一個(gè)隊(duì)列管理系統(tǒng),該隊(duì)列管理系統(tǒng)可以包括:消息隊(duì)列生產(chǎn)者(后續(xù)簡(jiǎn)稱:生產(chǎn)者)、消息隊(duì)列存儲(chǔ)模塊、消息隊(duì)列消費(fèi)者(后續(xù)簡(jiǎn)稱:消費(fèi)者),實(shí)現(xiàn)了可靠的回調(diào)機(jī)制。在正常情況下,由生產(chǎn)者將回調(diào)請(qǐng)求寫入消息隊(duì)列存儲(chǔ)模塊,并由消費(fèi)者取出后送達(dá)云服務(wù)的使用方后臺(tái)服務(wù)器,云服務(wù)的使用方后臺(tái)服務(wù)器向消費(fèi)者確認(rèn)已收到該回調(diào)請(qǐng)求,然后消費(fèi)者發(fā)送回調(diào)請(qǐng)求給消息隊(duì)列管理模塊,消息隊(duì)列存儲(chǔ)模塊在分布式消息隊(duì)列中刪除對(duì)應(yīng)的回調(diào)請(qǐng)求。如果出現(xiàn)異常情況,比如云服務(wù)提供方和云服務(wù)使用方之間的網(wǎng)絡(luò)環(huán)境出現(xiàn)波動(dòng),或者云服務(wù)的使用方后臺(tái)服務(wù)器出現(xiàn)短時(shí)故障,那么消費(fèi)者發(fā)出的回調(diào)請(qǐng)求將得不到云服務(wù)的使用方后臺(tái)服務(wù)器的確認(rèn)。
本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng),可以基于分布式消息隊(duì)列使回調(diào)請(qǐng)求可靠到達(dá)云服務(wù)的使用方后臺(tái)服務(wù)器。該隊(duì)列管理系統(tǒng)中可以包括三個(gè)模塊:消息隊(duì)列生產(chǎn)者、消息隊(duì)列存儲(chǔ)模塊、消息隊(duì)列消費(fèi)者。主要流程如下:
S01、云服務(wù)適用方的客戶端通過發(fā)送消息接口發(fā)送消息給云服務(wù)的提供方后臺(tái)服務(wù)器,提供方后臺(tái)服務(wù)器通過服務(wù)接收到消息,然后云服務(wù)提供方在準(zhǔn)備進(jìn)行回調(diào)時(shí),將回調(diào)請(qǐng)求作為消息內(nèi)容,發(fā)往生產(chǎn)者。
S02、生產(chǎn)者將回調(diào)請(qǐng)求寫入到分布式消息隊(duì)列中。生產(chǎn)者寫入的回調(diào)消息會(huì)被維護(hù)為一個(gè)先入先出的分布式消息隊(duì)列,并且每條回調(diào)消息都會(huì)有一個(gè)消息標(biāo)識(shí),例如該消息標(biāo)識(shí)可以是消息序號(hào),用于唯一標(biāo)識(shí)該回調(diào)消息,一般是一個(gè)無符號(hào)整數(shù)。如圖4所示,比如生產(chǎn)者先后寫入MsgA、MsgB、MsgC共3條消息,那么分布式消息隊(duì)列中的內(nèi)容會(huì)發(fā)生變化,每次寫入一個(gè)回調(diào)消息,則分布式消息隊(duì)列的總長(zhǎng)度會(huì)不斷增加。
S03、云服務(wù)的使用方后臺(tái)服務(wù)器使用WebSocket協(xié)議與消費(fèi)者建立通信連接,然后等待消費(fèi)者的主動(dòng)推送。使用WebSocket連接的目的是使連接的雙方可以自由雙向通信,而不必受到HTTP協(xié)議中1個(gè)請(qǐng)求對(duì)應(yīng)1個(gè)響應(yīng)的限制。消息隊(duì)列存儲(chǔ)模塊中將會(huì)記錄應(yīng)讀取的回調(diào)請(qǐng)求,消費(fèi)者可以在系統(tǒng)恢復(fù)正常后再次讀取出該回調(diào)請(qǐng)求發(fā)送給云服務(wù)的使用方后臺(tái)服務(wù)器。這樣就能避免回調(diào)請(qǐng)求在異常情況下丟失。
本發(fā)明實(shí)施例中,生產(chǎn)者和提供方后臺(tái)服務(wù)器之間約定具體使用的通信接口,使提供方后臺(tái)服務(wù)器不需要關(guān)心消息隊(duì)列的工作原理,生產(chǎn)者可以在內(nèi)部做一些優(yōu)化邏輯,比如將多個(gè)有關(guān)聯(lián)的回調(diào)請(qǐng)求聚合在一起,作為一條消息發(fā)給分布式消息隊(duì)列,從而減少消息數(shù)量,而提供方后臺(tái)服務(wù)器不需要關(guān)心這些優(yōu)化。
S04、消費(fèi)者從分布式消息隊(duì)列中取出回調(diào)消息和對(duì)應(yīng)的消息序號(hào)?;卣{(diào)消息的取出順序和生產(chǎn)者寫入的順序一致。已取出的回調(diào)消息在得到響應(yīng)之前,會(huì)被標(biāo)記為“未響應(yīng)”狀態(tài),這種狀態(tài)下的回調(diào)消息會(huì)繼續(xù)存儲(chǔ)在分布式消息隊(duì)列中,但不會(huì)被讀取。如果在預(yù)定時(shí)間內(nèi)(比如30秒)得到回調(diào)響應(yīng),那么該回調(diào)消息就會(huì)從分布式消息隊(duì)列中刪除,如果在預(yù)定時(shí)間內(nèi)得不到回調(diào)響應(yīng),該回調(diào)消息又會(huì)被設(shè)置為正常狀態(tài)并回到分布式消息隊(duì)列的尾部,便于消費(fèi)者再次從分布式消息隊(duì)列中讀取到該回調(diào)消息。
舉例說明,回調(diào)消息A被讀出后的一定時(shí)間內(nèi)會(huì)處于“未響應(yīng)”狀態(tài)。在這個(gè)狀態(tài)下,如果消費(fèi)者進(jìn)行讀取操作,那么只會(huì)讀到別的回調(diào)消息,不會(huì)讀到回調(diào)消息A;如果分布式消息隊(duì)列中只有回調(diào)消息A,那么消費(fèi)者將等待,如果收到回調(diào)響應(yīng),那么分布式消息隊(duì)列就把回調(diào)消息A刪掉,如果響應(yīng)超時(shí)了,那么回調(diào)消息A會(huì)回復(fù)到普通狀態(tài)以供再次讀取,例如回調(diào)消息A會(huì)回到分布式消息隊(duì)列的尾部,也就是說其它消息都讀完才會(huì)再次讀到回調(diào)消息A。
如步驟S02中所舉的例子,假如消費(fèi)者進(jìn)行1次讀取操作,將會(huì)讀取到MsgA,隨后推送給云服務(wù)的使用方后臺(tái)服務(wù)器。消費(fèi)者立即再進(jìn)行1次讀取操作,將會(huì)讀取到MsgB,隨后推送給云服務(wù)的使用方后臺(tái)服務(wù)器。在MsgA和MsgB各自的響應(yīng)超時(shí)時(shí)間內(nèi),只有MsgB得到了云服務(wù)使用方的響應(yīng),消費(fèi)者將會(huì)通知消息隊(duì)列刪除MsgB,MsgA的狀態(tài)變化由分布式消息隊(duì)列內(nèi)部自行維護(hù)。以上場(chǎng)景所對(duì)應(yīng)的消息隊(duì)列的變化情況如圖5所示。消息隊(duì)列存儲(chǔ)模塊對(duì)分布式消息隊(duì)列的維護(hù)包括消息狀態(tài)的變更(普通、未響應(yīng)),以及響應(yīng)超時(shí)后回到隊(duì)列的位置。是否有其它維護(hù)方式取決于分布式消息隊(duì)列的設(shè)計(jì),比如分布式消息隊(duì)列可以提供配置,由用戶決定響應(yīng)超時(shí)時(shí)間、回到隊(duì)列的位置、若干次響應(yīng)失敗后自動(dòng)丟掉等等。這些對(duì)整個(gè)系統(tǒng)的靈活性、可靠性有影響。
S05、云服務(wù)的使用方后臺(tái)服務(wù)器收到回調(diào)消息后,將消息序號(hào)發(fā)回給消費(fèi)者,表示已收到對(duì)應(yīng)的回調(diào)消息。
S06、消費(fèi)者從分布式消息隊(duì)列中刪除對(duì)應(yīng)的回調(diào)消息。
在以上的流程中,生產(chǎn)者和消費(fèi)者之間是異步的,生產(chǎn)者只負(fù)責(zé)轉(zhuǎn)發(fā)回調(diào)請(qǐng)求,消費(fèi)者只負(fù)責(zé)讀取-推送請(qǐng)求。消費(fèi)者可以采用輪詢的方式檢查隊(duì)列中是否有回調(diào)消息,有的話就讀出來,然后發(fā)送給云服務(wù)的使用方后臺(tái)服務(wù)器,之后又回到輪詢中。
對(duì)消費(fèi)者來講,讀取-推送消息和接收響應(yīng)是兩個(gè)異步的操作。在讀取-推送之后,消費(fèi)者不需要等待云服務(wù)使用方的響應(yīng),直接可以進(jìn)行下一次讀取-推送操作,簡(jiǎn)單的實(shí)現(xiàn)就是輪詢,隊(duì)列為空就等待一定時(shí)間(比如50毫秒),然后再次嘗試讀取。也可能是阻塞式,例如讀取操作,如果隊(duì)列中有消息就馬上讀取到,進(jìn)入發(fā)送請(qǐng)求,如果隊(duì)列為空就一直阻塞在讀取操作中,直到生產(chǎn)者寫入消息了,讀取操作才結(jié)束,并讀到新的回調(diào)消息。
而在消費(fèi)者接收到回調(diào)響應(yīng)后,也不需要關(guān)心該響應(yīng)的消息序號(hào)是否有效,只需要向消息隊(duì)列存儲(chǔ)模塊發(fā)送刪除請(qǐng)求即可,消息隊(duì)列存儲(chǔ)模塊會(huì)檢查其有效性。如果發(fā)生響應(yīng)超時(shí),消費(fèi)者也不需要關(guān)注,消息隊(duì)列存儲(chǔ)模塊會(huì)維護(hù)超時(shí)消息的狀態(tài)變更。消費(fèi)者每次讀到一條消息,消息隊(duì)列同時(shí)返回一個(gè)消息序號(hào),和這條消息存在對(duì)應(yīng)關(guān)系。云服務(wù)的使用方后臺(tái)服務(wù)器在確認(rèn)時(shí),要帶上這個(gè)消息序號(hào),以表明它是在確認(rèn)哪條回調(diào)消息。
本發(fā)明實(shí)施例中,可以使回調(diào)請(qǐng)求在送達(dá)云服務(wù)使用方后才從分布式消息隊(duì)列中刪除,而且可以實(shí)現(xiàn)均勻的回調(diào)請(qǐng)求推送,解決了目前方案中回調(diào)不可靠的缺陷。本發(fā)明實(shí)施例中隊(duì)列管理系統(tǒng)可以使用多種分布式消息存儲(chǔ)系統(tǒng)來實(shí)現(xiàn),例如Apache ActiveMQ、Apache Kafka、RabbitMQ、Redis等。分布式消息隊(duì)列可以保證消息的先后順序,以及支持確認(rèn)機(jī)制,其它存儲(chǔ)系統(tǒng)可能需要額外的邏輯代碼來實(shí)現(xiàn)這些特性。
在本發(fā)明的一些實(shí)施例中,云服務(wù)的提供方后臺(tái)服務(wù)器可以和云服務(wù)的使用方后臺(tái)服務(wù)器約定一個(gè)最大的回調(diào)頻率,以避免回調(diào)請(qǐng)求出現(xiàn)尖峰時(shí)壓垮使用者后臺(tái)。如果生產(chǎn)者的寫入量在短時(shí)間內(nèi)超過了約定的回調(diào)頻率,消費(fèi)者可以暫緩讀取,起到削峰的作用。
如果云服務(wù)的使用方后臺(tái)服務(wù)器長(zhǎng)時(shí)間故障,回調(diào)消息將會(huì)逐漸累積,因此本發(fā)明實(shí)施例中還可以選擇增加一些管理策略以避免消息隊(duì)列被重發(fā)消息填滿。比如多次響應(yīng)失敗(比如10次)的消息不再自動(dòng)添加到消息隊(duì)列尾部,而是存儲(chǔ)到磁盤,在較長(zhǎng)的時(shí)間(比如12小時(shí))后才重新回到消息隊(duì)列尾部,再次響應(yīng)失敗則直接刪除。具體實(shí)現(xiàn)需要消息隊(duì)列存儲(chǔ)模塊的支持,在生產(chǎn)者和消費(fèi)者模塊中添加額外的管理功能。同一個(gè)云服務(wù)會(huì)有多個(gè)使用方,每個(gè)使用方都有自身的回調(diào)接口。本發(fā)明實(shí)施例中還可以選擇在消息隊(duì)列存儲(chǔ)模塊中為每一個(gè)使用方分配一條分布式消息隊(duì)列,而不是將所有使用方的回調(diào)請(qǐng)求都發(fā)往同一個(gè)分布式消息隊(duì)列,這樣更方便監(jiān)控,也方便為不同的隊(duì)列制定專門的管理策略。本發(fā)明實(shí)施例提供的隊(duì)列管理系統(tǒng)在互聯(lián)網(wǎng)云服務(wù)中,通過使用分布式消息隊(duì)列的存儲(chǔ)和確認(rèn)機(jī)制,實(shí)現(xiàn)了可靠的回調(diào)功能。
需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
為便于更好的實(shí)施本發(fā)明實(shí)施例的上述方案,下面還提供用于實(shí)施上述方案的相關(guān)裝置。
請(qǐng)參閱圖6-a所示,本發(fā)明實(shí)施例提供的一種隊(duì)列管理系統(tǒng)600,可以包括:回調(diào)消息讀取模塊601、回調(diào)請(qǐng)求發(fā)送模塊602、判斷模塊603、回調(diào)響應(yīng)解析模塊604和回調(diào)消息管理模塊605,其中,
回調(diào)消息讀取模塊601,用于從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留所述第一回調(diào)消息在所述分布式消息隊(duì)列中,所述分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)所述回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí);
回調(diào)請(qǐng)求發(fā)送模塊602,用于向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,所述回調(diào)請(qǐng)求包括:所述第一回調(diào)消息和所述第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí);
判斷模塊603,用于判斷在預(yù)置的時(shí)間段內(nèi)是否接收到所述使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng);
回調(diào)響應(yīng)解析模塊604,用于當(dāng)所述隊(duì)列管理系統(tǒng)在所述時(shí)間段內(nèi)接收到所述回調(diào)響應(yīng)時(shí),獲取所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí);
回調(diào)消息管理模塊605,用于若所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是所述第一消息標(biāo)識(shí),將所述第一消息標(biāo)識(shí)對(duì)應(yīng)的所述第一回調(diào)消息從所述分布式消息隊(duì)列中刪除掉。
在本發(fā)明的一些實(shí)施例中,所述回調(diào)消息管理模塊605,還用于所述回調(diào)響應(yīng)解析模塊604獲取所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)之后,若所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)不是所述第一消息標(biāo)識(shí),判斷所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息是否已經(jīng)發(fā)送給所述使用方后臺(tái)服務(wù)器;若所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息已經(jīng)發(fā)送給所述使用方后臺(tái)服務(wù)器,將所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息從所述分布式消息隊(duì)列中刪除掉;若所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息還未發(fā)送給所述使用方后臺(tái)服務(wù)器,或所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)對(duì)應(yīng)的回調(diào)消息不存在于所述分布式消息隊(duì)列中,則對(duì)所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)不做處理。
在本發(fā)明的一些實(shí)施例中,所述回調(diào)消息讀取模塊601,具體用于按照先入先出原則從所述分布式消息隊(duì)列的頭部讀取到第一回調(diào)消息。
在本發(fā)明的一些實(shí)施例中,所述回調(diào)消息管理模塊605,還用于所述判斷模塊603判斷在預(yù)置的時(shí)間段內(nèi)是否接收到所述使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)之后,當(dāng)所述隊(duì)列管理系統(tǒng)在所述時(shí)間段內(nèi)沒有接收到所述回調(diào)響應(yīng)時(shí),將所述第一回調(diào)消息轉(zhuǎn)移到所述分布式消息隊(duì)列的尾部。
在本發(fā)明的一些實(shí)施例中,所述回調(diào)消息管理模塊605,還用于所述回調(diào)消息解析模塊604獲取所述回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)之后,若所述隊(duì)列管理系統(tǒng)在所述時(shí)間段結(jié)束時(shí)還沒有獲取到所述使用方后臺(tái)服務(wù)器發(fā)送的第一消息標(biāo)識(shí),將所述第一回調(diào)消息轉(zhuǎn)移到所述分布式消息隊(duì)列的尾部。
在本發(fā)明的一些實(shí)施例中,所述回調(diào)消息讀取模塊601,還用于所述回調(diào)消息管理模塊605將所述第一回調(diào)消息轉(zhuǎn)移到所述分布式消息隊(duì)列的尾部之后,重新從所述分布式消息隊(duì)列中讀取到所述第一回調(diào)消息,并保留所述第一回調(diào)消息在所述分布式消息隊(duì)列中;
所述回調(diào)請(qǐng)求發(fā)送模塊602,還用于重新向使用方后臺(tái)服務(wù)器發(fā)送所述回調(diào)請(qǐng)求;
所述判斷模塊603,還用于重新判斷在預(yù)置的時(shí)間段內(nèi)是否接收到所述使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng);
所述回調(diào)消息管理模塊605,還用于若所述隊(duì)列管理系統(tǒng)在所述時(shí)間段結(jié)束時(shí)還沒有獲取到所述使用方后臺(tái)服務(wù)器發(fā)送的第一消息標(biāo)識(shí),將所述第一回調(diào)消息再次轉(zhuǎn)移到所述分布式消息隊(duì)列的尾部。
在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖6-b所示,所述隊(duì)列管理系統(tǒng)600,還包括:回調(diào)請(qǐng)求控制模塊606,其中,
所述回調(diào)請(qǐng)求控制模塊606,還用于所述判斷模塊603重新判斷在預(yù)置的時(shí)間段內(nèi)是否接收到所述使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng)之后,若所述隊(duì)列管理系統(tǒng)在所述時(shí)間段結(jié)束時(shí)還沒有獲取到所述使用方后臺(tái)服務(wù)器發(fā)送的第一消息標(biāo)識(shí),判斷重新發(fā)送所述回調(diào)請(qǐng)求的發(fā)送次數(shù)是否超過閾值;
所述回調(diào)消息管理模塊605,還用于若所述發(fā)送次數(shù)超過閾值,將所述第一回調(diào)消息從所述分布式消息隊(duì)列中刪除掉,并將所述第一回調(diào)消息存儲(chǔ)到所述隊(duì)列管理系統(tǒng)的存儲(chǔ)器中。
在本發(fā)明的一些實(shí)施例中,所述判斷模塊603,具體用于監(jiān)測(cè)所述隊(duì)列管理系統(tǒng)和所述使用方后臺(tái)服務(wù)器之間建立的WebSocket連接,判斷在所述時(shí)間段內(nèi)是否接收到通過所述WebSocket連接傳送的回調(diào)響應(yīng)。
在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖6-c所示,所述隊(duì)列管理系統(tǒng)600,還包括:消息狀態(tài)管理模塊607,用于所述回調(diào)消息讀取模塊601從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留所述第一回調(diào)消息在所述分布式消息隊(duì)列中之后,將保留在所述分布式消息隊(duì)列中的第一回調(diào)消息標(biāo)記為未響應(yīng)狀態(tài);
所述回調(diào)消息讀取模塊601,還用于從所述分布式消息隊(duì)列中讀取沒有被標(biāo)記為未響應(yīng)狀態(tài)的第二回調(diào)消息,并向所述使用方后臺(tái)服務(wù)器發(fā)送讀取到的第二回調(diào)消息。
在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖6-d所示,所述隊(duì)列管理系統(tǒng)600,還包括:回調(diào)消息生成模塊608,用于從提供方后臺(tái)服務(wù)器獲取到回調(diào)消息,并將獲取到的回調(diào)消息寫入到分布式消息隊(duì)列中。
在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖6-e所示,所述隊(duì)列管理系統(tǒng)600,還包括:回調(diào)消息控制模塊609,用于所述回調(diào)消息讀取模塊601從提供方后臺(tái)服務(wù)器獲取到回調(diào)消息,并將獲取到的回調(diào)消息寫入到分布式消息隊(duì)列中之后,判斷回調(diào)消息寫入所述分布式消息隊(duì)列的寫入頻率是否超過預(yù)置的回調(diào)頻率;若所述寫入頻率超過所述回調(diào)頻率,暫緩從所述分布式消息隊(duì)列中讀取回調(diào)消息。
通過以上對(duì)本發(fā)明實(shí)施例的描述可知,隊(duì)列管理系統(tǒng)從分布式消息隊(duì)列中讀取到第一回調(diào)消息,并保留第一回調(diào)消息在分布式消息隊(duì)列中,分布式消息隊(duì)列中包括:從提供方后臺(tái)服務(wù)器獲取到的至少一個(gè)回調(diào)消息,每個(gè)回調(diào)消息對(duì)應(yīng)有一個(gè)消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)向使用方后臺(tái)服務(wù)器發(fā)送回調(diào)請(qǐng)求,回調(diào)請(qǐng)求包括:第一回調(diào)消息和第一回調(diào)消息對(duì)應(yīng)的第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)判斷在預(yù)置的時(shí)間段內(nèi)是否接收到使用方后臺(tái)服務(wù)器發(fā)送的回調(diào)響應(yīng),當(dāng)隊(duì)列管理系統(tǒng)在時(shí)間段內(nèi)接收到回調(diào)響應(yīng)時(shí),隊(duì)列管理系統(tǒng)獲取回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí),若回調(diào)響應(yīng)中攜帶的消息標(biāo)識(shí)是第一消息標(biāo)識(shí),隊(duì)列管理系統(tǒng)將第一消息標(biāo)識(shí)對(duì)應(yīng)的第一回調(diào)消息從分布式消息隊(duì)列中刪除掉。由于本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器提供的回調(diào)消息都保存在分布式消息隊(duì)列中,隊(duì)列管理系統(tǒng)也是從分布式消息隊(duì)列中讀取出第一回調(diào)消息,為了保證回調(diào)功能的可靠性,在分布式消息隊(duì)列中仍保存有第一回調(diào)消息,當(dāng)隊(duì)列管理系統(tǒng)從使用方后臺(tái)服務(wù)器獲取到第一消息標(biāo)識(shí)之后才會(huì)刪除分布式消息隊(duì)列中的第一回調(diào)消息。本發(fā)明實(shí)施例中提供方后臺(tái)服務(wù)器的正常業(yè)務(wù)不會(huì)受到回調(diào)過程的影響,隊(duì)列管理系統(tǒng)通過實(shí)時(shí)維護(hù)分布式消息隊(duì)列可以保證第一回調(diào)消息能夠發(fā)送到使用方后臺(tái)服務(wù)器,因此可以保證回調(diào)功能的可靠性,提高回調(diào)成功率。
圖7是本發(fā)明實(shí)施例提供的一種隊(duì)列管理系統(tǒng)通過服務(wù)器實(shí)現(xiàn)的結(jié)構(gòu)示意圖,該服務(wù)器1100可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個(gè)或一個(gè)以上中央處理器(central processing units,CPU)1122(例如,一個(gè)或一個(gè)以上處理器)和存儲(chǔ)器1132,一個(gè)或一個(gè)以上存儲(chǔ)應(yīng)用程序1142或數(shù)據(jù)1144的存儲(chǔ)介質(zhì)1130(例如一個(gè)或一個(gè)以上海量存儲(chǔ)設(shè)備)。其中,存儲(chǔ)器1132和存儲(chǔ)介質(zhì)1130可以是短暫存儲(chǔ)或持久存儲(chǔ)。存儲(chǔ)在存儲(chǔ)介質(zhì)1130的程序可以包括一個(gè)或一個(gè)以上模塊(圖示沒標(biāo)出),每個(gè)模塊可以包括對(duì)服務(wù)器中的一系列指令操作。更進(jìn)一步地,中央處理器1122可以設(shè)置為與存儲(chǔ)介質(zhì)1130通信,在服務(wù)器1100上執(zhí)行存儲(chǔ)介質(zhì)1130中的一系列指令操作。
服務(wù)器1100還可以包括一個(gè)或一個(gè)以上電源1126,一個(gè)或一個(gè)以上有線或無線網(wǎng)絡(luò)接口1150,一個(gè)或一個(gè)以上輸入輸出接口1158,和/或,一個(gè)或一個(gè)以上操作系統(tǒng)1141,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。
上述實(shí)施例中由服務(wù)器所執(zhí)行的回調(diào)消息的處理方法步驟可以基于該圖7所示的服務(wù)器結(jié)構(gòu)。
另外需說明的是,以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,本發(fā)明提供的裝置實(shí)施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實(shí)現(xiàn)為一條或多條通信總線或信號(hào)線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲(chǔ)器、專用元器件等來實(shí)現(xiàn)。一般情況下,凡由計(jì)算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來實(shí)現(xiàn),而且,用來實(shí)現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,?duì)本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤,U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
綜上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)上述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。