專利名稱:一種數(shù)據(jù)發(fā)送方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)業(yè)務(wù)處理技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)發(fā)送方法及系統(tǒng)。
背景技術(shù):
目前消息隊(duì)列系統(tǒng)大多部署在單個(gè)物理節(jié)點(diǎn)上,這種實(shí)現(xiàn)方式無(wú)論該物理節(jié)點(diǎn)的性能如何好,軟件實(shí)現(xiàn)如何科學(xué),都無(wú)法保證在數(shù)據(jù)傳輸過(guò)程中不出現(xiàn)故障。而為了提高數(shù)據(jù)傳輸?shù)目煽啃?,在現(xiàn)有技術(shù)中還可以采用雙機(jī)熱備份的方式來(lái)實(shí)現(xiàn),這種實(shí)現(xiàn)方式雖然可以在一定程度上提高數(shù)據(jù)傳輸?shù)目煽啃?,但是吞吐量上受到很大的限制,因此該?shí)現(xiàn)方式并不適合在大數(shù)據(jù)量環(huán)境中使用。而由于現(xiàn)有的很多應(yīng)用系統(tǒng)規(guī)模越來(lái)越龐大,系統(tǒng)內(nèi)部的關(guān)系越來(lái)越復(fù)雜,在系統(tǒng)內(nèi)數(shù)據(jù)流轉(zhuǎn)的步驟也非常的多,數(shù)據(jù)在傳輸?shù)倪^(guò)程中極易出現(xiàn)不一致或丟失的問(wèn)題,因此如何通過(guò)一種可靠的機(jī)制來(lái)保證在大數(shù)據(jù)量的環(huán)境中,數(shù)據(jù)傳輸?shù)目煽啃裕歉鱾€(gè)系統(tǒng)急需解決的一個(gè)問(wèn)題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供一種數(shù)據(jù)發(fā)送方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中在大數(shù)據(jù)量的環(huán)境中,數(shù)據(jù)傳輸可靠性差的問(wèn)題。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)發(fā)送方法,包括接收到客戶端發(fā)送的待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn);當(dāng)該第一節(jié)點(diǎn)接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,將該成功接收響應(yīng)同步到監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)的接收到該成功接收響應(yīng)后,將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。本發(fā)明實(shí)施例提供的一種數(shù)據(jù)發(fā)送系統(tǒng),包括客戶端,用于發(fā)送待發(fā)送數(shù)據(jù);第一節(jié)點(diǎn),用于接收所述客戶端發(fā)送的待發(fā)送數(shù)據(jù),并將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),接收至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng),將該成功接收響應(yīng)同步到監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);第二節(jié)點(diǎn),用于接收所述第一節(jié)點(diǎn)同步的待發(fā)送數(shù)據(jù),并向所述第一節(jié)點(diǎn)返回成功接收響應(yīng),接收到所述第一節(jié)點(diǎn)同步的成功接收響應(yīng)后,將接收到的待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn);監(jiān)控節(jié)點(diǎn),用于確定進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);外部接收節(jié)點(diǎn),用于接收所述第二節(jié)點(diǎn)發(fā)送的待發(fā)送數(shù)據(jù)。本發(fā)明實(shí)施例提供了一種數(shù)據(jù)發(fā)送方法及裝置,該方法中接收到客戶端發(fā)送的待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),并且在接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后將成功接收響應(yīng)同步到控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn),第二節(jié)點(diǎn)接收到該成功接收響應(yīng)后,將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。由于在本發(fā)明實(shí)施例中,在進(jìn)行數(shù)據(jù)發(fā)送的過(guò)程中,該待發(fā)送數(shù)據(jù)備份了至少兩份,因此可以有效的保證數(shù)據(jù)傳輸?shù)目煽啃浴?br>
圖1為本發(fā)明實(shí)施例提供的數(shù)據(jù)發(fā)送系統(tǒng)的結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例提供的數(shù)據(jù)發(fā)送的過(guò)程;圖3A為本發(fā)明實(shí)施例提供的數(shù)據(jù)發(fā)送系統(tǒng)的細(xì)化結(jié)構(gòu)圖;圖IBB為本發(fā)明實(shí)施例提供的以該系統(tǒng)中包括三個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)為例,對(duì)數(shù)據(jù)發(fā)送過(guò)程進(jìn)行的說(shuō)明;圖4為本發(fā)明實(shí)施例提供的以進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)包括三個(gè)為例,對(duì)數(shù)據(jù)發(fā)送過(guò)程的詳細(xì)描述;圖5為本發(fā)明實(shí)施例提供的包括多個(gè)隊(duì)列的數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例為了在大吞吐量下,提高數(shù)據(jù)發(fā)送的可靠性,提供了一種數(shù)據(jù)發(fā)送方法及系統(tǒng),該數(shù)據(jù)發(fā)送系統(tǒng)包括發(fā)送待發(fā)送數(shù)據(jù)的客戶端、進(jìn)行數(shù)據(jù)接收和發(fā)送的至少兩個(gè)節(jié)點(diǎn),對(duì)進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)進(jìn)行監(jiān)控的監(jiān)控節(jié)點(diǎn)以及接收待發(fā)送數(shù)據(jù)的外部接收節(jié)點(diǎn)。圖1為本發(fā)明實(shí)施例提供的數(shù)據(jù)發(fā)送系統(tǒng)的結(jié)構(gòu)示意圖,該系統(tǒng)包括客戶端11,用于發(fā)送待發(fā)送數(shù)據(jù);第一節(jié)點(diǎn)12,用于接收所述客戶端發(fā)送的待發(fā)送數(shù)據(jù),并將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),接收至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng),將該成功接收響應(yīng)同步到監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);第二節(jié)點(diǎn)13,用于接收所述第一節(jié)點(diǎn)同步的待發(fā)送數(shù)據(jù),并向所述第一節(jié)點(diǎn)返回成功接收響應(yīng),接收到所述第一節(jié)點(diǎn)同步的成功接收響應(yīng)后,將接收到的待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn);監(jiān)控節(jié)點(diǎn)14,用于確定進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);外部接收節(jié)點(diǎn)15,用于接收所述第二節(jié)點(diǎn)發(fā)送的待發(fā)送數(shù)據(jù)。在本發(fā)明實(shí)施例中進(jìn)行待發(fā)送數(shù)據(jù)接收的第一節(jié)點(diǎn)和對(duì)待發(fā)送數(shù)據(jù)進(jìn)行發(fā)送的第二節(jié)點(diǎn),可以是同一個(gè)節(jié)點(diǎn),也可以是不同的節(jié)點(diǎn),在這里為了表述方便,分別用第一節(jié)點(diǎn)和第二節(jié)點(diǎn)表述。另外,第一節(jié)點(diǎn)和第二節(jié)點(diǎn)的功能完全相同。并且為了保證數(shù)據(jù)傳輸?shù)目煽啃?,在本發(fā)明實(shí)施例中進(jìn)行待發(fā)送數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)可以包括至少兩個(gè),例如可以為三個(gè),或者更多個(gè)。當(dāng)客戶端存在待發(fā)送數(shù)據(jù)需要發(fā)送時(shí),根據(jù)向自身提供的每個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)的地址,任一選擇一個(gè)進(jìn)行待發(fā)送數(shù)據(jù)的發(fā)送。接收到該待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),具體為該第一節(jié)點(diǎn)的接收模塊接收該待發(fā)送數(shù)據(jù)。當(dāng)該第一節(jié)點(diǎn)的接收模塊接收到該待發(fā)送數(shù)據(jù)后,將該待發(fā)送數(shù)據(jù)發(fā)送到自身的發(fā)送模塊中,并且將該待發(fā)送數(shù)據(jù)發(fā)送到至少一個(gè)其他節(jié)點(diǎn)的發(fā)送模塊中。接收到該第一節(jié)點(diǎn)的接收模塊發(fā)送的待發(fā)送數(shù)據(jù)的每個(gè)發(fā)送模塊后,向該第一節(jié)點(diǎn)的接收模塊返回成功接收響應(yīng)。當(dāng)該第一節(jié)點(diǎn)的接收模塊接收到至少兩個(gè)發(fā)送模塊返回的成功接收響應(yīng)后,將該成功接收響應(yīng)同步到監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)。 其中該第一節(jié)點(diǎn)將成功接收響應(yīng)同步到第二節(jié)點(diǎn),可以為監(jiān)控節(jié)點(diǎn)在確定了進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)的信息后,將該第二節(jié)點(diǎn)的信息通知每個(gè)其他節(jié)點(diǎn),當(dāng)?shù)谝还?jié)點(diǎn)接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,將該成功接收響應(yīng)同步到第二節(jié)點(diǎn)?;蛘咭部梢允钱?dāng)?shù)谝还?jié)點(diǎn)接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,將該成功接收響應(yīng)同步到接收到該待發(fā)送數(shù)據(jù)的每個(gè)其他節(jié)點(diǎn),因?yàn)樵摰诙?jié)點(diǎn)由于沒(méi)有宕機(jī),其一定可以成功接收該待發(fā)送數(shù)據(jù),并向第一節(jié)點(diǎn)返回成功接收響應(yīng),并可以接收到第一節(jié)點(diǎn)同步的成功接收響應(yīng)。由于在本發(fā)明實(shí)施例中,該接收到待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),在接收到該待發(fā)送數(shù)據(jù),并自身保存了該待發(fā)送數(shù)據(jù)后,同時(shí)將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),當(dāng)該系統(tǒng)中包含的進(jìn)行數(shù)據(jù)接收和發(fā)送的其他節(jié)點(diǎn)比較多時(shí),為了有效保證數(shù)據(jù)傳輸?shù)目煽啃裕?該第一節(jié)點(diǎn)可以將該待發(fā)送數(shù)據(jù)一一同步到每個(gè)節(jié)點(diǎn)中。當(dāng)該第一節(jié)點(diǎn)將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)待發(fā)送節(jié)點(diǎn)后,為了保證數(shù)據(jù)傳輸?shù)目煽啃?,需要存在設(shè)定數(shù)量的節(jié)點(diǎn)接收到該待發(fā)送數(shù)據(jù),并且在進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)出現(xiàn)故障時(shí),其他接收到該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)可以繼續(xù)進(jìn)行后續(xù)數(shù)據(jù)的發(fā)送。因此第一節(jié)點(diǎn)需要判斷是否有滿足要求的設(shè)定數(shù)量的節(jié)點(diǎn)接收到該待發(fā)送數(shù)據(jù),當(dāng)存在設(shè)定數(shù)量的節(jié)點(diǎn)接收到該待發(fā)送數(shù)據(jù)時(shí),該第一節(jié)點(diǎn)可以向客戶端返回成功接收響應(yīng),并且向接收到該待發(fā)送數(shù)據(jù)的每個(gè)其他節(jié)點(diǎn)同步該成功接收響應(yīng),以便進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)開(kāi)始進(jìn)行數(shù)據(jù)的發(fā)送。其中該設(shè)定數(shù)量為至少一個(gè),針對(duì)該第一節(jié)點(diǎn)的接收模塊而言,應(yīng)該為至少兩個(gè)接收模塊向其返回到了成功接收響應(yīng),因?yàn)楫?dāng)該第一節(jié)點(diǎn)能夠接收到其他節(jié)點(diǎn)反饋的信息時(shí),說(shuō)明該第一節(jié)點(diǎn)運(yùn)行正常,一般情況下該第一節(jié)點(diǎn)的接收模塊應(yīng)該可以接收到自身的發(fā)送模塊返回的成功接收響應(yīng),因此此時(shí)該第一節(jié)點(diǎn)只需要再接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)即可。當(dāng)然,為了保證數(shù)據(jù)傳輸?shù)母呖煽啃?,?dāng)該系統(tǒng)中包含的進(jìn)行數(shù)據(jù)發(fā)送和接收的節(jié)點(diǎn)比較多時(shí),例如4個(gè)或5個(gè)以上時(shí),該設(shè)定數(shù)量可以為2個(gè)或者3個(gè),這里可以根據(jù)需要靈活設(shè)定,該設(shè)定數(shù)量越大,則整個(gè)數(shù)據(jù)傳輸系統(tǒng)的可靠性越高。這里為了進(jìn)一步提高數(shù)據(jù)傳輸?shù)目煽啃?,客戶?1還用于,判斷在設(shè)定的時(shí)間長(zhǎng)度內(nèi)是否接收到所述第一節(jié)點(diǎn)12返回的成功接收響應(yīng),當(dāng)在設(shè)定的時(shí)間長(zhǎng)度內(nèi)未接收到所述第一節(jié)點(diǎn)12返回的成功接收響應(yīng)時(shí),重新發(fā)送該待發(fā)送數(shù)據(jù)。也就是說(shuō)該客戶端向第一節(jié)點(diǎn)發(fā)送該待發(fā)送數(shù)據(jù)后,為了保證該待發(fā)送數(shù)據(jù)能夠被第一節(jié)點(diǎn)同步到設(shè)定數(shù)量的其他節(jié)點(diǎn)上,該客戶端在發(fā)送該待待發(fā)送數(shù)據(jù)后,需要開(kāi)啟自身的計(jì)時(shí)器,判斷在該計(jì)時(shí)器的設(shè)定時(shí)間長(zhǎng)度內(nèi),是否能夠接收到第一節(jié)點(diǎn)返回的成功接收響應(yīng)。當(dāng)該客戶端在該設(shè)定的時(shí)間長(zhǎng)度內(nèi)接收到第一節(jié)點(diǎn)返回的成功接收響應(yīng)后,說(shuō)明該第一節(jié)點(diǎn)已經(jīng)將該待發(fā)送數(shù)據(jù)同步到了設(shè)定數(shù)量的其他節(jié)點(diǎn)上,當(dāng)該設(shè)定時(shí)間長(zhǎng)度內(nèi)該客戶端未接收到第一節(jié)點(diǎn)返回的成功接收響應(yīng)時(shí),說(shuō)明該第一節(jié)點(diǎn)未將該待發(fā)送數(shù)據(jù)同步到設(shè)定數(shù)量的其他節(jié)點(diǎn)上,該客戶端需要重新發(fā)送該待發(fā)送數(shù)據(jù),該客戶端可以重新向第一節(jié)點(diǎn)發(fā)送該待發(fā)送數(shù)據(jù),可以向其他節(jié)點(diǎn)重新發(fā)送該待發(fā)送數(shù)據(jù)。
監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)的接收模塊接收到該成功接收響應(yīng)后, 該第二節(jié)點(diǎn)的發(fā)送模塊將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。該外部接收節(jié)點(diǎn)15還用于, 在接收成功時(shí),向所述第二節(jié)點(diǎn)返回接收成功響應(yīng)信息,該第二節(jié)點(diǎn)還用于,接收所述外部接收節(jié)點(diǎn)發(fā)送的接收成功響應(yīng)信息,并將所述接收成功響應(yīng)信息同步到該返回成功接收響應(yīng)的每個(gè)其他節(jié)點(diǎn)。在本發(fā)明實(shí)施例中該監(jiān)控節(jié)點(diǎn)用于確定進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn),監(jiān)控節(jié)點(diǎn)具體在確定該第二節(jié)點(diǎn)時(shí),該監(jiān)控節(jié)點(diǎn)14具體用于,接收每個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)上線后上報(bào)的信息,根據(jù)接收的信息,及查詢到的每個(gè)節(jié)點(diǎn)是否宕機(jī)的信息,選擇進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)。每個(gè)進(jìn)行待發(fā)送數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)在上線后,將自身上線后的信息上報(bào)監(jiān)控節(jié)點(diǎn),并且監(jiān)控節(jié)點(diǎn)還會(huì)按照設(shè)定的時(shí)間間隔監(jiān)控每個(gè)節(jié)點(diǎn)的狀態(tài)信息,即監(jiān)控每個(gè)節(jié)點(diǎn)是否宕機(jī)的信息,監(jiān)控節(jié)點(diǎn)根據(jù)接收到的每個(gè)節(jié)點(diǎn)上報(bào)的信息,以及監(jiān)控到的每個(gè)節(jié)點(diǎn)的狀態(tài)信息進(jìn)行數(shù)據(jù)送的第二節(jié)點(diǎn)的選擇。當(dāng)該監(jiān)控節(jié)點(diǎn)確定了進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)后,當(dāng)?shù)诙?jié)點(diǎn)進(jìn)行數(shù)據(jù)發(fā)送之前,或者該第二節(jié)點(diǎn)進(jìn)行數(shù)據(jù)發(fā)送的過(guò)程中,或者在該第二節(jié)點(diǎn)進(jìn)行數(shù)據(jù)發(fā)送后,當(dāng)該監(jiān)控節(jié)點(diǎn)識(shí)別到第二節(jié)點(diǎn)出現(xiàn)故障時(shí),需要重新選擇進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn)。具體的在第二節(jié)點(diǎn)在進(jìn)行數(shù)據(jù)發(fā)送之前、以及該第二節(jié)點(diǎn)在數(shù)據(jù)發(fā)送之后,由于監(jiān)控節(jié)點(diǎn)采用設(shè)定的時(shí)間間隔監(jiān)控每個(gè)節(jié)點(diǎn)的狀態(tài),因此當(dāng)該監(jiān)控節(jié)點(diǎn)識(shí)別到該第二節(jié)點(diǎn)出現(xiàn)故障時(shí),該監(jiān)控節(jié)點(diǎn)根據(jù)保存的每個(gè)已上線的節(jié)點(diǎn)的信息,及當(dāng)前每個(gè)節(jié)點(diǎn)是否處于正常狀態(tài),選擇進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn)。而當(dāng)該第二節(jié)點(diǎn)在進(jìn)行數(shù)據(jù)發(fā)送的過(guò)程中出現(xiàn)故障時(shí),為了保證數(shù)據(jù)的正常發(fā)送,需要監(jiān)控節(jié)點(diǎn)確定進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn),而為了保證監(jiān)控節(jié)點(diǎn)確定的第三節(jié)點(diǎn)可以進(jìn)行后續(xù)數(shù)據(jù)的發(fā)送,即該第三節(jié)點(diǎn)必須得保存了該相應(yīng)的待發(fā)送數(shù)據(jù),因此此時(shí),該第一節(jié)點(diǎn)還用于,向所述客戶端發(fā)送成功接收響應(yīng),并將成功接收到該待發(fā)送數(shù)據(jù)的每個(gè)節(jié)點(diǎn)的信息上報(bào)監(jiān)控節(jié)點(diǎn)。只有監(jiān)控節(jié)點(diǎn)獲得了當(dāng)前有哪些節(jié)點(diǎn)已經(jīng)接收到了該待發(fā)送數(shù)據(jù),才能夠保證在第二節(jié)點(diǎn)出現(xiàn)故障時(shí),繼續(xù)進(jìn)行該客戶端的待發(fā)送數(shù)據(jù)的發(fā)送。當(dāng)該監(jiān)控節(jié)點(diǎn)識(shí)別到該第二節(jié)點(diǎn)出現(xiàn)故障,并根據(jù)第一節(jié)點(diǎn)上報(bào)的成功接收到該待發(fā)送數(shù)據(jù)的每個(gè)節(jié)點(diǎn)的信息,確定進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn)后,該第三節(jié)點(diǎn)可以直接根據(jù)自身保存該待發(fā)送數(shù)據(jù)的信息,重新進(jìn)行數(shù)據(jù)的發(fā)送。當(dāng)然為了提高數(shù)據(jù)傳輸?shù)男?,該第三?jié)點(diǎn)也可以根據(jù)第二節(jié)點(diǎn)已成功發(fā)送的數(shù)據(jù)長(zhǎng)度的信息,發(fā)送后續(xù)數(shù)據(jù)。當(dāng)該第三節(jié)點(diǎn)可以根據(jù)第二節(jié)點(diǎn)已發(fā)送的待發(fā)送數(shù)據(jù)的長(zhǎng)度信息,繼續(xù)進(jìn)行后續(xù)數(shù)據(jù)的發(fā)送時(shí),該第二節(jié)點(diǎn)還用于,記錄已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,并將該長(zhǎng)度信息同步到該至少一個(gè)其他節(jié)點(diǎn)。因此,當(dāng)監(jiān)控節(jié)點(diǎn)在識(shí)別到第二節(jié)點(diǎn)出現(xiàn)故障時(shí),在保存的每個(gè)成功接收該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)中確定進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn),該第三節(jié)點(diǎn),用于根據(jù)保存的所述第二節(jié)點(diǎn)已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,發(fā)送后續(xù)數(shù)據(jù)。由于在本發(fā)明實(shí)施例中對(duì)數(shù)據(jù)進(jìn)行接收和發(fā)送的節(jié)點(diǎn)包括多個(gè),并且接收到待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),并接收到至少一個(gè)其他節(jié)點(diǎn)的成功接收響應(yīng)后,該進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)才進(jìn)行數(shù)據(jù)的發(fā)送,因此可以保證在整個(gè)系統(tǒng)中至少存在兩個(gè)節(jié)點(diǎn)備份了該待發(fā)送數(shù)據(jù),當(dāng)該進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)出現(xiàn)故障時(shí),至少還存在一個(gè)第三節(jié)點(diǎn)可以進(jìn)行后續(xù)數(shù)據(jù)的發(fā)送,因此有效的保證了數(shù)據(jù)傳輸?shù)目煽啃?。下面結(jié)合說(shuō)明書附圖,對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)說(shuō)明。圖2為本發(fā)明實(shí)施例提供的數(shù)據(jù)發(fā)送的過(guò)程,該過(guò)程包括以下步驟S201 客戶端將該待發(fā)送數(shù)據(jù)發(fā)送到第一節(jié)點(diǎn)。S202:接收到客戶端發(fā)送的待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn)。S203:接收到該發(fā)送數(shù)據(jù)的至少一個(gè)其他節(jié)點(diǎn)向該第一節(jié)點(diǎn)返回成功接收響應(yīng)。S204:當(dāng)該第一節(jié)點(diǎn)接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,將該成功接收響應(yīng)同步到監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)。S205:監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)的接收到該成功接收響應(yīng)后,將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。具體的在本發(fā)明實(shí)施例中在每個(gè)進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn),即對(duì)于第一節(jié)點(diǎn)和第二節(jié)點(diǎn),其包括接收模塊和發(fā)送模塊。其中第一節(jié)點(diǎn)中接收客戶端發(fā)送的待發(fā)送數(shù)據(jù)的為該第一節(jié)點(diǎn)的接收模塊,第二節(jié)點(diǎn)進(jìn)行待發(fā)送數(shù)據(jù)發(fā)送的模塊為該第二節(jié)點(diǎn)的發(fā)送模塊。圖3A為本發(fā)明實(shí)施例提供的數(shù)據(jù)發(fā)送系統(tǒng)的細(xì)化結(jié)構(gòu)圖,每個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)包括接收模塊rd和發(fā)送模塊ds,接收模塊rd接收客戶端發(fā)送的待發(fā)送數(shù)據(jù),并接收監(jiān)控節(jié)點(diǎn)發(fā)送的確定是否為進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)的信息,并且接收模塊還用于在接收到待發(fā)送數(shù)據(jù)時(shí),將該待發(fā)送數(shù)據(jù)發(fā)送到發(fā)送模塊。發(fā)送模塊用于向監(jiān)控節(jié)點(diǎn)反饋?zhàn)陨硭诠?jié)點(diǎn)的狀態(tài)信息,并且還用于向外部接收節(jié)點(diǎn)發(fā)送待發(fā)送數(shù)據(jù),在該系統(tǒng)中為了保證系統(tǒng)的安全性,監(jiān)控節(jié)點(diǎn)可以采用主備方式,即采用監(jiān)控節(jié)點(diǎn)master和監(jiān)控節(jié)點(diǎn)slave,在監(jiān)控節(jié)點(diǎn) master正常時(shí),由監(jiān)控節(jié)點(diǎn)master監(jiān)控各個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)的狀態(tài),并將檢測(cè)到的節(jié)點(diǎn)的狀態(tài)信息同步到監(jiān)控節(jié)點(diǎn)slave,當(dāng)監(jiān)控節(jié)點(diǎn)master出現(xiàn)故障時(shí),可以進(jìn)行主備切換, 由監(jiān)控節(jié)點(diǎn)slave切換為主用監(jiān)控節(jié)點(diǎn),監(jiān)控各個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)的狀態(tài)。圖IBB為以該系統(tǒng)中包括三個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)為例,對(duì)本發(fā)明實(shí)施例中的數(shù)據(jù)發(fā)送過(guò)程進(jìn)行說(shuō)明,該過(guò)程包括以下步驟S301 客戶端向進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)發(fā)送待發(fā)送數(shù)據(jù)。S302 第一節(jié)點(diǎn)的接收模塊接收到該待發(fā)送數(shù)據(jù)后,將該待發(fā)送數(shù)據(jù)發(fā)送到自身的發(fā)送模塊中,并將該待發(fā)送數(shù)據(jù)同步到第二節(jié)點(diǎn)以及第三節(jié)點(diǎn)的發(fā)送模塊中。在該過(guò)程中,當(dāng)?shù)谝还?jié)點(diǎn)的接收模塊在向自身的發(fā)送模塊發(fā)送該待發(fā)送數(shù)據(jù)時(shí), 當(dāng)其自身的發(fā)送模塊因?yàn)楣收蠒簳r(shí)接收不到該待發(fā)送數(shù)據(jù)時(shí),該接收模塊會(huì)持續(xù)重試,直到自身的接收模塊成功接收到該待發(fā)送數(shù)據(jù)為止。因此一般情況下認(rèn)為,該第一節(jié)點(diǎn)的接收模塊可以接收到該待發(fā)送數(shù)據(jù),該第一節(jié)點(diǎn)本身沒(méi)有故障,其發(fā)送模塊未接收到自身的接收模塊發(fā)送的待發(fā)送數(shù)據(jù)也只是暫時(shí), 通過(guò)持續(xù)重試,該第一節(jié)點(diǎn)的發(fā)送模塊還是可以接收到該待發(fā)送數(shù)據(jù)的。S303 第一節(jié)點(diǎn)、第二節(jié)點(diǎn)以及第三節(jié)點(diǎn)的發(fā)送模塊接收到該待發(fā)送數(shù)據(jù)后,向第一節(jié)點(diǎn)的接收模塊返回成功接收響應(yīng)。在本發(fā)明實(shí)施例第一節(jié)點(diǎn)的接收模塊向?qū)⒋l(fā)送數(shù)據(jù)統(tǒng)一發(fā)送到每個(gè)發(fā)送模塊中,再統(tǒng)一接收每個(gè)發(fā)送模塊返回的成功接收響應(yīng),可以有效的提高數(shù)據(jù)發(fā)送的效率。當(dāng)然第一節(jié)點(diǎn)的接收模塊也可以在接收到自身的發(fā)送模塊返回的成功接收響應(yīng)后,再向第二節(jié)點(diǎn)或第三節(jié)點(diǎn)的發(fā)送模塊發(fā)送待發(fā)送數(shù)據(jù)也是可以的,發(fā)送和返回成功接收響應(yīng)的時(shí)機(jī), 可以根據(jù)需要靈活設(shè)定。S304:第一節(jié)點(diǎn)的接收模塊在設(shè)定的時(shí)間長(zhǎng)度內(nèi),判斷是否接收到至少兩個(gè)發(fā)送模塊返回的成功接收響應(yīng),當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S305,否則,進(jìn)行步驟S307。例如,此時(shí)該第一節(jié)點(diǎn)、第二節(jié)點(diǎn)以及第三節(jié)點(diǎn)的發(fā)送模塊都成功接收到該待發(fā)送數(shù)據(jù)時(shí),則第一節(jié)點(diǎn)、第二節(jié)點(diǎn)以及第三節(jié)點(diǎn)的發(fā)送模塊都向該第一節(jié)點(diǎn)的接收模塊返回成功接收響應(yīng)。S305:第一節(jié)點(diǎn)的接收模塊將該成功接收響應(yīng)同步到第二節(jié)點(diǎn)以及第三節(jié)點(diǎn)的接收模塊?;蛘?,在該步驟中,第一節(jié)點(diǎn)的接收模塊根據(jù)對(duì)自身返回成功接收響應(yīng)的每個(gè)發(fā)送模塊所在的節(jié)點(diǎn),向?qū)?yīng)節(jié)點(diǎn)的接收模塊同步該成功接收響應(yīng),以便節(jié)省信令的開(kāi)銷。并且由于其他節(jié)點(diǎn)此時(shí)并沒(méi)有接收到該第一節(jié)點(diǎn)發(fā)送的待發(fā)送數(shù)據(jù),即使第一節(jié)點(diǎn)將該成功接收響應(yīng)同步到該其他節(jié)點(diǎn),其他節(jié)點(diǎn)也不能進(jìn)行數(shù)據(jù)的發(fā)送。另外,其他節(jié)點(diǎn)沒(méi)有接收到該第一節(jié)點(diǎn)發(fā)送的待發(fā)送數(shù)據(jù),很可能是該其他節(jié)點(diǎn)出現(xiàn)了故障,因此,此時(shí)第一節(jié)點(diǎn)的接收模塊也無(wú)法將該成功接收響應(yīng)同步到該出現(xiàn)了故障的節(jié)點(diǎn)中。S306:監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)的接收模塊接收到該成功接收響應(yīng)后,通知自身的發(fā)送模塊將接收到的待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。S307:第一節(jié)點(diǎn)的接收模塊向客戶端返回接收失敗響應(yīng),并且客戶端接收到該接收失敗響應(yīng)后,重新選擇進(jìn)行數(shù)據(jù)接收的節(jié)點(diǎn),將該節(jié)點(diǎn)作為第一節(jié)點(diǎn)返回步驟S302??蛻舳吮旧硪脖4嬉粋€(gè)設(shè)定的時(shí)間長(zhǎng)度,該客戶端也會(huì)在該設(shè)定的時(shí)間長(zhǎng)度內(nèi)判斷是否接收到第一節(jié)點(diǎn)的接收模塊返回的成功接收響應(yīng),以此來(lái)判斷第一節(jié)點(diǎn)以及第一節(jié)點(diǎn)進(jìn)行待發(fā)送數(shù)據(jù)同步的其他節(jié)點(diǎn)是否故障。當(dāng)該客戶端未在設(shè)定的時(shí)間長(zhǎng)度內(nèi)接收到該第一節(jié)點(diǎn)返回的成功接收響應(yīng)時(shí),客戶端重新向進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)發(fā)送該待發(fā)送數(shù)據(jù),可以選擇第一節(jié)點(diǎn),也可以選擇其他節(jié)點(diǎn)。當(dāng)客戶端接收到該第一節(jié)點(diǎn)返回的成功接收響應(yīng)后,可以確定第一節(jié)點(diǎn),及接收到該待發(fā)送數(shù)據(jù)的每個(gè)節(jié)點(diǎn)運(yùn)行正常,此時(shí)監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)就可以進(jìn)行該發(fā)送數(shù)據(jù)的發(fā)送了。由于第二節(jié)點(diǎn)是監(jiān)控節(jié)點(diǎn)根據(jù)每個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)上線后上報(bào)的信息、以及查詢到的每個(gè)節(jié)點(diǎn)是否宕機(jī)的信息選擇的。當(dāng)該監(jiān)控節(jié)點(diǎn)確定了進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)后,監(jiān)控節(jié)點(diǎn)還會(huì)按照設(shè)定的時(shí)間間隔,監(jiān)控每個(gè)節(jié)點(diǎn)的狀態(tài)信息,即監(jiān)控每個(gè)節(jié)點(diǎn)是否宕機(jī)的信息,當(dāng)在每次監(jiān)控的過(guò)程中,只要該第二節(jié)點(diǎn)為正常狀態(tài),則進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)依然是該第二節(jié)點(diǎn)。當(dāng)該監(jiān)控節(jié)點(diǎn)監(jiān)控到第二節(jié)點(diǎn)宕機(jī)的信息后,在檢測(cè)到的以上線的、未宕機(jī)的節(jié)點(diǎn)中重新選擇進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn)。之后該對(duì)數(shù)據(jù)進(jìn)行發(fā)送的第三節(jié)點(diǎn)進(jìn)行監(jiān)控的過(guò)程,與之前對(duì)第二節(jié)點(diǎn)進(jìn)行監(jiān)控的過(guò)程相同,在這里就不一一贅述。監(jiān)控節(jié)點(diǎn)在監(jiān)控到第二節(jié)點(diǎn)在發(fā)送完待發(fā)送數(shù)據(jù)后,或者在發(fā)送待發(fā)送數(shù)據(jù)前宕機(jī)時(shí),該監(jiān)控節(jié)點(diǎn)確定任意一個(gè)上線未宕機(jī)的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的發(fā)送,都不會(huì)對(duì)之前及之后的數(shù)據(jù)發(fā)送造成影響。但是當(dāng)該第二節(jié)點(diǎn)在發(fā)送數(shù)據(jù)的過(guò)程中宕機(jī)時(shí),為了保證數(shù)據(jù)發(fā)送
9的可靠性,以及數(shù)據(jù)發(fā)送的效率,該第二節(jié)點(diǎn)需要按照設(shè)定的時(shí)間間隔,將自身已發(fā)送數(shù)據(jù)的長(zhǎng)度信息同步到每個(gè)接收到該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)中,以便當(dāng)該第二節(jié)點(diǎn)宕機(jī)時(shí),接收到該待發(fā)送數(shù)據(jù)的其他節(jié)點(diǎn)可以根據(jù)該第二節(jié)點(diǎn)已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,繼續(xù)進(jìn)行后續(xù)數(shù)據(jù)的發(fā)送。在本發(fā)明實(shí)施例中第二節(jié)點(diǎn)將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)后,當(dāng)該外部接收節(jié)點(diǎn)接收到該待發(fā)送數(shù)據(jù)后,向第二節(jié)點(diǎn)的發(fā)送模塊返回接收成功響應(yīng),為了保證該每個(gè)節(jié)點(diǎn)對(duì)再接收到的數(shù)據(jù)進(jìn)行準(zhǔn)確的處理,該第二節(jié)點(diǎn)的發(fā)送模塊要將該接收成功響應(yīng)返回自身的接收模塊中,該第二節(jié)點(diǎn)的接收模塊將該成功接收響應(yīng)返回第一節(jié)點(diǎn)的接收模塊時(shí),該第一節(jié)點(diǎn)的接收模塊將該成功接收響應(yīng)同步到,接收到該待發(fā)送數(shù)據(jù)的其他節(jié)點(diǎn)的接收模塊中。圖4為本發(fā)明實(shí)施例提供的以進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)包括三個(gè)為例,對(duì)數(shù)據(jù)發(fā)送過(guò)程的詳細(xì)描述,該過(guò)程包括以下步驟S401 客戶端向進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)發(fā)送待發(fā)送數(shù)據(jù)。S402 第一節(jié)點(diǎn)的接收模塊接收到該待發(fā)送數(shù)據(jù)后,將該待發(fā)送數(shù)據(jù)發(fā)送到自身的發(fā)送模塊中,并將該待發(fā)送數(shù)據(jù)同步到第二節(jié)點(diǎn)以及第三節(jié)點(diǎn)的發(fā)送模塊中。S403:第一節(jié)點(diǎn)的接收模塊在設(shè)定的時(shí)間長(zhǎng)度內(nèi),判斷是否接收到至少兩個(gè)發(fā)送模塊返回的成功接收響應(yīng),當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S404,否則,進(jìn)行步驟S411。S404:第一節(jié)點(diǎn)的接收模塊向客戶端發(fā)送成功接收響應(yīng),將該成功接收響應(yīng)同步到第二節(jié)點(diǎn)以及第三節(jié)點(diǎn)的接收模塊,并將成功接收到該待發(fā)送數(shù)據(jù)的每個(gè)節(jié)點(diǎn)的信息上報(bào)監(jiān)控節(jié)點(diǎn)。S405:監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)的接收模塊接收到該成功接收響應(yīng)后,通知自身的發(fā)送模塊將接收到的待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。S406:第二節(jié)點(diǎn)的發(fā)送模塊將接收到的待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn),記錄已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,并將該長(zhǎng)度信息同步到該至少一個(gè)其他節(jié)點(diǎn)。該第二節(jié)點(diǎn)的發(fā)送模塊將該長(zhǎng)度信息同步到至少一個(gè)其他節(jié)點(diǎn)的過(guò)程包括第二節(jié)點(diǎn)的發(fā)送模塊將該長(zhǎng)度信息發(fā)送到自身的接收模塊,自身的接收模塊將該長(zhǎng)度信息發(fā)送到第一節(jié)點(diǎn)的接收模塊,第一節(jié)點(diǎn)的接收模塊根據(jù)接收到該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)的信息,將該長(zhǎng)度信息同步到每個(gè)節(jié)點(diǎn)的接收模塊。S407 監(jiān)控節(jié)點(diǎn)按照設(shè)定的時(shí)間間隔,監(jiān)控每個(gè)上線的節(jié)點(diǎn)是否宕機(jī),當(dāng)監(jiān)控到第二節(jié)點(diǎn)宕機(jī)時(shí),根據(jù)第一節(jié)點(diǎn)發(fā)送的成功接收到該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)的信息,確定進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn),向該第三節(jié)點(diǎn)發(fā)送進(jìn)行數(shù)據(jù)發(fā)送的控制命令。S408 第三節(jié)點(diǎn)接收到進(jìn)行數(shù)據(jù)發(fā)送的控制命令后,根據(jù)自身保存的該第二節(jié)點(diǎn)已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,發(fā)送后續(xù)數(shù)據(jù)。S409 外部接收節(jié)點(diǎn)接收到該待發(fā)送數(shù)據(jù)后,向第三節(jié)點(diǎn)的發(fā)送模塊返回接收成功響應(yīng),第三節(jié)點(diǎn)將接收到的該接收成功響應(yīng)發(fā)送到自身的接收模塊,并由自身的接收模塊將該接收成功響應(yīng)同步到第一節(jié)點(diǎn)。S410:第一節(jié)點(diǎn)的接收模塊接收到該接收成功響應(yīng)后,根據(jù)成功接收到該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)的信息,將該接收成功響應(yīng)同步到每個(gè)節(jié)點(diǎn)。S411 第一節(jié)點(diǎn)的接收模塊向客戶端返回接收失敗響應(yīng),并且客戶端接收到該接收失敗響應(yīng)后,重新選擇進(jìn)行數(shù)據(jù)接收的節(jié)點(diǎn),將該節(jié)點(diǎn)作為第一節(jié)點(diǎn)返回步驟S402。在本發(fā)明實(shí)施例中為了保證數(shù)據(jù)發(fā)送的可靠性,該監(jiān)控節(jié)點(diǎn)采用雙機(jī)熱備的方式,即采用兩個(gè)監(jiān)控節(jié)點(diǎn),其中一個(gè)作為主監(jiān)控節(jié)點(diǎn),一個(gè)為備用監(jiān)控節(jié)點(diǎn)。主監(jiān)控節(jié)點(diǎn)正常時(shí),有其監(jiān)控每個(gè)節(jié)點(diǎn)的狀態(tài),并將監(jiān)控到的結(jié)果實(shí)時(shí)的同步到備用監(jiān)控節(jié)點(diǎn),當(dāng)該主監(jiān)控節(jié)點(diǎn)出現(xiàn)故障時(shí),備用監(jiān)控節(jié)點(diǎn)切換為主監(jiān)控節(jié)點(diǎn),實(shí)現(xiàn)對(duì)每個(gè)節(jié)點(diǎn)狀態(tài)的監(jiān)控。另外,當(dāng)監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)因?yàn)殄礄C(jī),該監(jiān)控節(jié)點(diǎn)確定了進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn)后,當(dāng)該第二節(jié)點(diǎn)從故障中恢復(fù),重新上線時(shí),由于該第二節(jié)點(diǎn)在宕機(jī)之前為進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn),為了避免上線后的第二節(jié)點(diǎn)和第三節(jié)點(diǎn)同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送,保證數(shù)據(jù)發(fā)送的準(zhǔn)確性,在本發(fā)明實(shí)施例中,當(dāng)被確定為數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)宕機(jī), 并恢復(fù)上線后,該第二節(jié)點(diǎn)主動(dòng)向監(jiān)控節(jié)點(diǎn)發(fā)送是否繼續(xù)發(fā)送待發(fā)送數(shù)據(jù)的請(qǐng)求,接收到該請(qǐng)求的監(jiān)控節(jié)點(diǎn),由于已經(jīng)重新確定了進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn),因此監(jiān)控節(jié)點(diǎn)向第二節(jié)點(diǎn)返回不繼續(xù)發(fā)送待發(fā)送數(shù)據(jù)的信息,接收到該信息的第二節(jié)點(diǎn)停止進(jìn)行數(shù)據(jù)的發(fā)送。為了同時(shí)處理針對(duì)多個(gè)客戶端,發(fā)送每個(gè)客戶端的待發(fā)送數(shù)據(jù),或者為了提高對(duì)該客戶端的所有待發(fā)送數(shù)據(jù)發(fā)送的效率,在本發(fā)明實(shí)施例中可以設(shè)置多個(gè)隊(duì)列,每個(gè)隊(duì)列中包括至少兩個(gè)進(jìn)行數(shù)據(jù)接收和發(fā)送的節(jié)點(diǎn)。如圖5所示的包括多個(gè)隊(duì)列的數(shù)據(jù)傳輸系統(tǒng)
的結(jié)構(gòu)示意圖,在該圖5中包括多個(gè)隊(duì)列,分別為第一隊(duì)列、第二隊(duì)列、第三隊(duì)列........
每個(gè)隊(duì)列中包括三個(gè)節(jié)點(diǎn),分別為第一節(jié)點(diǎn)、第二節(jié)點(diǎn)和第三節(jié)點(diǎn),監(jiān)控節(jié)點(diǎn)實(shí)現(xiàn)對(duì)每個(gè)隊(duì)列中的每個(gè)節(jié)點(diǎn)的監(jiān)控,客戶端用于發(fā)送待發(fā)送數(shù)據(jù),外部接收節(jié)點(diǎn)用于接收待發(fā)送數(shù)據(jù)。 其中在該系統(tǒng)中,隊(duì)列與隊(duì)列之間是平等的。當(dāng)某一隊(duì)列中的第一節(jié)點(diǎn)接收到客戶端發(fā)送的待發(fā)送數(shù)據(jù)后,例如該第一隊(duì)列的第一節(jié)點(diǎn)接收到該待發(fā)送數(shù)據(jù)后,在該第一隊(duì)列內(nèi)部,第一節(jié)點(diǎn)將該待發(fā)送數(shù)據(jù)同步到第二節(jié)點(diǎn)和第三節(jié)點(diǎn),并且確定為數(shù)據(jù)發(fā)送節(jié)點(diǎn)的第二節(jié)點(diǎn)進(jìn)行該待發(fā)送數(shù)據(jù)的發(fā)送。同時(shí)該第二隊(duì)列可以用來(lái)發(fā)送其他客戶端的待發(fā)送數(shù)據(jù),或者發(fā)送該客戶端的其他待發(fā)送數(shù)據(jù),同時(shí)該系統(tǒng)中包含的隊(duì)列的數(shù)量可以根據(jù)需要靈活的設(shè)置,從而有效的提高了系統(tǒng)的吞吐量。另外,在每個(gè)隊(duì)列的每個(gè)節(jié)點(diǎn)中都可以設(shè)置標(biāo)準(zhǔn)化的接口,在每個(gè)節(jié)點(diǎn)下可以級(jí)聯(lián)多個(gè)子節(jié)點(diǎn),當(dāng)該節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的發(fā)送時(shí),可以通過(guò)該節(jié)點(diǎn)級(jí)聯(lián)的子節(jié)點(diǎn)實(shí)現(xiàn),因此當(dāng)包括多個(gè)外部接收節(jié)點(diǎn)時(shí),可以有效的加快數(shù)據(jù)同步的速度。本發(fā)明實(shí)施例提供了一種數(shù)據(jù)發(fā)送方法及系統(tǒng),該方法中接收到客戶端發(fā)送的待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),并且在接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,將成功接收響應(yīng)同步到控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn),第二節(jié)點(diǎn)接收到該成功接收響應(yīng)后,將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。由于在本發(fā)明實(shí)施例中,在進(jìn)行數(shù)據(jù)發(fā)送的過(guò)程中,該待發(fā)送數(shù)據(jù)備份了至少兩份,因此可以有效的保證數(shù)據(jù)傳輸?shù)目煽啃?。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)發(fā)送方法,其特征在于,包括接收到客戶端發(fā)送的待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)占.^ \\\ 當(dāng)該第一節(jié)點(diǎn)接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,將該成功接收響應(yīng)同步到監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)接收到該成功接收響應(yīng)后,將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。
2.如權(quán)利要求1所述的方法,其特征在于,監(jiān)控節(jié)點(diǎn)確定進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)包括所述監(jiān)控節(jié)點(diǎn)接收每個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)上線后上報(bào)的信息; 根據(jù)接收的信息,及查詢到的每個(gè)節(jié)點(diǎn)是否宕機(jī)的信息,選擇進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)ο
3.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)該第一節(jié)點(diǎn)接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,所述方法還包括所述第一節(jié)點(diǎn)向所述客戶端發(fā)送成功接收響應(yīng),并將成功接收到該待發(fā)送數(shù)據(jù)的每個(gè)節(jié)點(diǎn)的信息上報(bào)監(jiān)控節(jié)點(diǎn)。
4.如權(quán)利要求3所述的方法,其特征在于,所述方法還包括當(dāng)所述客戶端在設(shè)定的時(shí)間長(zhǎng)度內(nèi)未接收到所述第一節(jié)點(diǎn)返回的成功接收響應(yīng)時(shí),重新發(fā)送該待發(fā)送數(shù)據(jù)。
5.如權(quán)利要求1所述的方法,其特征在于,所述第二節(jié)點(diǎn)將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)之后,所述方法還包括所述第二節(jié)點(diǎn)的接收所述外部接收節(jié)點(diǎn)發(fā)送的接收成功響應(yīng)信息,并將所述接收成功響應(yīng)信息同步到該返回成功接收響應(yīng)的每個(gè)其他節(jié)點(diǎn)。
6.如權(quán)利要求1所述的方法,其特征在于,第二節(jié)點(diǎn)將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)包括所述第二節(jié)點(diǎn)的記錄已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,并將該長(zhǎng)度信息同步到該返回成功接收響應(yīng)的每個(gè)其他節(jié)點(diǎn)。
7.如權(quán)利要求6所述的方法,其特征在于,當(dāng)所述監(jiān)控節(jié)點(diǎn)識(shí)別到該第二節(jié)點(diǎn)出現(xiàn)故障時(shí),在保存的每個(gè)成功接收該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)中確定進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn),所述第三節(jié)點(diǎn)根據(jù)保存的所述第二節(jié)點(diǎn)已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,發(fā)送后續(xù)數(shù)據(jù)。
8.一種數(shù)據(jù)發(fā)送系統(tǒng),其特征在于,所述系統(tǒng)包括 客戶端,用于發(fā)送待發(fā)送數(shù)據(jù);第一節(jié)點(diǎn),用于接收所述客戶端發(fā)送的待發(fā)送數(shù)據(jù),并將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),接收至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng),將該成功接收響應(yīng)同步到監(jiān)控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);第二節(jié)點(diǎn),用于接收所述第一節(jié)點(diǎn)同步的待發(fā)送數(shù)據(jù),并向所述第一節(jié)點(diǎn)返回成功接收響應(yīng),接收到所述第一節(jié)點(diǎn)同步的成功接收響應(yīng)后,將接收到的待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn);監(jiān)控節(jié)點(diǎn),用于確定進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn);外部接收節(jié)點(diǎn),用于接收所述第二節(jié)點(diǎn)發(fā)送的待發(fā)送數(shù)據(jù)。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述監(jiān)控節(jié)點(diǎn)具體用于,接收每個(gè)進(jìn)行數(shù)據(jù)發(fā)送的節(jié)點(diǎn)上線后上報(bào)的信息,根據(jù)接收的信息,及查詢到的每個(gè)節(jié)點(diǎn)是否宕機(jī)的信息,選擇進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn)。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)中, 所述第一節(jié)點(diǎn)還用于,向所述客戶端發(fā)送成功接收響應(yīng),并將成功接收到該待發(fā)送數(shù)據(jù)的每個(gè)節(jié)點(diǎn)的信息上報(bào)監(jiān)控節(jié)點(diǎn)。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述客戶端還用于,判斷在設(shè)定的時(shí)間長(zhǎng)度內(nèi)是否接收到所述第一節(jié)點(diǎn)返回的成功接收響應(yīng),當(dāng)在設(shè)定的時(shí)間長(zhǎng)度內(nèi)未接收到所述第一節(jié)點(diǎn)返回的成功接收響應(yīng)時(shí),重新發(fā)送該待發(fā)送數(shù)據(jù)。
12.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)中,所述外部接收節(jié)點(diǎn)還用于,在接收成功時(shí),向所述第二節(jié)點(diǎn)返回接收成功響應(yīng)信息;所述第二節(jié)點(diǎn)還用于,接收所述外部接收節(jié)點(diǎn)發(fā)送的接收成功響應(yīng)信息,并將所述接收成功響應(yīng)信息同步到該返回成功接收響應(yīng)的每個(gè)其他節(jié)點(diǎn)。
13.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述系統(tǒng)中,所述第二節(jié)點(diǎn)還用于,記錄已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,并將該長(zhǎng)度信息同步到該返回成功接收響應(yīng)的每個(gè)其他節(jié)點(diǎn)。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述系統(tǒng)中,所述監(jiān)控節(jié)點(diǎn)還用于,識(shí)別到該第二節(jié)點(diǎn)出現(xiàn)故障時(shí),在保存的每個(gè)成功接收該待發(fā)送數(shù)據(jù)的節(jié)點(diǎn)中確定進(jìn)行數(shù)據(jù)發(fā)送的第三節(jié)點(diǎn);所述系統(tǒng)還包括第三節(jié)點(diǎn),用于根據(jù)保存的所述第二節(jié)點(diǎn)已發(fā)送數(shù)據(jù)的長(zhǎng)度信息,發(fā)送后續(xù)數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)發(fā)送方法及系統(tǒng),用以解決現(xiàn)有技術(shù)中在大數(shù)據(jù)量的環(huán)境中,數(shù)據(jù)傳輸可靠性差的問(wèn)題。該方法接收到客戶端發(fā)送的待發(fā)送數(shù)據(jù)的第一節(jié)點(diǎn),將該待發(fā)送數(shù)據(jù)同步到至少一個(gè)其他節(jié)點(diǎn),并且在接收到至少一個(gè)其他節(jié)點(diǎn)返回的成功接收響應(yīng)后,將成功接收響應(yīng)同步到控節(jié)點(diǎn)確定的進(jìn)行數(shù)據(jù)發(fā)送的第二節(jié)點(diǎn),第二節(jié)點(diǎn)接收到該成功接收響應(yīng)后,將該待發(fā)送數(shù)據(jù)發(fā)送到外部接收節(jié)點(diǎn)。由于在本發(fā)明實(shí)施例中,在進(jìn)行數(shù)據(jù)發(fā)送的過(guò)程中,該待發(fā)送數(shù)據(jù)備份了至少兩份,因此可以有效的保證數(shù)據(jù)傳輸?shù)目煽啃浴?br>
文檔編號(hào)H04W24/04GK102547809SQ20101060659
公開(kāi)日2012年7月4日 申請(qǐng)日期2010年12月24日 優(yōu)先權(quán)日2010年12月24日
發(fā)明者蘭建明, 孫少陵, 錢嶺, 韓金宇 申請(qǐng)人:中國(guó)移動(dòng)通信集團(tuán)公司