欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒ā⒀b置和系統(tǒng)的制作方法

文檔序號:7779256閱讀:406來源:國知局
一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒?、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒ā⒀b置和系統(tǒng)。所述方法包括:將發(fā)送方機房的待發(fā)送數(shù)據(jù)放入發(fā)送緩存中;向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。本發(fā)明的技術(shù)方案,由于發(fā)送方會根據(jù)接收方的能力進行數(shù)據(jù)傳輸,因此可以減少數(shù)據(jù)傳輸失敗的概率,進而減少數(shù)據(jù)重傳的次數(shù),提高了數(shù)據(jù)傳輸?shù)男省?br> 【專利說明】一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒ā⒀b置和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信【技術(shù)領(lǐng)域】,具體涉及一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒ê?、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]在如今的信息社會的背景下,各個互聯(lián)網(wǎng)公司以其他大型企業(yè)幾乎都會存儲著大量的信息數(shù)據(jù)。當(dāng)公司業(yè)務(wù)較廣,數(shù)據(jù)存儲分布在不同的地域時,不可避免的會需要進行跨機房的數(shù)據(jù)傳輸。
[0003]而在跨機房數(shù)據(jù)傳輸時,面臨的主要問題是:數(shù)據(jù)在跨機房的公網(wǎng)傳輸時,失敗率較高,常常會丟失一定比例的數(shù)據(jù),特別是將電信機房的數(shù)據(jù)傳輸?shù)铰?lián)通機房(反之亦然),這種跨運營供應(yīng)商時的數(shù)據(jù)傳輸時,失敗率會更高,而且傳輸速度更慢;
[0004]現(xiàn)有的解決跨機房數(shù)據(jù)傳輸?shù)姆椒ㄊ?將數(shù)據(jù)傳輸至別的機房,如果數(shù)據(jù)傳輸失敗,則進行無限或有限次數(shù)的數(shù)據(jù)重傳,當(dāng)多次數(shù)據(jù)傳輸均告失敗時,則放棄傳輸那條數(shù)據(jù)。
[0005]現(xiàn)有的跨機房數(shù)據(jù)傳輸方法有如下不足:若數(shù)據(jù)傳輸失敗是因為網(wǎng)絡(luò)擁塞或者接收端處理能力限制,此時再進行大量的數(shù)據(jù)重傳,可能會使得網(wǎng)絡(luò)擁塞加劇或者導(dǎo)致接收端宕機,從而導(dǎo)致更多的數(shù)據(jù)傳輸失敗。

【發(fā)明內(nèi)容】

