數(shù)據(jù)傳輸系統(tǒng)及利用該系統(tǒng)進(jìn)行上行數(shù)據(jù)傳輸?shù)姆椒?br>【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種數(shù)據(jù)傳輸系統(tǒng)及利用該系統(tǒng)進(jìn)行上行數(shù)據(jù)傳輸?shù)姆椒ā?br>【背景技術(shù)】
[0002]通信中間件是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序應(yīng)用軟件,當(dāng)前流行的通信中間件包括MQ、ZEROMQ, TUXEDO等。借助通信中間件可以實(shí)現(xiàn)不同技術(shù)之間的資源共享。通信中間件位于客戶機(jī)/服務(wù)器的操作系統(tǒng)至上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通信,連接兩個(gè)獨(dú)立的應(yīng)用程序或系統(tǒng)。利用通信中間件連接的兩個(gè)系統(tǒng)即使具有不同的接口,也能實(shí)現(xiàn)相互交換信息。通過(guò)通信中間件,應(yīng)用程序可以工作在多平臺(tái)或操作系統(tǒng)環(huán)境中。通過(guò)通信中間件,可以提高數(shù)據(jù)的傳輸速率,實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā),實(shí)現(xiàn)應(yīng)用分布式部署、服務(wù)的負(fù)載均衡和數(shù)據(jù)傳輸高可用等,極大的解決了平臺(tái)和應(yīng)用通信所遇到的困難。
[0003]市場(chǎng)眾多種類的通信中間件解決了應(yīng)用服務(wù)數(shù)據(jù)傳輸中需要的分布式部署場(chǎng)景,但是當(dāng)通信網(wǎng)絡(luò)出現(xiàn)故障導(dǎo)致通信短時(shí)間中斷時(shí),用戶都能感知到該中斷,從而影響到數(shù)據(jù)的傳輸。而且當(dāng)通信恢復(fù)正常時(shí),需要重新連接,進(jìn)而增加了系統(tǒng)開銷。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是如何避免只要有中斷故障就中斷數(shù)據(jù)的傳輸,以不影響數(shù)據(jù)的傳輸和減少系統(tǒng)的開銷。
[0005]為此目的,本發(fā)明提出了一種數(shù)據(jù)傳輸系統(tǒng)及利用該系統(tǒng)進(jìn)行上行數(shù)據(jù)傳輸?shù)姆椒ā?br>[0006]該系統(tǒng)包括應(yīng)用程序客戶端、應(yīng)用程序服務(wù)端和通信中間件,其中所述通信中間件包括:
[0007]中間件客戶端模塊,與所述應(yīng)用程序客戶端通信連接,用于與所述應(yīng)用程序客戶端進(jìn)行數(shù)據(jù)交互;
[0008]中間件服務(wù)端模塊,與所述應(yīng)用程序服務(wù)端通信連接,用于與所述應(yīng)用程序服務(wù)端進(jìn)行數(shù)據(jù)交互;
[0009]中間件處理模塊,用于與所述中間件客戶端模塊和所述中間件服務(wù)端模塊進(jìn)行數(shù)據(jù)交互。
[0010]進(jìn)一步地,所述中間件處理模塊包括通信探針模塊,所述通信探針模塊用于利用探針判斷所述通信中間件分別與所述應(yīng)用程序客戶端、所述應(yīng)用程序服務(wù)端之間的連接狀
??τ O
[0011]進(jìn)一步地,所述中間件處理模塊包括負(fù)載監(jiān)控模塊,所述負(fù)載監(jiān)控模塊用于實(shí)時(shí)監(jiān)控系統(tǒng)CPU和系統(tǒng)內(nèi)存的使用情況。
[0012]進(jìn)一步地,所述中間件處理模塊包括壓縮模塊,所述壓縮模塊用于對(duì)所述應(yīng)用程序客戶端發(fā)送的上行數(shù)據(jù)在存儲(chǔ)之前進(jìn)行壓縮。
[0013]該方法包括:
[0014]判斷在預(yù)定時(shí)間內(nèi)所述通信中間件分別與所述應(yīng)用程序客戶端、所述應(yīng)用程序服務(wù)端之間的連接狀態(tài);
[0015]若在預(yù)定時(shí)間內(nèi)所述通信中間件與所述應(yīng)用程序客戶端之間為連接狀態(tài),且與所述應(yīng)用程序服務(wù)端之間為斷開狀態(tài),則判斷是否允許存儲(chǔ)數(shù)據(jù);若允許,則將所述應(yīng)用程序客戶端發(fā)來(lái)的上行數(shù)據(jù)進(jìn)行存儲(chǔ)。
[0016]進(jìn)一步地,該方法還包括:
[0017]若不允許存儲(chǔ)數(shù)據(jù),則所述中間件處理模塊向中間件客戶端模塊發(fā)送停止接收上行數(shù)據(jù)的命令,且所述中間件客戶端模塊向所述應(yīng)用程序客戶端發(fā)送故障通知。
[0018]進(jìn)一步地,所述判斷在預(yù)定時(shí)間內(nèi)所述通信中間件分別與所述應(yīng)用程序客戶端、所述應(yīng)用程序服務(wù)端之間的連接狀態(tài),包括:
[0019]所述通信中間件分別向所述應(yīng)用程序客戶端和所述應(yīng)用程序服務(wù)端定時(shí)發(fā)送探針;
[0020]判斷所述通信中間件是否在預(yù)定時(shí)間內(nèi)收到來(lái)自所述應(yīng)用程序客戶端或所述應(yīng)用程序服務(wù)端的探針反饋信號(hào);
[0021 ] 若所述通信中間件在預(yù)定時(shí)間內(nèi)收到來(lái)自所述應(yīng)用程序客戶端的探針反饋信號(hào),則所述通信中間件與所述應(yīng)用程序客戶端之間為連接狀態(tài);否則,所述通信中間件與所述應(yīng)用程序客戶端之間為斷開狀態(tài);
[0022]若所述通信中間件在預(yù)定時(shí)間內(nèi)收到來(lái)自所述應(yīng)用程序服務(wù)端的探針反饋信號(hào),則所述通信中間件與所述應(yīng)用程序服務(wù)端之間為連接狀態(tài);否則,所述通信中間件與所述應(yīng)用程序服務(wù)端之間為斷開狀態(tài)。
[0023]進(jìn)一步地,所述判斷是否允許存儲(chǔ)數(shù)據(jù),包括:
[0024]判斷系統(tǒng)CPU使用率、系統(tǒng)內(nèi)存已占用大小是否達(dá)到預(yù)定上限值;
[0025]若所述系統(tǒng)CPU使用率和系統(tǒng)內(nèi)存已占用大小均未達(dá)到預(yù)定上限值時(shí),則允許存儲(chǔ)數(shù)據(jù);
[0026]否則,不允許存儲(chǔ)數(shù)據(jù)。
[0027]進(jìn)一步地,所述將所述應(yīng)用程序客戶端發(fā)來(lái)的上行數(shù)據(jù)進(jìn)行存儲(chǔ),包括:
[0028]接收并壓縮所述上行數(shù)據(jù);
[0029]根據(jù)壓縮后的上行數(shù)據(jù)的大小在系統(tǒng)內(nèi)存中申請(qǐng)緩存空間;
[0030]將壓縮后的上行數(shù)據(jù)存儲(chǔ)在申請(qǐng)的緩存空間內(nèi),并將上行數(shù)據(jù)的數(shù)據(jù)格式保存在內(nèi)地緩存中。
[0031]在進(jìn)行上行數(shù)據(jù)傳輸時(shí),當(dāng)通信中間件與應(yīng)用程序服務(wù)端之間斷開,而通信中間件與應(yīng)用程序客戶端之間連接時(shí),將應(yīng)用程序客戶端發(fā)來(lái)的數(shù)據(jù)進(jìn)行緩存,當(dāng)通信中間件和應(yīng)用程序服務(wù)端之間恢復(fù)正常連接時(shí),通信中間件將緩存的上行數(shù)據(jù)發(fā)送至應(yīng)用程序服務(wù)端。這樣的話,并不是只要數(shù)據(jù)傳輸系統(tǒng)出現(xiàn)故障,就發(fā)出報(bào)警通知,中斷數(shù)據(jù)的傳輸??梢姡谕ㄐ胖虚g件與應(yīng)用程序服務(wù)端斷開但未與應(yīng)用程序客戶端斷開時(shí),本發(fā)明在數(shù)據(jù)不會(huì)丟失的前提下,不中斷數(shù)據(jù)的傳輸,當(dāng)數(shù)據(jù)傳輸系統(tǒng)恢復(fù)正常時(shí),也就不需要重新連接,節(jié)約了重新連接需要的系統(tǒng)開銷。
【附圖說(shuō)明】
[0032]通過(guò)參考附圖會(huì)更加清楚的理解本發(fā)明的特征和優(yōu)點(diǎn),附圖是示意性的而不應(yīng)理解為對(duì)本發(fā)明進(jìn)行任何限制,在附圖中:
[0033]圖1示出了上行數(shù)據(jù)傳輸?shù)目傮w流程圖;
[0034]圖2示出了上行數(shù)據(jù)傳輸?shù)木唧w流程圖;
[0035]圖3示出了對(duì)上行數(shù)據(jù)進(jìn)行存儲(chǔ)的流程圖;
[0036]圖4示出了本發(fā)明提供的一種數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)框圖;
[0037]圖5示出了中間件處理模塊的結(jié)構(gòu)框圖;
[0038]圖6示出了本發(fā)明提供的一種上行數(shù)據(jù)傳輸方法的流程圖。
【具體實(shí)施方式】
[0039]下面將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述。
[0040]本發(fā)明提供一種數(shù)據(jù)傳輸系統(tǒng),如圖1、2、4所示,該系統(tǒng)包括應(yīng)用程序客戶端、應(yīng)用程序服務(wù)端和通信中間件,其中所述通信中間件包括:
[0041]中間件客戶端模塊,與所述應(yīng)用程序客戶端通信連接,用于與所述應(yīng)用程序客戶端進(jìn)行數(shù)據(jù)交互;
[0042]中間件服務(wù)端模塊,與所述應(yīng)用程序服務(wù)端通信連接,用于與所述應(yīng)用程序服務(wù)端進(jìn)行數(shù)據(jù)交互;
[0043]中間件處理模塊,用于與所述中間件客戶端模塊和所述中間件服務(wù)端模塊進(jìn)行數(shù)據(jù)交互。
[0044]中間件客戶端模塊與所述應(yīng)用程序客戶端進(jìn)行數(shù)據(jù)交互,是指中間件客戶端模塊能接收來(lái)自應(yīng)用程序客戶端的數(shù)據(jù),也能向應(yīng)用程序發(fā)送數(shù)據(jù)。中間件服務(wù)端模塊與所述應(yīng)用程序服務(wù)端進(jìn)行數(shù)據(jù)交互,是指中間件服務(wù)端模塊能接收來(lái)自應(yīng)用程序服務(wù)端的數(shù)據(jù),也能向應(yīng)用程序發(fā)送數(shù)據(jù)。中間件處理模塊與所述中間件客戶端模塊和所述中間件服務(wù)端模塊進(jìn)行數(shù)據(jù)交互,是指中間件處理模塊能接收來(lái)自中間件客戶端模塊、中間件服務(wù)端模塊的數(shù)據(jù),也能向中間件客戶端模塊、中間件服務(wù)端模塊發(fā)送數(shù)據(jù)。
[0045]中間件客戶端模塊、中間件服務(wù)端模塊接收中間件處理模塊發(fā)來(lái)的功能信號(hào)或向中間件處理模塊發(fā)送信號(hào)等。中間件處理模塊對(duì)中間件客戶端模塊、中間件服務(wù)端模塊發(fā)來(lái)的數(shù)據(jù)進(jìn)行處理、發(fā)出指令等。中間件處理模塊是通信中間件的核心,具有數(shù)據(jù)傳輸處理、數(shù)據(jù)緩存空間申請(qǐng)、系統(tǒng)環(huán)境監(jiān)控、探針探測(cè)、數(shù)據(jù)格式記憶等功能。
[0046]進(jìn)一步地,如圖5所示,所述中間件處理模塊包括通信探針模塊,所述通信探針模塊用于利用探針判斷所述通信中間件分別與所述應(yīng)用程序客戶端、所述應(yīng)用程序服務(wù)端之間的連接狀態(tài)。
[0047]中間件處理模塊通過(guò)通信探針模塊,判斷通信中間件與應(yīng)用程序客戶端之間、通信中間件與應(yīng)用程序服務(wù)端之間的連接狀態(tài),可以得知當(dāng)前的數(shù)據(jù)傳輸系統(tǒng)是處于正常通信還是故障狀態(tài),從而對(duì)數(shù)據(jù)的傳輸進(jìn)行控制。
[0048]進(jìn)一步地,如圖5所示,所述中間件處理模塊包括負(fù)載監(jiān)控模塊,所述負(fù)載監(jiān)控模塊用于實(shí)時(shí)監(jiān)控系統(tǒng)CPU和系統(tǒng)內(nèi)存的使用情況。
[0049]當(dāng)數(shù)據(jù)傳輸系統(tǒng)的通信中間件和應(yīng)用程序服務(wù)端之間出現(xiàn)短時(shí)間中斷故障時(shí),需要將應(yīng)用程序客戶端發(fā)來(lái)的上行數(shù)據(jù)進(jìn)行暫存,在數(shù)據(jù)傳輸系統(tǒng)恢復(fù)正常時(shí),將該上行數(shù)據(jù)發(fā)送至應(yīng)用程序服務(wù)端。在這種情況下,得知是否有足夠的緩存空間存儲(chǔ)上行數(shù)據(jù)很重要,所以該系統(tǒng)采用負(fù)載監(jiān)控模塊,對(duì)系統(tǒng)CPU和系統(tǒng)內(nèi)存的使用情況進(jìn)行實(shí)時(shí)監(jiān)控。
[0050]進(jìn)一步地,如圖5所示,所述中間件處理模塊包括壓縮模塊,所述壓縮模塊用于對(duì)所述應(yīng)用程序客戶端發(fā)來(lái)的上行數(shù)據(jù)在存儲(chǔ)之前進(jìn)行壓縮。
[0051]當(dāng)需要緩存數(shù)據(jù)時(shí),首先將數(shù)據(jù)進(jìn)行壓縮,在進(jìn)行存儲(chǔ),壓縮可減少占用空間大小,以便存儲(chǔ)更多的數(shù)據(jù)。
[0052]本發(fā)明提供一種利用上述數(shù)據(jù)傳輸系統(tǒng)進(jìn)行上行數(shù)據(jù)傳輸?shù)姆椒?,如圖6所示,該方法包括:
[0053]判斷在預(yù)定時(shí)間內(nèi)所述通信中間件分別與所述應(yīng)用程序客戶端、所述應(yīng)用程序服務(wù)端之間的連接狀態(tài);
[0054]若