本發(fā)明涉及網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,特別是涉及一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法及裝置。
背景技術(shù):
分布式系統(tǒng)普遍應(yīng)用于現(xiàn)有的網(wǎng)絡(luò)系統(tǒng)中,尤其是即時(shí)通信系統(tǒng)、云推送系統(tǒng)等。分布式系統(tǒng)中采用多服務(wù)器和多線程對(duì)數(shù)據(jù)尤其是大規(guī)模的數(shù)據(jù)進(jìn)行處理并傳輸,每個(gè)數(shù)據(jù)根據(jù)需求會(huì)傳輸給進(jìn)行相應(yīng)數(shù)據(jù)處理的層級(jí)中的服務(wù)器節(jié)點(diǎn),從而對(duì)其進(jìn)行相應(yīng)的處理。例如,當(dāng)數(shù)據(jù)需要進(jìn)行過(guò)濾和敏感字查詢時(shí),首先在過(guò)濾的層級(jí)中隨機(jī)選擇一個(gè)服務(wù)器節(jié)點(diǎn)對(duì)該數(shù)據(jù)進(jìn)行過(guò)濾處理,然后將過(guò)濾處理后的數(shù)據(jù)傳輸至進(jìn)行敏感字查詢處理的層級(jí),同樣在敏感字查詢處理的層級(jí)中隨機(jī)選擇一個(gè)服務(wù)器節(jié)點(diǎn)對(duì)數(shù)據(jù)進(jìn)行敏感字查詢的處理,最后將數(shù)據(jù)發(fā)送至數(shù)據(jù)接收端,其中,每一層級(jí)都會(huì)有多個(gè)相應(yīng)的服務(wù)器節(jié)點(diǎn),每個(gè)服務(wù)器節(jié)點(diǎn)又同時(shí)會(huì)對(duì)應(yīng)多個(gè)線程。
然而,多個(gè)數(shù)據(jù)在進(jìn)行相應(yīng)地處理之后傳輸給同一數(shù)據(jù)接收端時(shí),由于在數(shù)據(jù)處理的各層級(jí)中是隨機(jī)選擇處理的服務(wù)器節(jié)點(diǎn),因此待處理的多個(gè)數(shù)據(jù)可能分配給不同的服務(wù)器節(jié)點(diǎn),分別對(duì)其進(jìn)行處理,即時(shí)分配在同一服務(wù)器,也可能分配給該服務(wù)器的不同線程,進(jìn)而將數(shù)據(jù)傳輸至數(shù)據(jù)接收端。由于每個(gè)服務(wù)器、同一服務(wù)器節(jié)點(diǎn)的每個(gè)線程處理數(shù)據(jù)的速度是不一樣的,因此每個(gè)數(shù)據(jù)在傳輸過(guò)程中的時(shí)間是不一樣的,這樣,會(huì)帶來(lái)數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與該多個(gè)數(shù)據(jù)發(fā)出的順序不一致的問(wèn)題,而如果多個(gè)數(shù)據(jù)的順序關(guān)系決定信息含義,無(wú)疑使得存在順序關(guān)系的多個(gè)數(shù)據(jù)的正確含義無(wú)法被獲知。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法及裝置,解決了數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與該多個(gè)數(shù)據(jù)發(fā)出的順序不一致的問(wèn)題。具體技術(shù)方案如下:
第一方面,本發(fā)明實(shí)施例提供了一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法,應(yīng)用于目標(biāo)服務(wù)器節(jié)點(diǎn),其中,所述目標(biāo)服務(wù)器節(jié)點(diǎn)為所述分布式系統(tǒng)中的任一服務(wù)器節(jié)點(diǎn);所述方法包括:
接收上一級(jí)節(jié)點(diǎn)發(fā)送的目標(biāo)數(shù)據(jù),其中,所述目標(biāo)數(shù)據(jù)為所述上一級(jí)節(jié)點(diǎn)在獲得所述目標(biāo)數(shù)據(jù)后,判斷出所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)中的固定服務(wù)器節(jié)點(diǎn)為所述目標(biāo)服務(wù)器節(jié)點(diǎn)后所發(fā)送的,其中,所述當(dāng)前層級(jí)為所述目標(biāo)服務(wù)器節(jié)點(diǎn)所在的層級(jí),所述固定服務(wù)器節(jié)點(diǎn)為所述上一級(jí)節(jié)點(diǎn)根據(jù)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的,其中,所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配下一層級(jí)的服務(wù)器節(jié)點(diǎn)的算法;
在對(duì)所述目標(biāo)數(shù)據(jù)執(zhí)行與所述目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)的數(shù)據(jù)處理后,將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,以使得所述固定線程將接收到的所述目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn),所述固定線程為所述目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)預(yù)設(shè)線程分配算法所確定的,所述預(yù)設(shè)線程分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配服務(wù)器節(jié)點(diǎn)中的線程的算法,其中,所述下一級(jí)節(jié)點(diǎn)為數(shù)據(jù)接收端或下一層級(jí)中的服務(wù)器節(jié)點(diǎn),所述下一層級(jí)中的服務(wù)器節(jié)點(diǎn)為根據(jù)所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的、所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的下一層級(jí)中的固定服務(wù)器節(jié)點(diǎn)。
可選地,所述將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程的步驟,包括:
調(diào)用所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程的超文本傳輸協(xié)議http接口或者遠(yuǎn)程過(guò)程調(diào)用協(xié)議rpc接口,向所述固定線程發(fā)送所述目標(biāo)數(shù)據(jù)。
可選地,所述將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程之前,所述方法還包括:
判斷所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前是否可用,如果是,繼續(xù)執(zhí)行所述將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述服務(wù)器節(jié)點(diǎn)中的固定線程的步驟。
可選地,所述方法還包括:
當(dāng)判斷出所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前不可用時(shí),確定所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程,所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程為所述目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)所述預(yù)設(shè)線程分配算法重新確定的;
將所述目標(biāo)數(shù)據(jù)發(fā)送至所述第一線程,以使得所述第一線程將接收到的所述目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn)。
可選地,所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法包括:
哈希算法;或者
互聯(lián)網(wǎng)協(xié)議ip地址分配算法。
可選地,所述哈希算法為一致性哈希算法。
可選地,所述預(yù)設(shè)線程分配算法包括:
哈希算法;或者
互聯(lián)網(wǎng)協(xié)議ip地址分配算法。
可選地,所述哈希算法為一致性哈希算法。
第二方面,本發(fā)明實(shí)施例提供了一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸裝置,應(yīng)用于目標(biāo)服務(wù)器節(jié)點(diǎn),其中,所述目標(biāo)服務(wù)器節(jié)點(diǎn)為所述分布式系統(tǒng)中的任一服務(wù)器節(jié)點(diǎn);所述裝置包括:
接收模塊,用于接收上一級(jí)節(jié)點(diǎn)發(fā)送的目標(biāo)數(shù)據(jù),其中,所述目標(biāo)數(shù)據(jù)為所述上一級(jí)節(jié)點(diǎn)在獲得所述目標(biāo)數(shù)據(jù)后,判斷出所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)中的固定服務(wù)器節(jié)點(diǎn)為所述目標(biāo)服務(wù)器節(jié)點(diǎn)后所發(fā)送的,其中,所述當(dāng)前層級(jí)為所述目標(biāo)服務(wù)器節(jié)點(diǎn)所在的層級(jí),所述固定服務(wù)器節(jié)點(diǎn)為所述上一級(jí)節(jié)點(diǎn)根據(jù)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的,其中,所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配下一層級(jí)的服務(wù)器節(jié)點(diǎn)的算法;
第一發(fā)送模塊,用于在對(duì)所述目標(biāo)數(shù)據(jù)執(zhí)行與所述目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)的數(shù)據(jù)處理后,將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,以使得所述固定線程將接收到的所述目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn),所述固定線程為所述目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)預(yù)設(shè)線程分配算法所確定的,所述預(yù)設(shè)線程分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配服務(wù)器節(jié)點(diǎn)中的線程的算法,其中,所述下一級(jí)節(jié)點(diǎn)為數(shù)據(jù)接收端或下一層級(jí)中的服務(wù)器節(jié)點(diǎn),所述下一層級(jí)中的服務(wù)器節(jié)點(diǎn)為根據(jù)所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的、所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的下一層級(jí)中的固定服務(wù)器節(jié)點(diǎn)。
可選地,所述第一發(fā)送模塊包括:
調(diào)用子模塊,用于調(diào)用所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程的超文本傳輸協(xié)議http接口或者遠(yuǎn)程過(guò)程調(diào)用協(xié)議rpc接口;
第一發(fā)送子模塊,用于向所述固定線程發(fā)送所述目標(biāo)數(shù)據(jù)。
可選地,所述裝置還包括:
判斷模塊,用于在所述第一發(fā)送模塊將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程之前,判斷所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前是否可用,如果是,觸發(fā)所述第一發(fā)送模塊。
可選地,所述裝置還包括:
確定模塊,用于當(dāng)判斷出所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前不可用時(shí),確定所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程,所述第一線程為所述目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)所述預(yù)設(shè)線程分配算法重新確定的;
第二發(fā)送模塊,用于將所述目標(biāo)數(shù)據(jù)發(fā)送至所述第一線程,以使得所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程將接收到的所述目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn)。
可選地,所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法包括:
哈希算法;或者
互聯(lián)網(wǎng)協(xié)議ip地址分配算法。
可選地,所述哈希算法為一致性哈希算法。
可選地,所述預(yù)設(shè)線程分配算法包括:
哈希算法;或者
互聯(lián)網(wǎng)協(xié)議ip地址分配算法。
可選地,所述哈希算法為一致性哈希算法。
本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法中,通過(guò)接收上一級(jí)節(jié)點(diǎn)發(fā)送的數(shù)據(jù),其中,所述數(shù)據(jù)為所述上一級(jí)節(jié)點(diǎn)在獲得所述數(shù)據(jù)后,按照預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法確定出所述目標(biāo)服務(wù)器節(jié)點(diǎn)為所述數(shù)據(jù)對(duì)應(yīng)的固定服務(wù)器節(jié)點(diǎn)后所發(fā)送的;在對(duì)所述數(shù)據(jù)執(zhí)行與所述目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)數(shù)據(jù)處理后,將接收到的所述數(shù)據(jù)發(fā)送至固定線程,以使得所述固定線程將接收到的所述數(shù)據(jù)發(fā)送至所述下一級(jí)節(jié)點(diǎn)??梢?jiàn),通過(guò)本方案,多個(gè)數(shù)據(jù)傳輸至同一數(shù)據(jù)接收端時(shí),所經(jīng)過(guò)的服務(wù)器節(jié)點(diǎn)及線程相同,而服務(wù)器節(jié)點(diǎn)和線程在處理數(shù)據(jù)時(shí)是按照數(shù)據(jù)的接收順序來(lái)處理,這樣,使得數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與所述多個(gè)數(shù)據(jù)發(fā)出的順序一致,從而提高了系統(tǒng)的推送效果以及數(shù)據(jù)接收端的用戶體驗(yàn)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法的一種流程圖;
圖2為本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法的另一種流程圖;
圖3為本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
為了使得數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與該多個(gè)數(shù)據(jù)發(fā)出的順序一致,從而提高系統(tǒng)的推送效果以及數(shù)據(jù)接收端的用戶體驗(yàn),本發(fā)明實(shí)施例提供了一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法及裝置。
下面首先對(duì)本發(fā)明實(shí)施例提供了一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法進(jìn)行介紹。
需要說(shuō)明的是,本發(fā)明實(shí)施例所提供的數(shù)據(jù)傳輸方法應(yīng)用于分布式系統(tǒng)中,與現(xiàn)有技術(shù)相同的是,該分布式系統(tǒng)采用多服務(wù)器和多線程的方式對(duì)數(shù)據(jù)進(jìn)行處理并傳輸,具體的,根據(jù)處理需求每個(gè)數(shù)據(jù)會(huì)傳輸給進(jìn)行相應(yīng)數(shù)據(jù)處理的層級(jí)中的服務(wù)器節(jié)點(diǎn),從而對(duì)其進(jìn)行相應(yīng)的處理,之后通過(guò)服務(wù)器節(jié)點(diǎn)下的線程傳輸至下一層級(jí)或者數(shù)據(jù)接收端。其中,每個(gè)數(shù)據(jù)的處理需求是不一樣的,只需進(jìn)行簡(jiǎn)單處理的數(shù)據(jù)可能只需要經(jīng)過(guò)幾個(gè)層級(jí)甚至一個(gè)層級(jí)的處理就可以發(fā)送至數(shù)據(jù)接收端,而需要進(jìn)行復(fù)雜處理的數(shù)據(jù)可能會(huì)需要經(jīng)過(guò)更多的層級(jí)進(jìn)行數(shù)據(jù)處理。
本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法應(yīng)用于目標(biāo)服務(wù)器節(jié)點(diǎn),需要強(qiáng)調(diào)的是,該目標(biāo)服務(wù)器節(jié)點(diǎn)可以是分布式系統(tǒng)中任一層級(jí)中的任一服務(wù)器節(jié)點(diǎn)。
如圖1所示,本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法,可以包括如下步驟:
s101,接收上一級(jí)節(jié)點(diǎn)發(fā)送的目標(biāo)數(shù)據(jù),其中,該目標(biāo)數(shù)據(jù)為上一級(jí)節(jié)點(diǎn)在獲得目標(biāo)數(shù)據(jù)后,判斷出該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)中的固定服務(wù)器節(jié)點(diǎn)為該目標(biāo)服務(wù)器節(jié)點(diǎn)后所發(fā)送的,其中,當(dāng)前層級(jí)為該目標(biāo)服務(wù)器節(jié)點(diǎn)所在的層級(jí),固定服務(wù)器節(jié)點(diǎn)為上一級(jí)節(jié)點(diǎn)根據(jù)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的,其中,預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配下一層級(jí)的服務(wù)器節(jié)點(diǎn)的算法。
其中,上一級(jí)節(jié)點(diǎn)可以是服務(wù)器節(jié)點(diǎn),該服務(wù)器節(jié)點(diǎn)可以是上一層級(jí)中的處理并傳輸目標(biāo)數(shù)據(jù)的服務(wù)器節(jié)點(diǎn);當(dāng)然,上一級(jí)節(jié)點(diǎn)還可以是數(shù)據(jù)的發(fā)送端,例如即時(shí)通信系統(tǒng)、云推送系統(tǒng)等。
當(dāng)上一級(jí)節(jié)點(diǎn)為上一層級(jí)的服務(wù)器節(jié)點(diǎn)時(shí),該服務(wù)器節(jié)點(diǎn)為傳輸?shù)拿恳粋€(gè)數(shù)據(jù)在當(dāng)前層級(jí)中分配各個(gè)數(shù)據(jù)相對(duì)應(yīng)的固定服務(wù)器節(jié)點(diǎn),以進(jìn)行相應(yīng)地處理和傳輸,分配固定服務(wù)器節(jié)點(diǎn)的依據(jù)可以是所傳輸?shù)臄?shù)據(jù)的接收端,即根據(jù)所傳輸數(shù)據(jù)的接收端分配當(dāng)前層級(jí)的固定服務(wù)器節(jié)點(diǎn),因此,同一數(shù)據(jù)接收端的數(shù)據(jù)可以被分配到當(dāng)前層級(jí)中的同一服務(wù)器節(jié)點(diǎn),當(dāng)然,不同數(shù)據(jù)接收端的數(shù)據(jù)也可能分配到同一服務(wù)器節(jié)點(diǎn)。
并且,在一種具體實(shí)現(xiàn)方式中,上一層級(jí)的服務(wù)器節(jié)點(diǎn)通過(guò)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法來(lái)確定當(dāng)前層級(jí)的固定服務(wù)器節(jié)點(diǎn),預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法可以是互聯(lián)網(wǎng)協(xié)議ip地址分配算法,具體地,根據(jù)數(shù)據(jù)接收端的ip地址進(jìn)行ip區(qū)間劃分,將不同區(qū)間的ip所對(duì)應(yīng)的數(shù)據(jù)接收端劃分給不同的服務(wù)器節(jié)點(diǎn)進(jìn)行處理,而同一區(qū)間內(nèi)的ip所對(duì)應(yīng)的數(shù)據(jù)接收端分配給同一服務(wù)器節(jié)點(diǎn)進(jìn)行處理。示例地,將數(shù)據(jù)接收端的ip劃分為兩個(gè)ip區(qū)間,分別為ip為159.226.1.1-159.226.1.3的區(qū)間以及ip為159.226.1.4-159.226.1.6的區(qū)間,m層級(jí)中有2個(gè)服務(wù)器節(jié)點(diǎn)分別為a服務(wù)器節(jié)點(diǎn)、b服務(wù)器節(jié)點(diǎn),并且,ip區(qū)間159.226.1.1-159.226.1.6中所對(duì)應(yīng)的數(shù)據(jù)接收端所要接收的數(shù)據(jù)都需要經(jīng)過(guò)m層級(jí)進(jìn)行相關(guān)的數(shù)據(jù)處理,因此,可以通過(guò)ip地址分配算法可以將ip區(qū)間159.226.1.1-159.226.1.3所對(duì)應(yīng)的數(shù)據(jù)接收端將要接收的數(shù)據(jù)分配給a服務(wù)器節(jié)點(diǎn),由a服務(wù)器節(jié)點(diǎn)對(duì)數(shù)據(jù)進(jìn)行處理,而將ip區(qū)間159.226.1.4-159.226.1.6所對(duì)應(yīng)的數(shù)據(jù)接收端將要接收的數(shù)據(jù)分配給b服務(wù)器節(jié)點(diǎn),這樣,a服務(wù)器節(jié)點(diǎn)只處理ip為159.226.1.1、159.226.1.2、159.226.1.3所對(duì)應(yīng)的數(shù)據(jù)接收端所接收的數(shù)據(jù),b服務(wù)器節(jié)點(diǎn)只處理ip為為159.226.1.4、159.226.1.5、159.226.1.6所對(duì)應(yīng)的數(shù)據(jù)接收端所接收的數(shù)據(jù)。當(dāng)然,ip地址的區(qū)間劃分并不限于按照連續(xù)ip地址進(jìn)行劃分,還可以隨機(jī)選擇進(jìn)行劃分以及其他的劃分方式。
當(dāng)然,預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法還可以是哈希算法,優(yōu)選地,哈希算法可以為一致性哈希算法,通過(guò)對(duì)每一層級(jí)的服務(wù)器節(jié)點(diǎn)進(jìn)行計(jì)算,進(jìn)而分配給數(shù)據(jù)接收端。示例地,n層級(jí)有3個(gè)服務(wù)器節(jié)點(diǎn)分別為a服務(wù)器節(jié)點(diǎn)、b服務(wù)器節(jié)點(diǎn)、c服務(wù)器節(jié)點(diǎn),同時(shí)有6個(gè)數(shù)據(jù)接收端所要接收的數(shù)據(jù)需要經(jīng)過(guò)n層級(jí)的服務(wù)器節(jié)點(diǎn)進(jìn)行處理,6個(gè)數(shù)據(jù)接收端分別為數(shù)據(jù)接收端1、數(shù)據(jù)接收端2、數(shù)據(jù)接收端3、數(shù)據(jù)接收端4、數(shù)據(jù)接收端5、數(shù)據(jù)接收端6,則可以經(jīng)過(guò)n層級(jí)的上一層級(jí)的服務(wù)器節(jié)點(diǎn)通過(guò)一致性哈希算法將6個(gè)數(shù)據(jù)接收端所要接收的數(shù)據(jù)分配給n層級(jí)中的服務(wù)器節(jié)點(diǎn),例如,將數(shù)據(jù)接收端1和數(shù)據(jù)接收端4所要接收的數(shù)據(jù)分配給a服務(wù)器節(jié)點(diǎn)進(jìn)行處理并傳輸,將數(shù)據(jù)接收端2和數(shù)據(jù)接收端5所要接收的數(shù)據(jù)分配給b服務(wù)器節(jié)點(diǎn)進(jìn)行處理并傳輸,將數(shù)據(jù)接收端3和數(shù)據(jù)接收端6所要接收的數(shù)據(jù)分配給c服務(wù)器節(jié)點(diǎn)進(jìn)行處理并傳輸。當(dāng)然,其他的哈希算法同樣可以作為預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法。而且,其他固定輸入能產(chǎn)生固定輸出的算法也是同樣可以為預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法。
同樣地,當(dāng)上一級(jí)節(jié)點(diǎn)為數(shù)據(jù)的數(shù)據(jù)發(fā)送端時(shí),該數(shù)據(jù)發(fā)送端發(fā)送的數(shù)據(jù)發(fā)送到可以通過(guò)互聯(lián)網(wǎng)協(xié)議ip地址分配算法或哈希算法,尤其是一致性哈希算法,確定當(dāng)前層級(jí)中為各數(shù)據(jù)分配的相對(duì)應(yīng)的固定服務(wù)器節(jié)點(diǎn),并將數(shù)據(jù)發(fā)送至該數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)中的固定服務(wù)器。與上一級(jí)節(jié)點(diǎn)為上一層級(jí)的服務(wù)器節(jié)點(diǎn)的情況類(lèi)似,在此不作贅述。
在上一級(jí)節(jié)點(diǎn)將目標(biāo)數(shù)據(jù)發(fā)送至當(dāng)前層級(jí)中該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)時(shí),可以通過(guò)調(diào)用該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)的http(hypertexttransferprotocol,超文本傳輸協(xié)議)接口或者rpc(remoteprocedurecallprotocol,遠(yuǎn)程過(guò)程調(diào)用協(xié)議)接口,進(jìn)而向該目標(biāo)服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)。示例地,上一級(jí)節(jié)點(diǎn)為節(jié)點(diǎn)a,其中,節(jié)點(diǎn)a可以是服務(wù)器節(jié)點(diǎn),也可以是數(shù)據(jù)發(fā)送端,當(dāng)前層級(jí)的目標(biāo)服務(wù)器節(jié)點(diǎn)為服務(wù)器節(jié)點(diǎn)b,當(dāng)節(jié)點(diǎn)a將數(shù)據(jù)發(fā)送至服務(wù)器節(jié)點(diǎn)b時(shí),節(jié)點(diǎn)a調(diào)用服務(wù)器節(jié)點(diǎn)b的http接口,將數(shù)據(jù)發(fā)送至服務(wù)器節(jié)點(diǎn)b,其中,當(dāng)節(jié)點(diǎn)a為服務(wù)器節(jié)點(diǎn)時(shí),實(shí)質(zhì)上是通過(guò)節(jié)點(diǎn)a中的為該服務(wù)器節(jié)點(diǎn)b所分配的固定線程來(lái)調(diào)用服務(wù)器節(jié)點(diǎn)b的http接口。另外地,可以為該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)的目標(biāo)服務(wù)器節(jié)點(diǎn)建立消息隊(duì)列,通過(guò)消息隊(duì)列的方式將目標(biāo)數(shù)據(jù)發(fā)送至該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)的目標(biāo)服務(wù)器節(jié)點(diǎn)。當(dāng)然,具體實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)姆绞讲⒉粌H限于此。
s102,在對(duì)目標(biāo)數(shù)據(jù)執(zhí)行與目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)的數(shù)據(jù)處理后,將目標(biāo)數(shù)據(jù)發(fā)送至目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,以使得固定線程將接收到的目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn),固定線程為目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)預(yù)設(shè)線程分配算法所確定的,預(yù)設(shè)線程分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配服務(wù)器節(jié)點(diǎn)中的線程的算法,其中,下一級(jí)節(jié)點(diǎn)為數(shù)據(jù)接收端或下一層級(jí)中的服務(wù)器節(jié)點(diǎn),下一層級(jí)中的服務(wù)器節(jié)點(diǎn)為根據(jù)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的、所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的下一層級(jí)中的固定服務(wù)器節(jié)點(diǎn)。
在目標(biāo)服務(wù)器節(jié)點(diǎn)接收到目標(biāo)數(shù)據(jù)之后,可以對(duì)該目標(biāo)數(shù)據(jù)進(jìn)行相對(duì)應(yīng)地?cái)?shù)據(jù)處理,因?yàn)樯弦粚蛹?jí)的服務(wù)器節(jié)點(diǎn)將目標(biāo)數(shù)據(jù)發(fā)送至當(dāng)前層級(jí)的目標(biāo)服務(wù)器節(jié)點(diǎn)的目的是進(jìn)行相應(yīng)地?cái)?shù)據(jù)處理,例如過(guò)濾、敏感字檢查等等,在處理完成之后可以將目標(biāo)數(shù)據(jù)發(fā)送至目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,以使得該固定線程將接收到的目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn)。其中,下一級(jí)節(jié)點(diǎn)可以為下一層級(jí)中的服務(wù)器節(jié)點(diǎn),例如可以是進(jìn)行計(jì)算處理的層級(jí)中的一臺(tái)服務(wù)器,還可以為數(shù)據(jù)接收端,例如用戶的手機(jī)終端等。
與固定服務(wù)器節(jié)點(diǎn)的選擇類(lèi)似,固定線程的選擇是基于所傳輸數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配的,因此,同一數(shù)據(jù)接收端的數(shù)據(jù)可以分配到同一服務(wù)器節(jié)點(diǎn)中的同一線程,當(dāng)然,不同數(shù)據(jù)接收端的數(shù)據(jù)也可能分配到同一線程。而且,傳輸每個(gè)數(shù)據(jù)所對(duì)應(yīng)的固定線程可以是固定服務(wù)器節(jié)點(diǎn)通過(guò)預(yù)設(shè)線程分配算法所確定的,預(yù)設(shè)線程分配算法同樣可以是互聯(lián)網(wǎng)協(xié)議ip地址分配算法、哈希算法,尤其是一致性哈希算法以及其他的固定輸入能產(chǎn)生固定輸出的算法。
舉例而言,具有過(guò)濾處理功能的服務(wù)器節(jié)點(diǎn)a有線程1、線程2,有兩個(gè)數(shù)據(jù)接收端分別為數(shù)據(jù)接收端m和數(shù)據(jù)接收端n,且兩個(gè)數(shù)據(jù)接收端所接收的數(shù)據(jù)都需要進(jìn)行數(shù)據(jù)的過(guò)濾處理,服務(wù)器節(jié)點(diǎn)a為預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法確定的數(shù)據(jù)接收端m和數(shù)據(jù)接收端n的固定服務(wù)器,服務(wù)器節(jié)點(diǎn)a經(jīng)一致性哈希算法確定線程1為數(shù)據(jù)接收端m所接收的數(shù)據(jù)分配的固定線程,線程2為數(shù)據(jù)接收端n所接收的數(shù)據(jù)分配的固定線程,因此,數(shù)據(jù)接收端m所接收的數(shù)據(jù)傳輸?shù)穆窂揭欢ㄊ墙?jīng)過(guò)服務(wù)器節(jié)點(diǎn)a以及線程1,而數(shù)據(jù)接收端n所接收的數(shù)據(jù)傳輸?shù)穆窂揭欢ㄊ墙?jīng)過(guò)服務(wù)器節(jié)點(diǎn)a以及線程2。
在目標(biāo)服務(wù)器節(jié)點(diǎn)將目標(biāo)數(shù)據(jù)發(fā)送至該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程時(shí),可以通過(guò)調(diào)用該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程的http接口或者rpc接口,進(jìn)而向該固定線程發(fā)送數(shù)據(jù)。另外地,可以為該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程建立消息隊(duì)列,通過(guò)消息隊(duì)列的方式將目標(biāo)數(shù)據(jù)發(fā)送至該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程。將數(shù)據(jù)發(fā)送至固定線程的具體實(shí)現(xiàn)方式與上述將數(shù)據(jù)發(fā)送至固定服務(wù)器節(jié)點(diǎn)的具體實(shí)現(xiàn)方式相似,在此不作贅述。
需要說(shuō)明的是,預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法和預(yù)設(shè)線程分配算法都可以是互聯(lián)網(wǎng)協(xié)議ip地址分配算法、哈希算法、尤其是一致性哈希算法以及其他固定輸入能產(chǎn)生固定輸出的算法中的一種,但是預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法和預(yù)設(shè)線程分配算法具體使用哪一種算法并不受彼此的限制,兩者既可以相同也可以不同。舉例而言,可以通過(guò)一致性哈希算法確定相應(yīng)的固定服務(wù)器節(jié)點(diǎn),然后通過(guò)一致性哈希算法繼續(xù)確定相應(yīng)的固定線程;或者,通過(guò)一致性哈希算法確定相應(yīng)的固定服務(wù)器,然后通過(guò)互聯(lián)網(wǎng)協(xié)議ip地址分配算法確定相應(yīng)的固定線程;又或者,通過(guò)互聯(lián)網(wǎng)協(xié)議ip地址分配算法確定相應(yīng)的固定服務(wù)器,然后通過(guò)一致性哈希算法確定相應(yīng)的固定線程等等,各種算法組合的方式都可以。
本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法中,通過(guò)接收上一級(jí)節(jié)點(diǎn)發(fā)送的數(shù)據(jù),其中,所述數(shù)據(jù)為所述上一級(jí)節(jié)點(diǎn)在獲得所述數(shù)據(jù)后,按照預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法確定出所述目標(biāo)服務(wù)器節(jié)點(diǎn)為所述數(shù)據(jù)對(duì)應(yīng)的固定服務(wù)器節(jié)點(diǎn)后所發(fā)送的;在對(duì)所述數(shù)據(jù)執(zhí)行與所述目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)數(shù)據(jù)處理后,將接收到的所述數(shù)據(jù)發(fā)送至固定線程,以使得所述固定線程將接收到的所述數(shù)據(jù)發(fā)送至所述下一級(jí)節(jié)點(diǎn)。這樣,使得數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與所述多個(gè)數(shù)據(jù)發(fā)出的順序一致,從而提高了系統(tǒng)的推送效果以及數(shù)據(jù)接收端的用戶體驗(yàn)。
為了保證在使得數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與所述多個(gè)數(shù)據(jù)發(fā)出的順序一致的同時(shí),具有一定的容錯(cuò)機(jī)制,可以及時(shí)的解決固定服務(wù)器節(jié)點(diǎn)或固定線程損壞的問(wèn)題,本發(fā)明實(shí)施例提供了以下具體實(shí)現(xiàn)方式。
如圖2所示,本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法,可以包括如下步驟:
s201,接收上一級(jí)節(jié)點(diǎn)發(fā)送的目標(biāo)數(shù)據(jù),其中,該目標(biāo)數(shù)據(jù)為上一級(jí)節(jié)點(diǎn)在獲得目標(biāo)數(shù)據(jù)后,判斷出該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)中的固定服務(wù)器節(jié)點(diǎn)為所述目標(biāo)服務(wù)器節(jié)點(diǎn)后所發(fā)送的,其中,當(dāng)前層級(jí)為目標(biāo)服務(wù)器節(jié)點(diǎn)所在的層級(jí),固定服務(wù)器節(jié)點(diǎn)為上一級(jí)節(jié)點(diǎn)根據(jù)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的,其中,預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配下一層級(jí)的服務(wù)器節(jié)點(diǎn)的算法。
本實(shí)施例中,s201與上述實(shí)施例的s101相似,在此不做贅述。
s202,對(duì)目標(biāo)數(shù)據(jù)執(zhí)行與目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)的數(shù)據(jù)處理;
需要說(shuō)明的是,本實(shí)施例中,可以先對(duì)目標(biāo)數(shù)據(jù)進(jìn)行相應(yīng)地?cái)?shù)據(jù)處理,待數(shù)據(jù)處理完成后再進(jìn)行該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程是否可用的判斷;當(dāng)然,還可以先判斷目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程是否可用,然后再進(jìn)行目標(biāo)數(shù)據(jù)的相應(yīng)地?cái)?shù)據(jù)處理;或者,還可以判斷目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程是否可用與目標(biāo)數(shù)據(jù)的數(shù)據(jù)處理同時(shí)進(jìn)行。
s203,判斷目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前是否可用,如果是,執(zhí)行s204,如果否,執(zhí)行s205;
當(dāng)接收到上一級(jí)節(jié)點(diǎn)發(fā)送的目標(biāo)數(shù)據(jù)之后,并發(fā)送至該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程之前,可以對(duì)該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程進(jìn)行判斷,判斷該固定線程是否可用,當(dāng)可用時(shí),則繼續(xù)執(zhí)行將目標(biāo)數(shù)據(jù)發(fā)送至該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,當(dāng)該固定線程不可用時(shí),例如當(dāng)線程損壞或者被占用等不可接收數(shù)據(jù)的情況時(shí),則可以利用預(yù)設(shè)線程分配算法重新確定一個(gè)該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器中的固定線程。在確定固定線程完好的情況下發(fā)出對(duì)應(yīng)的數(shù)據(jù),在判斷出固定線程損壞的情況下重新確定新的固定線程,這樣不僅可以節(jié)省帶寬等資源,而且提高了傳輸效率。
s204,將目標(biāo)數(shù)據(jù)發(fā)送至目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,以使得固定線程將接收到的所述目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn),固定線程為目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)預(yù)設(shè)線程分配算法所確定的,預(yù)設(shè)線程分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配服務(wù)器節(jié)點(diǎn)中的線程的算法,其中,下一級(jí)節(jié)點(diǎn)為數(shù)據(jù)接收端或下一層級(jí)中的服務(wù)器節(jié)點(diǎn),下一層級(jí)中的服務(wù)器節(jié)點(diǎn)為根據(jù)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的、所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的下一層級(jí)中的固定服務(wù)器節(jié)點(diǎn)。
本實(shí)施例中,s204與上述實(shí)施例的s102相似,在此不做贅述。
s205,確定目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程,該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程為目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)預(yù)設(shè)線程分配算法重新確定的;
當(dāng)判斷出目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前不可用時(shí),通過(guò)預(yù)設(shè)線程分配算法重新確定一個(gè)該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,并且該線程成為該目標(biāo)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)接收端所接收的數(shù)據(jù)分配的固定線程。示例地,服務(wù)器節(jié)點(diǎn)m下面有3個(gè)線程分別為線程1、線程2、線程3,服務(wù)器節(jié)點(diǎn)m根據(jù)一致性哈希算法確定線程1為數(shù)據(jù)接收端a的固定線程、線程2為數(shù)據(jù)接收端b的固定線程、線程3為數(shù)據(jù)接收端c的固定線程,當(dāng)線程2損壞不能接收數(shù)據(jù)時(shí),服務(wù)器節(jié)點(diǎn)m通過(guò)一致性哈希算法重新確定線程3為數(shù)據(jù)接收端b的新的固定線程,這樣還是可以保證數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與所述多個(gè)數(shù)據(jù)發(fā)出的順序一致。
s206,將目標(biāo)數(shù)據(jù)發(fā)送至目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程,以使得目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程將接收到的該目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn)。
在確定出目標(biāo)數(shù)據(jù)所對(duì)應(yīng)的目標(biāo)服務(wù)器節(jié)點(diǎn)中的新的固定線程之后,服務(wù)器節(jié)點(diǎn)可以將目標(biāo)數(shù)據(jù)發(fā)送至該新確定的固定線程,由該新確定的固定線程再發(fā)送至下一級(jí)節(jié)點(diǎn),其中,下一級(jí)節(jié)點(diǎn)同樣可以是服務(wù)器節(jié)點(diǎn)或者數(shù)據(jù)接收端。
需要說(shuō)明的是,上述實(shí)施例提供的線程的容錯(cuò)方案同樣適用于服務(wù)器節(jié)點(diǎn),當(dāng)當(dāng)前層級(jí)中的固定服務(wù)器節(jié)點(diǎn)損壞或者不能進(jìn)行相應(yīng)的數(shù)據(jù)處理以及傳輸時(shí),系統(tǒng)可以將該固定服務(wù)器節(jié)點(diǎn)損壞的信息通知該固定服務(wù)器節(jié)點(diǎn)的上一級(jí)節(jié)點(diǎn),該上一級(jí)節(jié)點(diǎn)可以通過(guò)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法重新確定當(dāng)前層級(jí)中其他的服務(wù)器節(jié)點(diǎn)作為新的固定服務(wù)器節(jié)點(diǎn)。示例地,上一層級(jí)中的目標(biāo)數(shù)據(jù)所對(duì)應(yīng)的節(jié)點(diǎn)為上一級(jí)節(jié)點(diǎn)a,當(dāng)前層級(jí)中的該目標(biāo)數(shù)據(jù)所對(duì)應(yīng)的固定服務(wù)器節(jié)點(diǎn)為服務(wù)器節(jié)點(diǎn)b,并且當(dāng)前層級(jí)中還包括服務(wù)器節(jié)點(diǎn)c和服務(wù)器節(jié)點(diǎn)d,當(dāng)服務(wù)器節(jié)點(diǎn)b損壞后,上一層級(jí)中的上一級(jí)節(jié)點(diǎn)a通過(guò)一致性哈希算法再次確定服務(wù)器節(jié)點(diǎn)c為該目標(biāo)數(shù)據(jù)所對(duì)應(yīng)的新的固定服務(wù)器節(jié)點(diǎn)。
本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸方法,不僅保證了數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與所述多個(gè)數(shù)據(jù)發(fā)出的順序一致的同時(shí),還具有一定的容錯(cuò)機(jī)制,可以及時(shí)的解決固定服務(wù)器節(jié)點(diǎn)或固定線程損壞的問(wèn)題,更加有效地提高了系統(tǒng)的推送效果以及用戶體驗(yàn)。
相應(yīng)于上述提供的方法實(shí)施例,本發(fā)明實(shí)施例還提供了一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸裝置,應(yīng)用于目標(biāo)服務(wù)器節(jié)點(diǎn),其中,所述目標(biāo)服務(wù)器節(jié)點(diǎn)為所述分布式系統(tǒng)中的任一服務(wù)器節(jié)點(diǎn);如圖3所示,所述裝置可以包括:
接收模塊310,用于接收上一級(jí)節(jié)點(diǎn)發(fā)送的目標(biāo)數(shù)據(jù),其中,所述目標(biāo)數(shù)據(jù)為所述上一級(jí)節(jié)點(diǎn)在獲得所述目標(biāo)數(shù)據(jù)后,判斷出所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的當(dāng)前層級(jí)中的固定服務(wù)器節(jié)點(diǎn)為所述目標(biāo)服務(wù)器節(jié)點(diǎn)后所發(fā)送的,其中,所述當(dāng)前層級(jí)為所述目標(biāo)服務(wù)器節(jié)點(diǎn)所在的層級(jí),所述固定服務(wù)器節(jié)點(diǎn)為所述上一級(jí)節(jié)點(diǎn)根據(jù)預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的,其中,所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配下一層級(jí)的服務(wù)器節(jié)點(diǎn)的算法;
第一發(fā)送模塊320,用于在對(duì)所述目標(biāo)數(shù)據(jù)執(zhí)行與所述目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)的數(shù)據(jù)處理后,將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程,以使得所述固定線程將接收到的所述目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn),所述固定線程為所述目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)預(yù)設(shè)線程分配算法所確定的,所述預(yù)設(shè)線程分配算法為基于所傳輸數(shù)據(jù)所對(duì)應(yīng)的數(shù)據(jù)接收端來(lái)分配服務(wù)器節(jié)點(diǎn)中的線程的算法,其中,所述下一級(jí)節(jié)點(diǎn)為數(shù)據(jù)接收端或下一層級(jí)中的服務(wù)器節(jié)點(diǎn),所述下一層級(jí)中的服務(wù)器節(jié)點(diǎn)為根據(jù)所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法所確定出的、所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的下一層級(jí)中的固定服務(wù)器節(jié)點(diǎn)。
本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸裝置中,通過(guò)接收上一級(jí)節(jié)點(diǎn)發(fā)送的數(shù)據(jù),其中,所述數(shù)據(jù)為所述上一級(jí)節(jié)點(diǎn)在獲得所述數(shù)據(jù)后,按照預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法確定出所述目標(biāo)服務(wù)器節(jié)點(diǎn)為所述數(shù)據(jù)對(duì)應(yīng)的固定服務(wù)器節(jié)點(diǎn)后所發(fā)送的;在對(duì)所述數(shù)據(jù)執(zhí)行與所述目標(biāo)服務(wù)器節(jié)點(diǎn)相對(duì)應(yīng)數(shù)據(jù)處理后,將接收到的所述數(shù)據(jù)發(fā)送至固定線程,以使得所述固定線程將接收到的所述數(shù)據(jù)發(fā)送至所述下一級(jí)節(jié)點(diǎn)??梢?jiàn),通過(guò)本方案,多個(gè)數(shù)據(jù)傳輸至同一數(shù)據(jù)接收端時(shí),所經(jīng)過(guò)的服務(wù)器節(jié)點(diǎn)及線程相同,而服務(wù)器節(jié)點(diǎn)和線程在處理數(shù)據(jù)時(shí)是按照數(shù)據(jù)的接收順序來(lái)進(jìn)行處理,這樣,使得數(shù)據(jù)接收端接收到的多個(gè)數(shù)據(jù)的順序與所述多個(gè)數(shù)據(jù)發(fā)出的順序一致,從而提高了系統(tǒng)的推送效果以及數(shù)據(jù)接收端的用戶體驗(yàn)。
可選地,在一種具體實(shí)現(xiàn)方式中,所述第一發(fā)送模塊320包括:
調(diào)用子模塊,用于調(diào)用所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程的超文本傳輸協(xié)議http接口或者遠(yuǎn)程過(guò)程調(diào)用協(xié)議rpc接口;
第一發(fā)送子模塊,用于向所述固定線程發(fā)送所述目標(biāo)數(shù)據(jù)。
更進(jìn)一步的,本發(fā)明實(shí)施例提供的一種應(yīng)用于分布式系統(tǒng)的數(shù)據(jù)傳輸裝置還可以包括:
判斷模塊,用于在所述第一發(fā)送模塊將所述目標(biāo)數(shù)據(jù)發(fā)送至所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程之前,判斷所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前是否可用,如果是,觸發(fā)所述第一發(fā)送模塊320。
可選地,在另一種具體實(shí)現(xiàn)方式中,該裝置還可以包括:
確定模塊,用于當(dāng)判斷出所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的所述目標(biāo)服務(wù)器節(jié)點(diǎn)中的固定線程當(dāng)前不可用時(shí),確定所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程,所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程為所述目標(biāo)服務(wù)器節(jié)點(diǎn)根據(jù)所述預(yù)設(shè)線程分配算法重新確定的;
第二發(fā)送模塊,用于將所述目標(biāo)數(shù)據(jù)發(fā)送至所述第一線程,以使得所述目標(biāo)數(shù)據(jù)對(duì)應(yīng)的第一線程將接收到的所述目標(biāo)數(shù)據(jù)發(fā)送至下一級(jí)節(jié)點(diǎn)。
可選地,在另一種具體實(shí)現(xiàn)方式中,所述預(yù)設(shè)服務(wù)器節(jié)點(diǎn)分配算法包括:
哈希算法;或者
互聯(lián)網(wǎng)協(xié)議ip地址分配算法。
優(yōu)選地,所述哈希算法可以為一致性哈希算法。
可選地,在另一種具體實(shí)現(xiàn)方式中,所述預(yù)設(shè)線程分配算法包括:
哈希算法;或者
互聯(lián)網(wǎng)協(xié)議ip地址分配算法。
優(yōu)選地,所述哈希算法可以為一致性哈希算法。
對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用相關(guān)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。