[0006]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒?、裝置和系統(tǒng)。
[0007]依據(jù)本發(fā)明的一個方面,提供了一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒?,包?
[0008]將發(fā)送方機房的待發(fā)送數(shù)據(jù)放入發(fā)送緩存中;
[0009]向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;
[0010]根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
[0011]可選地,所述根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)包括:
[0012]當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;
[0013]當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。
[0014]可選地,所述接收緩存的狀態(tài)信息包括:接收緩存數(shù)量、接收緩存總?cè)萘亢徒邮站彺娴耐掏铝俊?br> [0015]可選地,該方法進一步包括:
[0016]當(dāng)接收到接收方機房側(cè)發(fā)送的接收確認消息時,從發(fā)送緩存中刪除對應(yīng)的數(shù)據(jù)。[0017]可選地,該方法進一步包括:
[0018]當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,將發(fā)送緩存中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0019]可選地,所述將發(fā)送緩存中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送包括:
[0020]所述發(fā)送緩存采用redis中排序集合實現(xiàn),其中數(shù)據(jù)作為value,時間戳作為key存儲到所述排序集合中,排序集合中的數(shù)據(jù)按照key值大小進行排序;當(dāng)發(fā)送數(shù)據(jù)時,從排序集合中取出key值小于當(dāng)前時間戳的數(shù)據(jù)進行發(fā)送;
[0021]數(shù)據(jù)延時發(fā)送是在該數(shù)據(jù)的原key值上加上一個延時時間作為該數(shù)據(jù)的新key值。
[0022]可選地,該方法進一步包括:
[0023]獲取包含各機房間傳輸速度的全局路由表;
[0024]在所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;
[0025]如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;
[0026]如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
[0027]可選地,該方法進一步包括:將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上;或者,將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上,且進行主從備份。
[0028]可選地,該方法進一步包括:
[0029]當(dāng)發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中,
[0030]當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息,則先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0031]可選地,所述根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑包括:
[0032]優(yōu)先選擇中轉(zhuǎn)節(jié)點少于第三預(yù)設(shè)值路徑,其次選擇傳輸耗時不高于第四預(yù)設(shè)值的路徑。
[0033]可選地,所述根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達包括:
[0034]根據(jù)全局路由表查看發(fā)送方機房到接收方機房的傳輸速度是否大于第五預(yù)設(shè)值,是則判斷發(fā)送方機房到接收方機房之間可達,否則判斷發(fā)送方機房到接收方機房之間不可達。
[0035]可選地,所述獲取包含各機房間傳輸速度的全局路由表包括:
[0036]定期測試發(fā)送方機房到其他各機房的傳輸速度,保存測試結(jié)果,并將測試結(jié)果分別發(fā)送給其他各機房;
[0037]接收其他各機房的測試結(jié)果,與所保存的測試結(jié)果進行整合,獲得全局路由表。
[0038]依據(jù)本發(fā)明的另一方面,提供了一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置,該裝置包括:[0039]發(fā)送緩存單元,適于緩存發(fā)送方機房的待發(fā)送數(shù)據(jù);
[0040]發(fā)送數(shù)據(jù)處理單元,適于向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
[0041]可選地,所述發(fā)送數(shù)據(jù)處理單元,適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;以及適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。
[0042]可選地,所述發(fā)送數(shù)據(jù)處理單元接收的所述接收緩存的狀態(tài)信息包括:接收緩存數(shù)量、接收緩存總?cè)萘亢徒邮站彺娴耐掏铝俊?br> [0043]可選地,所述發(fā)送數(shù)據(jù)處理單元,進一步適于當(dāng)接收到接收方機房側(cè)發(fā)送的接收確認消息時,從發(fā)送緩存中刪除對應(yīng)的數(shù)據(jù)。
[0044]可選地,所述發(fā)送數(shù)據(jù)處理單元,進一步適于當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,將發(fā)送緩存單元中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0045]可選地,所述發(fā)送緩存單元采用redis中排序集合實現(xiàn);
[0046]所述發(fā)送數(shù)據(jù)處理單元,進一步適于將數(shù)據(jù)作為value,時間戳作為key存儲到所述排序集合中,排序集合中的數(shù)據(jù)按照key值大小進行排序,當(dāng)發(fā)送數(shù)據(jù)時,從排序集合中取出key值小于當(dāng)前時間戳的數(shù)據(jù)進行發(fā)送,當(dāng)需要進行數(shù)據(jù)延時發(fā)送時,在該數(shù)據(jù)的原key值上加上一個延時時間作為該數(shù)據(jù)的新key值。
[0047]可選地,該裝置進一步包括:路由表獲取單元,適于獲取包含各機房間傳輸速度的全局路由表;
[0048]所述發(fā)送數(shù)據(jù)處理單元,適于在向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
[0049]可選地,路由表獲取單元,適于將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上;或者,適于將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上,且進行主從備份。
[0050]可選地,所述發(fā)送數(shù)據(jù)處理單元,進一步適于在發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中,當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0051]可選地,所述發(fā)送數(shù)據(jù)處理單元,適于在根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑時,優(yōu)先選擇中轉(zhuǎn)節(jié)點少于第三預(yù)設(shè)值路徑,其次選擇傳輸耗時不高于第四預(yù)設(shè)值的路徑。[0052]可選地,所述發(fā)送數(shù)據(jù)處理單元,適于根據(jù)全局路由表查看發(fā)送方機房到接收方機房的傳輸速度是否大于第五預(yù)設(shè)值,是則判斷發(fā)送方機房到接收方機房之間可達,否則判斷發(fā)送方機房到接收方機房之間不可達。
[0053]可選地,所述路由表獲取單元,適于定期測試發(fā)送方機房到其他各機房的傳輸速度,保存測試結(jié)果,并將測試結(jié)果分別發(fā)送給其他各機房;以及接收其他各機房的測試結(jié)果,與所保存的測試結(jié)果進行整合,獲得全局路由表。
[0054]依據(jù)本發(fā)明的又一個方面,提供了一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)南到y(tǒng),其中,該系統(tǒng)包括:設(shè)置在接收方機房中的如上述任一項所述的實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置,以及設(shè)置在接收方機房中的接收數(shù)據(jù)處理裝置;所述接收數(shù)據(jù)處理裝置包括:
[0055]接收緩存單元,適于緩存接收方機房所接收的數(shù)據(jù);
[0056]接收數(shù)據(jù)處理單元,適于在接收到發(fā)送方機房側(cè)的準備接收數(shù)據(jù)的通知時,向發(fā)送方機房側(cè)返回接收緩存單元的狀態(tài)信息。
[0057]可選地,所述接收數(shù)據(jù)處理單元,進一步適于在接收到發(fā)送方機房側(cè)發(fā)送的一條數(shù)據(jù)時,向發(fā)送方機房側(cè)返回接收確認消息。
[0058]根據(jù)本發(fā)明的這種將發(fā)送方機房的待發(fā)送數(shù)據(jù)放入發(fā)送緩存中;向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)的技術(shù)方案,由于發(fā)送方會根據(jù)接收方的能力進行數(shù)據(jù)傳輸,因此可以減少數(shù)據(jù)傳輸失敗的概率,進而減少數(shù)據(jù)重傳的次數(shù),提高了數(shù)據(jù)傳輸?shù)男省?br> [0059]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
【專利附圖】

