教程linux遠(yuǎn)程全科boost ace messenger servers high level design specification_第1頁
教程linux遠(yuǎn)程全科boost ace messenger servers high level design specification_第2頁
教程linux遠(yuǎn)程全科boost ace messenger servers high level design specification_第3頁
教程linux遠(yuǎn)程全科boost ace messenger servers high level design specification_第4頁
教程linux遠(yuǎn)程全科boost ace messenger servers high level design specification_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

內(nèi)容簡 概 定 參考文 2.X-Messenger系統(tǒng)描 2.1.X-Messenger系統(tǒng)網(wǎng)絡(luò)拓 2.2.X-Messenger子系統(tǒng)介 Register Router Presence Database Management2.2.7.X-Messenger 高負(fù)載網(wǎng)絡(luò) 大規(guī)模數(shù)據(jù)的....................................................................................................................................... 系統(tǒng)架 RouterServer和PresenceServer架 RegisterServer架 C++Boost C++ C++ 子系統(tǒng)部 硬件配 軟件環(huán) RouterServer和Presence Register 用戶.....................................................................................................................................................用戶.............................................................................................................................................用戶激 用戶信息更 用戶登 好友管 添加好 刪除好 用戶(加入 解除用戶(從中刪除 添加 刪除 組重命 聊天消 即時消 離線消 文件傳 5.6.1.文件傳輸流 好友搜 簡X-Messenger推出的即時通信(InstantMessenger)工具,提供文X-MessengerServer系統(tǒng)設(shè)計(jì)原則系統(tǒng)(Server)模塊設(shè)計(jì)原則:INFO,DEBUG,WARNING,ERRORInstantMessengerXMMEP:X-MessengerMessageExchangeProtocol(X-Messenger信息交流協(xié)議參考文獻(xiàn)X-Messenger-XMMEPX-MessengerServersDatabaseDesignX-Messenger系統(tǒng)描述XMessenger 系統(tǒng)網(wǎng)絡(luò)拓?fù)鋁-Messenger服務(wù)器(RegisterServers)、郵件服務(wù)器(MailServers)、消息路由服務(wù)器(RouterServers)、狀態(tài)服務(wù)器(PresenceServers)、管理客戶端(Management)、Messenger客戶端(X-Messenger插圖2.1.1:X-Messenger網(wǎng)絡(luò)XMessenger子系統(tǒng)介紹RegisterServerMailServer郵件服務(wù)器,可安裝廣泛使用的開源MAMilrnsfrgt),如ndil、otixMA。-MngrMPRouterServerPresenceServer的IP和Port;記錄PresenceServerPresenceServerPresenceServer中PresenceServerPresenceServerPresenceServer在內(nèi)存中用戶相關(guān)的信息,如:用戶的信息;用戶的好友信息:好友分組、好友DatabaseServer數(shù)據(jù)庫服務(wù)器,目前版本使用關(guān)系型數(shù)據(jù)庫(RMDBSOracle、MySQLManagement管理客戶端,負(fù)責(zé)(實(shí)時但非連續(xù))X-Messenger所有服務(wù)器的狀態(tài)、與所有服務(wù)器交互,如X-Messenger子系統(tǒng)之間的交互方式X-MessengerX-MessengerX-Messenger客戶端和服務(wù)器端之間:采取UDP作為傳輸層協(xié)議;X-Messenger客戶端只與RouterServer、某個特定的PresenceServer交互。RouterServer和RegisterServer之間:采取TCP作為傳輸層協(xié)議;RegisterServer和RouterServerTCP,RegisterServer為角色,主動發(fā)起連接。RouterServer和所有PresenceServers之間:采取TCP作為傳輸層協(xié)議;RouterServer和PresenceServerTCPPresenceServer作為角色,主動發(fā)起連接,并定期發(fā)送心跳檢測消息。RouterServer、PresenceServers和數(shù)據(jù)庫服務(wù)器之間:采取TCP作為傳輸層協(xié)議;保持TCP長連接,連接需要通過認(rèn)證,RouterServer、PresenceServer作為角色,Management和RouterServer之間:采取TCP作為傳輸層協(xié)議;保持TCP長連接,Management作為角色,主動發(fā)起連接,并定期發(fā)送心跳Management通過RouterServer獲取PresenceServer列表Management和各PresenceServer之間:采取TCP作為傳輸層協(xié)議;保持TCP長連接,連接需要通過認(rèn)證,Management作為角色,主動發(fā)起連(當(dāng)前版本中)PresenceServer服務(wù)器端軟件的實(shí)現(xiàn)要點(diǎn)MessengerIM定性、可靠性這幾個基本的要求。最終實(shí)現(xiàn)的系統(tǒng)必需能夠經(jīng)受以下考驗(yàn):/ /高負(fù)載網(wǎng)絡(luò)I/OI/OReactor)I/OI/OPresenceServerPresenceServer負(fù)責(zé)處理一部分用戶,大規(guī)模數(shù)據(jù)的PresenceServerPresenceServer能管理的用戶量,所以必須考慮哪些種類的數(shù)據(jù)需要在內(nèi)存中緩存,其中有幾個:PresenceServer可采取LazyloadPresenceServer eServersCluster的布局,需為Cluster內(nèi)的每個PresenceServer單獨(dú)創(chuàng)建一個數(shù)據(jù)庫實(shí)例,比如PresenceServersCluster1中有PresenceServer1...PresenceServer20,則數(shù)據(jù)庫實(shí)例為PresenceDB_C1P1...PresenceDB_C1P20,后綴C1P1代表該數(shù)據(jù)庫實(shí)例對應(yīng)的是Cluster(C)1中的PresenceServer(P)1,以此類推。目前版本的系統(tǒng)采用的方式是:ClusterPresenceServerCluster內(nèi)的PresenceServer達(dá)到規(guī)定的數(shù)量后,再通過逐步增加PresenceServersCluster的數(shù)量來逐步擴(kuò)大整個系統(tǒng)的容災(zāi)和容錯措施PresenceServer機(jī)器采取N+1冗余的方式:在每個PresenceServersCluster中,多出一臺機(jī)器作為備用機(jī),一旦某臺PresenceServer機(jī)器故障或軟件出問題導(dǎo)致無法正常提供服RouterServer、RegisterServer、MailServer均采取Master-Slave形式的雙機(jī)熱備方式:ARegisterServer和PresenceServer2個RouterServer(主、從服務(wù)器)的TCP長連接,如果主RouterServer故障,則使用從RouterServer。B,RegisterServer2個MailServer的TCPDatabaseServersrsneSrvrrsneSrvr用故程集(如用戶的在線狀態(tài),登錄、碌、離等狀態(tài)據(jù)不會久到數(shù)據(jù)庫將丟失針對這問題,用戶狀outrSrvrrsneSrvr加RoutrSrvr數(shù)。服務(wù)器端子系統(tǒng)設(shè)計(jì)系統(tǒng)架構(gòu)RouterServer和PresenceServer架構(gòu)RouterServer和PresenceServer的工作方式基本一致:接收來自客戶端和其它服務(wù)器端的消息-->解析并處理消息-->必要,則更新數(shù)據(jù)-->必要,則回復(fù)對端由此可以將服務(wù)器端應(yīng)用(不包括RegisterServer)劃分出幾個模塊I/ODemultiplexer,I/O的多路復(fù)用組件和I/O處理的分派MessageHandlersX-MessengerXMMEP消息(或稱)處理器來完成這些流程。MessageHandlersMap,消息()處理器倉庫,key為消息的code,value則是消息DataManagement,數(shù)據(jù)管理。數(shù)據(jù)管理兩種:一是內(nèi)存中緩存的用戶數(shù)據(jù),二是需要持以下架構(gòu)圖針對RouterServer和PresenceServerRouterServerPresenceRouterServer相同,差別在于交互的對象(其它子系統(tǒng))插圖4.1.1務(wù)器端通用架RegisterServer架RegisterServerJavaWeb技術(shù)(架構(gòu)描述略)子系統(tǒng)實(shí)現(xiàn)技術(shù)(以下僅討論RouterServer和PresenceServer。RouterServer和PresenceServer使用CC++語言特性(C++標(biāo)準(zhǔn):C++03、C++11),優(yōu)先使用C++標(biāo)準(zhǔn)庫。在此基礎(chǔ)上,需要的第庫的選擇上以下面列舉的庫為準(zhǔn),如非必要則避免引入其它第庫:C++BoostLibraryC++Boost的庫數(shù)量十分龐大,涉及范圍很廣泛,在X-MessengerServers的實(shí)現(xiàn)過程中,可能涉及Boost.Asio:高性能網(wǎng)絡(luò)I/OProactorI/ODemultiplexer,如Linux2.6下的EventPoll(epoll)、Windows下IOCP、UNIX下的Select等;除I/ODemultiplexer外,還封裝了EventDispatcher、WorkersQueue等必要的設(shè)施,Boost.Containers:如unordered_map、unordered_set、array等C++與boostACE也是一個龐C++類庫,很多庫的功Boost的某些庫,但ACE更偏在X-MessengerServerACE_Reactor框架:I/ODemultiplexer和EventACE_ProactorI/O以及Event上述3者可以結(jié)合使用,如同交互的部分可以使用ACE_Proactor,同其它Server交互的部分可以使用ACE_Reactor等;ACE_Log_Msg:ACE注:在第庫的選擇上,Boost和ACE是二者選其一,不要將二者混合使用C++由于X-Messenger當(dāng)前版本需要通過關(guān)系數(shù)據(jù)庫(RDBMS)——MySQL數(shù)據(jù)庫做用戶相關(guān)的數(shù)據(jù)持久化,所以需要通過C++連接、操作數(shù)據(jù)庫。當(dāng)前版本規(guī)定使用版本的OTL,通過ODBC的方式連接MySQL數(shù)據(jù)庫服務(wù)器,所以除OTL外,還需安裝libmyodbc的適當(dāng)版本。子系統(tǒng)部署硬件配置(略軟件環(huán)境RouterServer和PresenceServer操作系統(tǒng):Linux2.6.18CentOS5.x、CentOS6.x、Debian5.x或之一各自更數(shù)據(jù)庫:MySQL5.1.x、MySQL5.5.xSSHRegisterServer操作系統(tǒng):Linux2.6.18CentOS5.x、CentOS6.x、Debian5.x或之一各自更JavaSE:SunJavaSE6update20JavaWebServer:ApacheTomcatSSHMailServer操作系統(tǒng):Linux2.6.18CentOS5.x、CentOS6.x、Debian5.x或之一各自更SSH消息處理流程X-MessengerXMMEP用戶 的用戶,用戶只有在成功激活后才能通過X-Messenger客戶端登錄到服務(wù)器。用戶

插圖5.1.1:用戶流向RegisterServer發(fā)送用戶信息,具體信息字段見MSG_REGISTER_REQ消息規(guī)定RegisterServer將發(fā)送的用戶信息組裝成MSG_REGISTER_REQ消息,發(fā)送至RouterRouterServer驗(yàn)證用戶信息,包括用戶名、是否已經(jīng)存在,將結(jié)果通MSG_REGISTER_RESRegisterRegisterServer根據(jù)MSG_REGISTER_RES消息的結(jié)果,如果成功,則發(fā)送用戶激活消息至用戶時填寫的地址;RegisterServer根據(jù)MSG_REGISTER_RES消息的結(jié)果,回復(fù)用戶激活

插圖5.1.2:用戶收到激活郵件后,點(diǎn)擊激活的,通過Webbrowser向RegisterServer發(fā)送激活請RegisterServer收到激活請求后,向RouterServer發(fā)RouterServer驗(yàn)證用戶信息,包括用戶名是否存在、用戶名和是否匹配,將結(jié)果通過MSG_REGISTER_ACTIVATE_RES消息返回給RegisterServer;如果步驟3檢查結(jié)果為Success,RouterServer個PresenceServer,并向該P(yáng)resenceServer發(fā)送MSG_USER_REGISTERED_NOTIFY消息,表明添加了新用戶,(PresenceServer則需該新用戶的信息)。用戶信息更用戶信息的修改可以通過兩個完成:1,通過X-Messenger直接發(fā)送信息到PresenceServer修改,2,使用Web瀏覽器,通過RegisterServer完成修改。插圖5.1.3:用戶信息更新流程1-通過X-Messenger更插圖5.1.4:用戶信息更新流程2-通過RegisterServer更新用戶登錄流程用戶登錄插圖5.2.1:由于1并不知道UserA位于哪一個PresneceServer,所以在登錄到PresenceServerRouterServerMSG_GET_LOGIN_INFO_REQRouterRouterServer發(fā)送MSG_GET_LOGIN_INFO_RES回應(yīng)1,告知相應(yīng)的PresenceServer的IP和Port信息;1RouterServer的MSG_GET_LOGIN_INFO_RESPresenceServer登錄請求消息MSG_LOGIN_REQ;PresenceServer回應(yīng)MSG_LOGIN_RES1,消息內(nèi)容為登錄結(jié)果、UserA如果MSG_LOGIN_RES1Success,且UserAPresenceServer繼續(xù)發(fā)送如果UserAPresenceServer繼續(xù)發(fā)送如果UserA的不為空,PresenceServer繼續(xù)發(fā)送如果UserAchatroom,PresenceServer如果UserA的好友和加UserA為好友的用戶的并集不為空,PresenceServer繼續(xù)發(fā)送MSG_LOGIN_RES6;至此PresenceServer發(fā)送MSG_LOGIN_RES_END1在接收到MSG_LOGIN_RES_END消息后,發(fā)送MSG__READY至PresenceServer標(biāo)志1已準(zhǔn)備就緒;PresenceServer在收到MSG__READY后,向UserA的好友和加UserA為好友且目前的用戶們發(fā)送好友上線通知,即MSG_BUDDY_LOGIN_NOTIFY 同時,PresenceServer發(fā)送MSG_BUDDY_LOGIN_NOTIFY_FWD消息通知RouterServer,UserA登錄成功。注意:A)上述流程中,如果第2步驟的結(jié)果不為Success,則以后步驟不存在;B)同樣,如果第4步驟結(jié)果不為Success,則其下步驟不存在;C)MSG_LOGIN_RES2~MSG_LOGIN_RES6消息可能都不需會話狀態(tài)報(bào)告X-MessengerUserA插圖5.2.2 發(fā)送MSG_SESSION_REPORT消息通知原客戶端用戶狀態(tài)管理管理是IM服務(wù)器端軟件的主要功能之一。用戶狀態(tài)改變插圖5.3.11改變UserA的狀態(tài)后,發(fā)送MSG_STATUS_CHANGED_NOTIFY至PresencePresenceServer將該消息轉(zhuǎn)發(fā)到UserA的所有好友、以及所有加UserA為好友的在好友管理添加好友插圖5.4.1:添加好1(UserA)要添加UserB為好友,則發(fā)送MSG_ADD_BUDDY_REQPresencePresenceServer回應(yīng)消息MSG_ADD_BUDDY_RESMSG_ADD_BUDDY_RES的結(jié)果為SuccessUserBUserA,PresenceServer發(fā)送MSG_BUDDIED_NOTIFY消息到2(UserB),告知其被User2發(fā)送MSG_BUDDIED_NOTIFY_RES至PresenceSer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論