- 相關(guān)推薦
可靠消息系統移動(dòng)網(wǎng)絡(luò )的論文
1消息系統設計
1.1系統基礎架構
基于不可靠移動(dòng)網(wǎng)絡(luò )的消息系統,是目前移動(dòng)互聯(lián)網(wǎng)及時(shí)通訊研究的熱點(diǎn),無(wú)論是消息推送,還是IM等及時(shí)通訊應用都涉及這個(gè)方面的問(wèn)題,如何保證消息及時(shí)有效地送到用戶(hù)是研究的關(guān)鍵。從技術(shù)上,消息的送達主要有2類(lèi)技術(shù),一類(lèi)是客戶(hù)端輪詢(xún),即客戶(hù)端不斷地發(fā)送請求獲取新內容;另一類(lèi)是推送,即服務(wù)端在有消息內容時(shí)將消息推送到客戶(hù)端。輪詢(xún)實(shí)現比較簡(jiǎn)單,即客戶(hù)端在一定的時(shí)間間隔內向服務(wù)端請求,獲取新的數據,目前這種方式在當前互聯(lián)網(wǎng)上的消息應用中較為普遍。但這種方式在移動(dòng)網(wǎng)絡(luò )下存在較多問(wèn)題,如果設置時(shí)間間隔太長(cháng),會(huì )造成消息的及時(shí)性不夠,如果設置太短,會(huì )造成較大的數據流量,移動(dòng)網(wǎng)絡(luò )目前的流量成本還比較高,另外對移動(dòng)設備的電量消耗較大。而推送方式采用長(cháng)連接的方式,有效地避免了上述問(wèn)題,但是,由于移動(dòng)網(wǎng)絡(luò )的不穩定性,在長(cháng)連接情況下沒(méi)有傳統網(wǎng)絡(luò )穩定,客戶(hù)端時(shí)有掉線(xiàn)。因此筆者在參考推送模式和XMPP(ExtensibleMessagingandPresenceProtocol,可擴展消息與出席協(xié)議)的基礎上,借用輪詢(xún)請求的方式,實(shí)現消息的有效回執,同時(shí)采用重試鏈接的方式回避長(cháng)連接的不穩定,在傳統的推送基礎上加了重發(fā)機制。該消息系統在架構上由客戶(hù)端、服務(wù)端和數據層構成,各層由不同子功能模塊組成?蛻(hù)端主要為用戶(hù)提供交互操作的界面,包含消息回執、消息顯示等模塊,其核心是客戶(hù)端收到消息后,根據消息體的相關(guān)屬性決定消息是否需要回執,采用何種模板進(jìn)行消息體的展示。服務(wù)端由多臺基于Openfire的IM服務(wù)器集群、Zookeeper集群以及消息待發(fā)隊列和重發(fā)隊列組成,用于處理、轉發(fā)及重發(fā)客戶(hù)端消息、接收客戶(hù)端消息回執、監聽(tīng)客戶(hù)端狀態(tài)等。此外,還包含統一的數據訪(fǎng)問(wèn)接口,用于訪(fǎng)問(wèn)緩存數據庫。數據層用于存儲來(lái)自應用系統的相關(guān)數據和用戶(hù)狀態(tài),其中緩存數據庫主要存儲用戶(hù)信息及離線(xiàn)消息等,Zookeeper集群主要存儲IM服務(wù)器集群的共享數據。
1.2各模塊功能
1)客戶(hù)端消息回執模塊用于構造并發(fā)送客戶(hù)端消息回執。當客戶(hù)端成功接收在線(xiàn)消息或離線(xiàn)消息時(shí),立刻向服務(wù)端發(fā)送“成功接收在線(xiàn)消息”或“成功接收離線(xiàn)消息”的回執,告知服務(wù)器客戶(hù)端已成功接收到消息,不用重復向其發(fā)送此消息,服務(wù)端的業(yè)務(wù)層根據回執的情況對消息進(jìn)行相應的業(yè)務(wù)處理。
2)客戶(hù)端消息顯示模塊根據消息類(lèi)型對消息予以不同的顯示。消息主要分為普通消息、多媒體消息、聯(lián)動(dòng)消息3類(lèi),客戶(hù)端消息顯示模塊根據上述的類(lèi)型,從消息彈出方式、消息字體顏色、消息的聯(lián)動(dòng)等方面進(jìn)行不同的處理。比如消息是否需要彈出、客戶(hù)端收到消息的聲音模式以及該消息內容是否進(jìn)行下一步聯(lián)動(dòng)操作。
3)服務(wù)端消息處理模塊主要負責接收客戶(hù)端的消息回執,當該模塊接收到客戶(hù)端的消息回執時(shí),表示客戶(hù)端已經(jīng)收到該消息,后續對該消息進(jìn)行完整的事務(wù)處理,把該消息從待發(fā)隊列移除,同時(shí)置該消息狀態(tài)位為已發(fā)送。
4)服務(wù)端消息處理推送模塊主要根據消息接收者的狀態(tài)實(shí)行不同的消息發(fā)送策略,同時(shí)根據消息的內容和形式組成不同的消息體,便于客戶(hù)端進(jìn)行消息的顯示,同時(shí)提供其他應用服務(wù)器能夠通過(guò)IM服務(wù)器向客戶(hù)端推送消息接口。
5)服務(wù)端消息重發(fā)模塊用于重新發(fā)送未成功送達客戶(hù)端的消息。服務(wù)器端維護一個(gè)重發(fā)隊列保存其發(fā)送過(guò)的消息,當收到回執時(shí)則從隊列刪除相應消息,若未收到回執,則在計時(shí)器周期遍歷重發(fā)隊列時(shí)重發(fā)此消息,以此來(lái)提高服務(wù)器端向客戶(hù)端發(fā)送消息的可靠性。服務(wù)器端根據消息的重要程度采用不同級別的重發(fā)策略,越重要的消息重發(fā)的頻率和次數越高,多級別的重發(fā)策略便于定制,更為靈活。
6)服務(wù)端狀態(tài)管理模塊主要是維護客戶(hù)端的長(cháng)連接狀態(tài),如客戶(hù)端上線(xiàn)、離線(xiàn)、暫時(shí)不接受某類(lèi)消息等,該模塊對消息推送策略的制定至關(guān)重要。
7)數據層的數據存儲模塊主要是對消息內容的保存和用戶(hù)連接狀態(tài)的存儲,由于消息的量比較大,文件大小較小,采用緩存機制可以有效降低磁盤(pán)IO吞吐消耗,緩存機制的讀取和存儲速度較快,有效地提升系統的響應速度。
1.3重發(fā)策略分析
保障客戶(hù)端的消息接收是本文的關(guān)鍵,難點(diǎn)在重發(fā)策略。消息重發(fā)策略包括服務(wù)端消息重發(fā)策略及客戶(hù)端消息回執策略。為支持服務(wù)端消息重發(fā)功能,IM服務(wù)器需要維護一個(gè)消息重發(fā)隊列,當IM服務(wù)器推送完成一條消息后,將該消息從待發(fā)隊列中移到重發(fā)隊列,IM服務(wù)器檢測客戶(hù)端的在線(xiàn)狀態(tài),如果在線(xiàn),則立即發(fā)送,同時(shí)待成功收到客戶(hù)端的回執時(shí)從重發(fā)隊列刪除相應的消息,如果不在線(xiàn),則將消息存為離線(xiàn)消息,標識消息的發(fā)送時(shí)間和已發(fā)送次數。IM服務(wù)器采用集群方式,各個(gè)IM服務(wù)器需要共享同一個(gè)消息重發(fā)隊列,本文借助Zookeeper實(shí)現消息隊列的共享與同步。Zookeeper是通過(guò)選舉產(chǎn)生leader和follower,其算法正確執行的前提是有一半以上機器正常工作,每臺機器部署一個(gè)IM服務(wù)器及一個(gè)Zookeeper服務(wù)器,各IM服務(wù)器之間進(jìn)行負載平衡,各Zookeeper之間進(jìn)行數據同步,IM服務(wù)器優(yōu)先從本地Zookeeper存取數據。各機器中只有一臺機器作為主服務(wù)器,其余作為從屬服務(wù)器,主服務(wù)器負責消息的重發(fā)。計時(shí)器控制消息重發(fā),要求重發(fā)隊列中的消息至少包含消息體、已重發(fā)次數、上一次發(fā)送時(shí)間等數據。當執行計時(shí)器任務(wù)遍歷重發(fā)隊列時(shí),若某消息距上次發(fā)送時(shí)間超過(guò)閾值則重發(fā)此消息,并修改消息最后一次發(fā)送時(shí)間以及已發(fā)送次數,當某消息發(fā)送次數達到設定的上限時(shí)就將其存為離線(xiàn)消息,待用戶(hù)登錄以后再接收此消息。
2消息系統實(shí)現
本系統在完成設計后,筆者搭建了一套測試系統,該系統服務(wù)端采用4臺2CPU/4G內存機器做IM服務(wù)器和3個(gè)Zookeeper集群,1臺2CPU/8G內存的服務(wù)器作為數據存儲的redis服務(wù)器。同時(shí)選取了目前市場(chǎng)比較主流的中國移動(dòng)2GAndroid手機1臺,中國聯(lián)通的3GAndroid手機終端1臺。在應用搭建完成后,分別在2G、3G網(wǎng)絡(luò )下,通過(guò)服務(wù)端進(jìn)行了100、1000、1000、10000條消息向客戶(hù)端推送,一種情況是消息沒(méi)有重發(fā)和回執策略,另一種情況采取5次的重發(fā)策略和消息回執策略,特別是2G(不穩定)的網(wǎng)絡(luò ),通過(guò)提升重試次數,大大增加了消息的投達能力,消息到達率由80%多平均提升到96%左右,而在3G網(wǎng)絡(luò )下,消息的到達率也平均有90%提升到98%左右。同時(shí)由于有了消息回執機制,服務(wù)端顯示的消息到達條數和客戶(hù)端實(shí)際收到的消息條數是一致的。而沒(méi)有采用消息回執策略的,客戶(hù)端實(shí)際收到的消息大概是95%左右,有5%的異常情況。進(jìn)一步分析各種失敗的消息情況,可以看到重試間隔時(shí)間越長(cháng),消息的失敗率越高。從測試報告可以看出,系統的重試間隔時(shí)間在一定范圍內,成功率比較高,隨著(zhù)時(shí)間越長(cháng),成功率顯著(zhù)下降。因此重試間隔也有一定的限制。
3結束語(yǔ)
隨著(zhù)從傳統的互聯(lián)網(wǎng)時(shí)代步入移動(dòng)互聯(lián)網(wǎng)時(shí)代,無(wú)論對于個(gè)人還是企業(yè),對于即時(shí)通訊的需求一直有增無(wú)減,及時(shí)獲取消息,對提升用戶(hù)體驗,保證通信質(zhì)量,提高用戶(hù)滿(mǎn)意度,增強產(chǎn)品及企業(yè)的競爭力具有重要的意義。本文通過(guò)結合推送和輪詢(xún)模式,探索出一種基于移動(dòng)網(wǎng)絡(luò )安全可靠的消息系統。它既能大大地提升服務(wù)能力和服務(wù)體驗,還能有效地降低系統成本。
【可靠消息系統移動(dòng)網(wǎng)絡(luò )的論文】相關(guān)文章:
衛星移動(dòng)通信系統的論文10-15
移動(dòng)通信系統網(wǎng)絡(luò )安全防范研究論文08-29
移動(dòng)網(wǎng)絡(luò )監控系統的設計與實(shí)現07-19
探析移動(dòng)網(wǎng)絡(luò )監控系統的設計與實(shí)現10-10
網(wǎng)絡(luò )應用系統下的網(wǎng)絡(luò )工程論文08-16
網(wǎng)絡(luò )應用系統教學(xué)網(wǎng)絡(luò )工程論文05-17