【附圖說明】
[0060]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0061]圖1示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒ǖ牧鞒虉D;
[0062]圖2示出了根據(jù)本發(fā)明一個實施例的A機房向B機房傳輸數(shù)據(jù)的流程圖;
[0063]圖3示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置的結(jié)構(gòu)圖;
[0064]圖4示出了根據(jù)本發(fā)明又一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置的結(jié)構(gòu)圖;
[0065]圖5示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)南到y(tǒng)的示意圖?!揪唧w實施方式】
[0066]前面提到各個互聯(lián)網(wǎng)公司以其他大型企業(yè)幾乎都會存儲著大量的信息數(shù)據(jù)。當(dāng)公司業(yè)務(wù)較廣,數(shù)據(jù)存儲分布在不同的地域時,不可避免的會需要進行跨機房的數(shù)據(jù)傳輸。此外還有很多需要進行跨機房進行數(shù)據(jù)傳輸?shù)膱鼍啊?br> [0067]Web蜘蛛(爬蟲)通常是通過網(wǎng)絡(luò)請求,訪問互聯(lián)網(wǎng)上的各個站點,來獲取一些有價值的信息。當(dāng)需要訪問的站點或網(wǎng)頁數(shù)量較多時,單個機器或單個機房中蜘蛛的獲取信息的能力將非常有限。這個時候就會需要使用到多個機器或多個機房的蜘蛛,來對大量的站點及網(wǎng)頁進行抓取。例如,在白名單的業(yè)務(wù)(例如安全網(wǎng)址白名單、安全文件白名單等等)中,蜘蛛進程由于IP問題,需要部署在多個IP環(huán)境下,這樣蜘蛛進程基本就分布于各個機房。而對這些蜘蛛的任務(wù)分配程序卻只部署在一個指定的機房中,任務(wù)分配程序需要非常頻繁的將任務(wù)分配至各個機房的蜘蛛抓取進程。而所述指定機房到其他機房,電信到網(wǎng)通跨公網(wǎng)的傳輸會導(dǎo)致任務(wù)分配經(jīng)常丟失。本例中,蜘蛛任務(wù)分配程序所在的機房是發(fā)送方機房,蜘蛛抓取程序所在的機房是接收方機房。
[0068]因此本發(fā)明的實施例中提供了實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆桨?,以解決現(xiàn)有的跨機房數(shù)據(jù)傳輸中存在的問題。
[0069]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達給本領(lǐng)域的技術(shù)人員。
[0070]圖1示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒ǖ牧鞒虉D。如圖1所示,該方法包括:
[0071]步驟S110,將發(fā)送方機房的待發(fā)送數(shù)據(jù)放入發(fā)送緩存中。
[0072]在本發(fā)明的實施例中,為機房設(shè)置的發(fā)送緩存,用來緩存需要發(fā)送到其他機房的數(shù)據(jù)。
[0073]步驟S120,向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息。
[0074]在本發(fā)明的實施例中,接收緩存的狀態(tài)信息表示接收緩存的負荷狀態(tài)。
[0075]步驟S130,根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
[0076]圖1所示方法的技術(shù)方案中,由于發(fā)送方會根據(jù)接收方的能力進行數(shù)據(jù)傳輸,因此可以減少數(shù)據(jù)傳輸失敗的概率,進而減少數(shù)據(jù)重傳的次數(shù),提高了數(shù)據(jù)傳輸?shù)男省?br> [0077]在本發(fā)明的一個實施例中,圖1所示方法中的步驟S130所述根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)包括:當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。例如,該第一預(yù)設(shè)值可以設(shè)定為接收方機房的接收緩存的總存儲容量的80%。
[0078]在本發(fā)明的一個實施例中,接收緩存的狀態(tài)信息包括:接收緩存數(shù)量、接收緩存總?cè)萘亢徒邮站彺娴耐掏铝俊8鶕?jù)接收緩存的總?cè)萘亢徒邮站彺娴耐掏铝靠梢杂嬎愠鼋邮站彺娴呢摵伞?br> [0079]在本發(fā)明的一個實施例中,圖1所示方法進一步包括:當(dāng)接收到接收方機房側(cè)發(fā)送的接收確認消息時,從發(fā)送緩存中刪除對應(yīng)的數(shù)據(jù)。這樣可以確保發(fā)送方的數(shù)據(jù)都能被無誤地發(fā)送出去。
[0080]在本發(fā)明的一個實施例中,圖1所示方法進一步包括:當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,將發(fā)送緩存中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。該第二預(yù)設(shè)值可以根據(jù)實際的網(wǎng)絡(luò)帶寬等因素進行確定,其單位可以是數(shù)據(jù)條數(shù)。例如當(dāng)有已發(fā)出的100條數(shù)據(jù)未收到接收確認消息時進行延時發(fā)送或者降低發(fā)送頻率。
[0081]在本發(fā)明的一個實施例中,所述將發(fā)送緩存中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送包括:發(fā)送緩存采用redis中排序集合實現(xiàn),其中數(shù)據(jù)作為value,時間戳作為key存儲到所述排序集合中,排序集合中的數(shù)據(jù)按照key值大小進行排序;每個發(fā)送數(shù)據(jù)時,從排序集合中取出key值小于當(dāng)前時間戳的數(shù)據(jù)進行發(fā)送;數(shù)據(jù)延時發(fā)送是在該數(shù)據(jù)的原key值上加上一個延時時間作為該數(shù)據(jù)的新key值,該數(shù)據(jù)以新的key值進行排序。
[0082]下面列舉一個具體的實施例對上述基于緩存的跨機房數(shù)據(jù)傳輸方法進行說明:
[0083]每個機房設(shè)置一個傳輸數(shù)據(jù)的client,一個用于緩存本機房待傳輸數(shù)據(jù)的發(fā)送緩存;同時每個機房設(shè)置一個接收數(shù)據(jù)的worker,以及用于緩存本機房接收數(shù)據(jù)的接收緩存。當(dāng)A機房的某臺機器需要傳輸數(shù)據(jù)至B機房時,A機房的client A將待傳輸?shù)臄?shù)據(jù)寫至A機房的發(fā)送緩存A中,并告知目的機房B及相應(yīng)的機器。目的機房B的worker B收到A機房的通知之后,將自己機房的接收緩存B的狀態(tài)反饋給A機房。A機房收到B機房的反饋之后,就能根據(jù)反饋信息,決定數(shù)據(jù)發(fā)送的策略,具體為:
[0084]1、若B機房的接收緩存B的負荷低于接收緩存B的存儲容量的80%,則A機房的client A會立即將數(shù)據(jù)傳輸給B機房;
[0085]2、若B機房的接收緩存B的負荷高于或等于接收緩存B的存儲容量的80%,則A機房的client A延時將數(shù)據(jù)傳輸給B機房。
[0086]同時,A機房傳輸給B機房的數(shù)據(jù),只有在收到B機房的確認消息之后,client A才將該條數(shù)據(jù)從發(fā)送緩存A中刪除;若A機房傳輸給B機房的數(shù)據(jù)中,有大量數(shù)據(jù)未收到確認消息,則可能是A到B的網(wǎng)絡(luò)發(fā)生擁塞,或者別的原因?qū)е聜鬏敂?shù)據(jù)丟失,這個時候,clientA會將A機房傳輸給B機房的數(shù)據(jù)延時發(fā)送或者降低發(fā)送頻率。
[0087]可見,在上述種方法中,發(fā)送端會根據(jù)接收端的接收能力進行發(fā)送速率的調(diào)整,并且當(dāng)網(wǎng)絡(luò)傳輸大量失敗時,進行延時重傳。
[0088]此外,現(xiàn)有的跨機房數(shù)據(jù)傳輸還面臨如下問題:需要進行數(shù)據(jù)傳輸?shù)膬蓚€機房間,網(wǎng)絡(luò)發(fā)生中斷等故障時,傳輸?shù)臄?shù)據(jù)將會全部失敗。如果兩個機房間的網(wǎng)絡(luò)光纖斷了,則重傳的數(shù)據(jù)依然會失敗,大量的重傳只會增加無用功,這時現(xiàn)有的傳輸方法只能等待光纖再次恢復(fù)才能夠重傳成功。
[0089]為此,本發(fā)明還提供了如下的基于自適應(yīng)路由的數(shù)據(jù)傳輸機制,具體包括:獲取包含各機房間傳輸速度的全局路由表;在所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
[0090]在本發(fā)明的一個實施例中,該方法進一步包括:將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上;或者,將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上,且進行主從備份。
[0091]在本發(fā)明的一個實施例中,所述根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達包括:根據(jù)全局路由表查看發(fā)送方機房到接收方機房的傳輸速度是否大于第五預(yù)設(shè)值,是則判斷為可達,否則判斷為不可達。一般,該第五預(yù)設(shè)值要遠小于兩個機房間正常情況下的傳輸速度。
[0092]在本發(fā)明的一個實施例中,該方法進一步包括:在發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中:當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息,則先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0093]其中,所述根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑包括:優(yōu)先選擇中轉(zhuǎn)節(jié)點少于第三預(yù)設(shè)值路徑,如果不存在,其次選擇傳輸耗時不高于第四預(yù)設(shè)值的路徑。
[0094]在本發(fā)明的一個實施例中,所述獲取包含各機房間傳輸速度的全局路由表包括:定期測試發(fā)送方機房到其他各機房的傳輸速度,保存測試結(jié)果,并將測試結(jié)果分別發(fā)送給其他各機房;接收其他各機房的測試結(jié)果,與所保存的測試結(jié)果進行整合,獲得全局路由表。
[0095]例如:傳輸一定大小的數(shù)據(jù)時,A機房到B機房所需的時間為ab,B機房到C機房所需的時間為be, B機房到D機房所需的時間為bd,則整合后,A機房中的路由表為A機房到B機房所需時間為ab,A機房從B機房轉(zhuǎn)C機房的時間為abc,A機房從B機房轉(zhuǎn)D機房的時間為abd。以此類推。
[0096]以下仍以一個具體實施例為例對上述方案進行說明:每個機房的client都定期測試本機房到其他所有機房之間的數(shù)據(jù)傳輸速度,并將測試結(jié)果保存下來,同時將這份測試結(jié)果發(fā)送給其他可達的所有機房。這樣每個機房都會保存一份全局的包含各機房間傳輸速度的路由表,這里稱為全局路由表。當(dāng)A機房向B機房傳輸數(shù)據(jù)時的具體流程如圖2所
/j、l Ο
[0097]圖2示出了根據(jù)本發(fā)明一個實施例的Α機房向Β機房傳輸數(shù)據(jù)的流程圖。如圖2所示,包括:
[0098]步驟S201,A機房的client A先查詢?nèi)致酚杀恚?br> [0099]步驟S202,根據(jù)全局路由表判斷A機房到B機房是否直接可達,是則執(zhí)行步驟203,否則執(zhí)行步驟S205。
[0100]步驟S203,client A將A機房的數(shù)據(jù)向B機房傳輸。
[0101]本步驟中的具體傳輸方案,可參考圖1中的方法。
[0102]步驟S204,判斷是否有大量數(shù)據(jù)傳輸失敗,是則執(zhí)行步驟S205,否則數(shù)據(jù)傳輸完畢,結(jié)束流程。
[0103]本步驟中,可以設(shè)定一個閾值,如果有超過該閾值的數(shù)據(jù)未接收到接收確認消息,則認為有大量數(shù)據(jù)傳輸失敗。
[0104]步驟S205,根據(jù)所述全局路由表查找一條通過其他機房中轉(zhuǎn)能夠?qū)機房的數(shù)據(jù)傳輸?shù)紹機房的路徑。
[0105]步驟S206,判斷是否能夠查找到可用路徑,是則執(zhí)行步驟S207,否則執(zhí)行步驟S208。
[0106]例如,存在通過C機房中轉(zhuǎn)的路徑。
[0107]步驟S207,將A機房的數(shù)據(jù)通過路徑A-C-B進行傳輸。數(shù)據(jù)傳輸完畢,結(jié)束流程。
[0108]在本步驟中,需要在數(shù)據(jù)中攜帶路徑信息,已使得中轉(zhuǎn)機房能夠根據(jù)該路徑信息轉(zhuǎn)發(fā)數(shù)據(jù)。
[0109]步驟S208,client A延時發(fā)送數(shù)據(jù)或者降低發(fā)送速率。數(shù)據(jù)傳輸完畢,結(jié)束流程。
[0110]上述方法中,如果A機房與B機房之間的網(wǎng)絡(luò)中斷,則會尋找一個C機房,將數(shù)據(jù)由A機房傳輸?shù)紺機房,再由C機房傳輸?shù)紹機房。而不需要被動地等待A機房與B機房之間的網(wǎng)絡(luò)恢復(fù)。
[0111]圖3示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置的結(jié)構(gòu)圖。如圖3所示,該實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置300包括:
[0112]發(fā)送緩存單元301,適于緩存發(fā)送方機房的待發(fā)送數(shù)據(jù);
[0113]發(fā)送數(shù)據(jù)處理單元302,適于向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
[0114]圖3所示裝置中,由于發(fā)送方會根據(jù)接收方的能力進行數(shù)據(jù)傳輸,因此可以減少數(shù)據(jù)傳輸失敗的概率,進而減少數(shù)據(jù)重傳的次數(shù),提高了數(shù)據(jù)傳輸?shù)男省?br> [0115]圖4示出了根據(jù)本發(fā)明又一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置的結(jié)構(gòu)圖。如圖4所示,該實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置400包括:
[0116]發(fā)送緩存單元401,適于緩存發(fā)送方機房的待發(fā)送數(shù)據(jù);
[0117]發(fā)送數(shù)據(jù)處理單元402,適于向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
[0118]在本發(fā)明的一個實施例中,所述發(fā)送數(shù)據(jù)處理單元402,適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;以及適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。例如,該第一預(yù)設(shè)值可以設(shè)定為接收方機房的接收緩存的總存儲容量的80%。
[0119]在本發(fā)明的一個實施例中,所述發(fā)送數(shù)據(jù)處理單元接收的所述接收緩存的狀態(tài)信息包括:接收緩存數(shù)量、接收緩存總?cè)萘亢徒邮站彺娴耐掏铝俊8鶕?jù)接收緩存的總?cè)萘亢徒邮站彺娴耐掏铝靠梢杂嬎愠鼋邮站彺娴呢摵伞?br> [0120]在本發(fā)明的一個實施例中,所述發(fā)送數(shù)據(jù)處理單元402,進一步適于當(dāng)接收到接收方機房側(cè)發(fā)送的接收確認消息時,從發(fā)送緩存中刪除對應(yīng)的數(shù)據(jù)。這樣可以確保發(fā)送方的數(shù)據(jù)都能被無誤地發(fā)送出去。
[0121]在本發(fā)明的一個實施例中,所述發(fā)送數(shù)據(jù)處理單元402,進一步適于當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,將發(fā)送緩存單元中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。例如當(dāng)有已發(fā)出的100條數(shù)據(jù)未收到接收確認消息時進行延時發(fā)送或者降低發(fā)送頻率。
[0122]在本發(fā)明的一個實施例中,所述發(fā)送緩存單元401采用redis中排序集合實現(xiàn);所述發(fā)送數(shù)據(jù)處理單元402,進一步適于將數(shù)據(jù)作為value,時間戳作為key存儲到所述排序集合中,排序集合中的數(shù)據(jù)按照key值大小進行排序,當(dāng)發(fā)送數(shù)據(jù)時,從排序集合中取出key值小于當(dāng)前時間戳的數(shù)據(jù)進行發(fā)送,當(dāng)需要進行數(shù)據(jù)延時發(fā)送時,在該數(shù)據(jù)的原key值上加上一個延時時間作為該數(shù)據(jù)的新key值。
[0123]在本發(fā)明的一個實施例中,所該裝置400進一步包括:路由表獲取單元403,適于獲取包含各機房間傳輸速度的全局路由表;
[0124]所述發(fā)送數(shù)據(jù)處理單元402,適于在向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
[0125]在本發(fā)明的一個實施例中,路由表獲取單元403,適于將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上;或者,適于將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上,且進行主從備份。
[0126]在本發(fā)明的一個實施例中,所述發(fā)送數(shù)據(jù)處理單元402,進一步適于在發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中,當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0127]在本發(fā)明的一個實施例中,所述發(fā)送數(shù)據(jù)處理單元402,適于在根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑時,優(yōu)先選擇中轉(zhuǎn)節(jié)點少于第三預(yù)設(shè)值路徑,其次選擇傳輸耗時不高于第四預(yù)設(shè)值的路徑。
[0128]在本發(fā)明的一個實施例中,所述發(fā)送數(shù)據(jù)處理單元402,適于根據(jù)全局路由表查看發(fā)送方機房到接收方機房的傳輸速度是否大于第五預(yù)設(shè)值,是則判斷發(fā)送方機房到接收方機房之間可達,否則判斷發(fā)送方機房到接收方機房之間不可達。
[0129]在本發(fā)明的一個實施例中,所述路由表獲取單元403,適于定期測試發(fā)送方機房到其他各機房的傳輸速度,保存測試結(jié)果,并將測試結(jié)果分別發(fā)送給其他各機房;以及接收其他各機房的測試結(jié)果,與所保存的測試結(jié)果進行整合,獲得全局路由表。
[0130]圖5示出了根據(jù)本發(fā)明一個實施例的一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)南到y(tǒng)的示意圖。如圖5所示,該系統(tǒng)包括:設(shè)置在接收方機房中的如圖3或4所示的實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置400,以及設(shè)置在接收方機房中的接收數(shù)據(jù)處理裝置500 ;所述接收數(shù)據(jù)處理裝置500包括:
[0131]接收緩存單元501,適于緩存接收方機房所接收的數(shù)據(jù);
[0132]接收數(shù)據(jù)處理單元502,適于在接收到發(fā)送方機房側(cè)的準備接收數(shù)據(jù)的通知時,向發(fā)送方機房側(cè)返回接收緩存單元的狀態(tài)信息。
[0133]在本發(fā)明的一個實施例中,所述接收數(shù)據(jù)處理單元502,進一步適于在接收到發(fā)送方機房側(cè)發(fā)送的一條數(shù)據(jù)時,向發(fā)送方機房側(cè)返回接收確認消息。
[0134]需要說明的是,一個機房即作為發(fā)送方機房,又作為接收方機房時,其即包括實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置400,又包括接收數(shù)據(jù)處理裝置500。
[0135]綜上所述,根據(jù)本發(fā)明的這種將發(fā)送方機房的待發(fā)送數(shù)據(jù)放入發(fā)送緩存中;向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)的技術(shù)方案,由于發(fā)送方會根據(jù)接收方的能力進行數(shù)據(jù)傳輸,因此可以減少數(shù)據(jù)傳輸失敗的概率,進而減少數(shù)據(jù)重傳的次數(shù),提高了數(shù)據(jù)傳輸?shù)男省?br> [0136]需要說明的是:
[0137]在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
[0138]在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0139]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循【具體實施方式】的權(quán)利要求書由此明確地并入該【具體實施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
[0140]本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0141]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
[0142]本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置和系統(tǒng)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0143]應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0144]本發(fā)明公開了 A1、一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒?,其中,包?將發(fā)送方機房的待發(fā)送數(shù)據(jù)放入發(fā)送緩存中;向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
[0145]A2、如A1所述的方法,其中,所述根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)包括:當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。
[0146]A3、如A2所述的方法,其中,所述接收緩存的狀態(tài)信息包括:接收緩存數(shù)量、接收緩存總?cè)萘亢徒邮站彺娴耐掏铝俊?br> [0147]A4、如A1所述的方法,其中,該方法進一步包括:當(dāng)接收到接收方機房側(cè)發(fā)送的接收確認消息時,從發(fā)送緩存中刪除對應(yīng)的數(shù)據(jù)。
[0148]A5、如A4所述的方法,其中,該方法進一步包括:當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,將發(fā)送緩存中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0149]A6、如A5所述的方法,其中,所述將發(fā)送緩存中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送包括:所述發(fā)送緩存采用redis中排序集合實現(xiàn),其中數(shù)據(jù)作為value,時間戳作為key存儲到所述排序集合中,排序集合中的數(shù)據(jù)按照key值大小進行排序;當(dāng)發(fā)送數(shù)據(jù)時,從排序集合中取出key值小于當(dāng)前時間戳的數(shù)據(jù)進行發(fā)送;數(shù)據(jù)延時發(fā)送是在該數(shù)據(jù)的原key值上加上一個延時時間作為該數(shù)據(jù)的新key值。
[0150]A7、如A1至A6中任一項所述的方法,其中,該方法進一步包括:獲取包含各機房間傳輸速度的全局路由表;在所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
[0151]A8、如A7所述的方法,其中,該方法進一步包括:將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上;或者,將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上,且進行主從備份。
[0152]A9、如A7所述的方法,其中,該方法進一步包括:當(dāng)發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中,當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息,則先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0153]A10、如A7所述的方法,其中,所述根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑包括:優(yōu)先選擇中轉(zhuǎn)節(jié)點少于第三預(yù)設(shè)值路徑,其次選擇傳輸耗時不高于第四預(yù)設(shè)值的路徑。
[0154]All、如A7所述的方法,其中,所述根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達包括:
[0155]根據(jù)全局路由表查看發(fā)送方機房到接收方機房的傳輸速度是否大于第五預(yù)設(shè)值,是則判斷發(fā)送方機房到接收方機房之間可達,否則判斷發(fā)送方機房到接收方機房之間不可達。
[0156]A12、如A7所述的方法,其中,所述獲取包含各機房間傳輸速度的全局路由表包括:
[0157]定期測試發(fā)送方機房到其他各機房的傳輸速度,保存測試結(jié)果,并將測試結(jié)果分別發(fā)送給其他各機房;
[0158]接收其他各機房的測試結(jié)果,與所保存的測試結(jié)果進行整合,獲得全局路由表。
[0159]本發(fā)明還公開了 B13、一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置,該裝置包括:
[0160]發(fā)送緩存單元,適于緩存發(fā)送方機房的待發(fā)送數(shù)據(jù);
[0161]發(fā)送數(shù)據(jù)處理單元,適于向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
[0162]B14、如B13所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元,適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;以及適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。
[0163]B15、如B14所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元接收的所述接收緩存的狀態(tài)信息包括:接收緩存數(shù)量、接收緩存總?cè)萘亢徒邮站彺娴耐掏铝俊?br> [0164]B16、如B13所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元,進一步適于當(dāng)接收到接收方機房側(cè)發(fā)送的接收確認消息時,從發(fā)送緩存中刪除對應(yīng)的數(shù)據(jù)。
[0165]B17、如B16所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元,進一步適于當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,將發(fā)送緩存單元中的待發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0166]B18、如B12所述的裝置,其中,所述發(fā)送緩存單元采用redis中排序集合實現(xiàn);所述發(fā)送數(shù)據(jù)處理單元,進一步適于將數(shù)據(jù)作為value,時間戳作為key存儲到所述排序集合中,排序集合中的數(shù)據(jù)按照key值大小進行排序,當(dāng)發(fā)送數(shù)據(jù)時,從排序集合中取出key值小于當(dāng)前時間戳的數(shù)據(jù)進行發(fā)送,當(dāng)需要進行數(shù)據(jù)延時發(fā)送時,在該數(shù)據(jù)的原key值上加上一個延時時間作為該數(shù)據(jù)的新key值。
[0167]B19、如B13所述的裝置,其中,該裝置進一步包括:路由表獲取單元,適于獲取包含各機房間傳輸速度的全局路由表;
[0168]所述發(fā)送數(shù)據(jù)處理單元,適于在向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
[0169]B20、如B19所述的裝置,其中,路由表獲取單元,適于將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上;或者,適于將獲取的所述全局路由表存儲在發(fā)送方機房中的一臺或多臺設(shè)備上,且進行主從備份。
[0170]B21、如B19所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元,進一步適于在發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中,當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
[0171]B22、如B19所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元,適于在根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑時,優(yōu)先選擇中轉(zhuǎn)節(jié)點少于第三預(yù)設(shè)值路徑,其次選擇傳輸耗時不高于第四預(yù)設(shè)值的路徑。
[0172]B23、如B19所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元,適于根據(jù)全局路由表查看發(fā)送方機房到接收方機房的傳輸速度是否大于第五預(yù)設(shè)值,是則判斷發(fā)送方機房到接收方機房之間可達,否則判斷發(fā)送方機房到接收方機房之間不可達。
[0173]B24、如B19所述的裝置,其中,所述路由表獲取單元,適于定期測試發(fā)送方機房到其他各機房的傳輸速度,保存測試結(jié)果,并將測試結(jié)果分別發(fā)送給其他各機房;以及接收其他各機房的測試結(jié)果,與所保存的測試結(jié)果進行整合,獲得全局路由表。
[0174]本發(fā)明還公開了 C25、一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)南到y(tǒng),其中,該系統(tǒng)包括:設(shè)置在接收方機房中的如B13B-24中任一項所述的實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置,以及設(shè)置在接收方機房中的接收數(shù)據(jù)處理裝置;所述接收數(shù)據(jù)處理裝置包括:
[0175]接收緩存單元,適于緩存接收方機房所接收的數(shù)據(jù);
[0176]接收數(shù)據(jù)處理單元,適于在接收到發(fā)送方機房側(cè)的準備接收數(shù)據(jù)的通知時,向發(fā)送方機房側(cè)返回接收緩存單元的狀態(tài)信息。
[0177]C26、如C25所述的系統(tǒng),其中,
[0178]所述接收數(shù)據(jù)處理單元,進一步適于在接收到發(fā)送方機房側(cè)發(fā)送的一條數(shù)據(jù)時,向發(fā)送方機房側(cè)返回接收確認消息。
【權(quán)利要求】
1.一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)姆椒ǎ渲?,包?將發(fā)送方機房的待發(fā)送數(shù)據(jù)放入發(fā)送緩存中;向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)fe息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
2.如權(quán)利要求1所述的方法,其中,所述根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)包括:當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。
3.如權(quán)利要求1或2所述的方法,其中,該方法進一步包括:獲取包含各機 房間傳輸速度的全局路由表;在所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
4.如權(quán)利要求3所述的方法,其中,該方法進一步包括:當(dāng)發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中,當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息,則先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
5.一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置,其中,該裝置包括:發(fā)送緩存單元,適于緩存發(fā)送方機房的待發(fā)送數(shù)據(jù);發(fā)送數(shù)據(jù)處理單元,適于向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知,并接收接收方機房側(cè)返回的接收緩存的狀態(tài)信息;根據(jù)接收緩存的狀態(tài)信息,將發(fā)送緩存中的數(shù)據(jù)發(fā)送到接收方機房側(cè)。
6.如權(quán)利要求5所述的裝置,其中,所述發(fā)送數(shù)據(jù)處理單元,適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷低于第一預(yù)設(shè)值時,獲取發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)并進行發(fā)送;以及適于當(dāng)所述接收緩存的狀態(tài)信息表示接收緩存的負荷高于或等于第一預(yù)設(shè)值時,則將發(fā)送緩存單元中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送。
7.如權(quán)利要求5所述的裝置,其中,該裝置進一步包括:路由表獲取單元,適于獲取包含各機房間傳輸速度的全局路由表;所述發(fā)送數(shù)據(jù)處理單元,適于在向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知之前,先根據(jù)所述全局路由表判斷發(fā)送方機房到接收方機房之間是否直接可達;如果直接可達,則執(zhí)行所述向接收方機房側(cè)發(fā)送準備接收數(shù)據(jù)的通知的步驟;如果不直接可達,則根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑,并根據(jù)該路徑進行數(shù)據(jù)傳輸。
8.如權(quán)利要求7所述的裝置,其中, 所述發(fā)送數(shù)據(jù)處理單元,進一步適于在發(fā)送方機房到接收方機房之間直接可達并通過該直達路徑發(fā)送數(shù)據(jù)的過程中,當(dāng)超出第二預(yù)設(shè)值的已發(fā)往接收方機房側(cè)的數(shù)據(jù)未接收到接收確認消息時,先根據(jù)所述全局路由表選擇一條通過其他機房中轉(zhuǎn)能夠?qū)l(fā)送方機房的數(shù)據(jù)傳輸?shù)浇邮辗綑C房的路徑;如果路徑存在,則根據(jù)該路徑進行數(shù)據(jù)傳輸,如果路徑不存在,則將發(fā)送緩存獲中的發(fā)往接收方機房的數(shù)據(jù)進行延時發(fā)送,或者降低發(fā)送頻率。
9.一種實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)南到y(tǒng),其中,該系統(tǒng)包括:設(shè)置在接收方機房中的如權(quán)利要求5-8中任一項所述的實現(xiàn)跨機房數(shù)據(jù)傳輸?shù)难b置,以及設(shè)置在接收方機房中的接收數(shù)據(jù)處理裝置;所述接收數(shù)據(jù)處理裝置包括:接收緩存單元,適于緩存接收方機房所接收的數(shù)據(jù);接收數(shù)據(jù)處理單元,適于在接收到發(fā)送方機房側(cè)的準備接收數(shù)據(jù)的通知時,向發(fā)送方機房側(cè)返回接收緩存單元的狀態(tài)信息。
10.如權(quán)利要求9所述的系統(tǒng),其中,所述接收數(shù)據(jù)處理單元,進一步適于在接收到發(fā)送方機房側(cè)發(fā)送的一條數(shù)據(jù)時,向發(fā)送方機房側(cè)返回接收確認消息。
【文檔編號】H04L12/801GK103647622SQ201310651875
【公開日】2014年3月19日 申請日期:2013年12月5日 優(yōu)先權(quán)日:2013年12月5日
【發(fā)明者】徐銳波, 付赟 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
八宿县| 噶尔县| 汝南县| 白河县| 岳池县| 永安市| 安陆市| 洛宁县| 中牟县| 徐水县| 石河子市| 汤原县| 赣榆县| 武强县| 霍林郭勒市| 三江| 剑河县| 名山县| 通化市| 凌源市| 石台县| 彭山县| 墨玉县| 大邑县| 潢川县| 宜丰县| 密山市| 遵义县| 思茅市| 吉木乃县| 阳泉市| 南召县| 内乡县| 伊通| 汾西县| 彭泽县| 金乡县| 哈巴河县| 电白县| 左云县| 和平区|