• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內(nèi)核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數(shù)據(jù)加載中……

            自己設想的一個IM服務器的架構(續(xù)一)

            第一個架構模型在這里

            按照里面評論者的意見,我做了一些修改,見圖.


            做了幾處修改:
            1) 暴露在外部與客戶端直接相連的服務器有登錄服務器, 資料服務器, 消息服務器, 在線狀態(tài)服務器,增加了一個session服務器, 不直接面向客戶端.客戶端在登錄的時候,驗證密碼之類的合法性檢查通過之后, 登錄服務器將向session服務器申請一個新的sessionid, 以后客戶端與這些服務器進行通信的時候協(xié)議包都需要帶上這個sessionid以驗證協(xié)議包是否合法.
            在這里, 登錄服務器做的事情簡化為驗證登錄用戶合法性, 返回為登錄用戶申請的sessionid, 以及登出用戶同時通知session服務器注銷該用戶的sessionid.
            2)消息服務器與在線狀態(tài)服務器保持連接,客戶端發(fā)送消息的時候, 首先消息服務器要去查詢用戶是否在線, 如果不在線就存入為離線消息.
            3)在線狀態(tài)服務器與客戶端每隔一段時間都要發(fā)送心跳包保持連接.注意這里由客戶端主動發(fā)送, 而不是服務器發(fā)送, 這樣某種程度上可以避免在線服務器宕機帶來的影響.
            4)這幾個暴露在外面的服務器只是簡單的對外接口, 底下可能還有很多內(nèi)部使用的服務器, 請見第一篇架構的說明, 當用戶量上來時, 還需要考慮擴容的問題.

            如果還有不妥的地方,請繼續(xù)討論,謝謝指教.

            posted on 2009-01-14 13:47 那誰 閱讀(6590) 評論(7)  編輯 收藏 引用 所屬分類: 服務器設計

            評論

            # re: 自己設想的一個IM服務器的架構(續(xù)一)  回復  更多評論   

            客戶端接觸太多了


            我隨便畫了個,你看看
            2009-01-14 15:10 | LOGOS

            # re: 自己設想的一個IM服務器的架構(續(xù)一)  回復  更多評論   

            3)在線狀態(tài)服務器與客戶端每隔一段時間都要發(fā)送心跳包保持連接.注意這里由客戶端主動發(fā)送, 而不是服務器發(fā)送, 這樣某種程度上可以避免在線服務器宕機帶來的影響.


            假如網(wǎng)絡斷了,那服務器如何知道客戶端離線了呢?
            2009-01-14 21:50 | ll

            # re: 自己設想的一個IM服務器的架構(續(xù)一)  回復  更多評論   

            @ll
            心跳包的意思就是客戶端要定時向服務器發(fā)包證明自己還在存活, 如果一段時間沒有發(fā)包服務器就可以認為客戶端離線了.一般心跳包發(fā)送的頻率是幾秒一次.
            2009-01-14 22:43 | 創(chuàng)

            # re: 自己設想的一個IM服務器的架構(續(xù)一)  回復  更多評論   

            心跳包要互發(fā)的和正常的req->ack一樣,也就是說保持穩(wěn)定的脈沖,我覺得只要在最外面暴露登陸服務器和業(yè)務服務器,登陸服務器驗證完之后,告訴客戶端連接哪個業(yè)務服務器之后,這個鏈接就可以回收了
            2009-01-15 09:40 | zuhd

            # re: 自己設想的一個IM服務器的架構(續(xù)一)  回復  更多評論   

            不知道你有沒有看過 SIP (RFC 3261), 他的架構跟你構想是一樣的, 他的 MESSAGE method 可以用來做 IM, 你可以用 OpenSER 做 SIP Proxy 跟 SIP Registra (登度伺服器), 及 OpenSER 的 Presence module 來達成在線檢測, MSILO module 可以做 offline messaging.
            2009-01-29 01:04 | Nash Tsai

            # re: 自己設想的一個IM服務器的架構(續(xù)一)  回復  更多評論   

            有瓶頸制約的,如session服務器
            2010-01-02 09:09 | 忘憂三毛

            # re: 自己設想的一個IM服務器的架構(續(xù)一)  回復  更多評論   

            “3)在線狀態(tài)服務器與客戶端每隔一段時間都要發(fā)送心跳包保持連接.注意這里由客戶端主動發(fā)送, 而不是服務器發(fā)送, 這樣某種程度上可以避免在線服務器宕機帶來的影響.

            從來沒聽說有服務端向客戶端主動發(fā)送心跳包的,客戶端的IP不一定是全球唯一的,你的心跳包能發(fā)進內(nèi)網(wǎng)能過NAT防火墻?除非是P2P打洞或者你的IM客戶端做自動端口映射,技術上海不一定能實現(xiàn)
            2011-08-21 04:15 | 小覃
            欧美久久一级内射wwwwww.| 无码日韩人妻精品久久蜜桃| 中文精品久久久久国产网址| 欧美粉嫩小泬久久久久久久| 国产aⅴ激情无码久久| 国产ww久久久久久久久久| 欧美午夜A∨大片久久| 久久精品国产亚洲av麻豆小说 | 久久午夜无码鲁丝片秋霞 | 97热久久免费频精品99| 久久人人超碰精品CAOPOREN | 色综合久久久久无码专区| 久久国产免费观看精品| 波多野结衣AV无码久久一区| 丁香久久婷婷国产午夜视频| 区久久AAA片69亚洲| 久久久久这里只有精品 | 日批日出水久久亚洲精品tv| 久久精品国产第一区二区三区| 亚洲国产精品综合久久网络| 国产精久久一区二区三区| 久久精品水蜜桃av综合天堂| 欧美与黑人午夜性猛交久久久| 久久精品国产69国产精品亚洲| 久久精品麻豆日日躁夜夜躁| 久久久久久精品免费免费自慰| 久久中文字幕视频、最近更新| 国産精品久久久久久久| 94久久国产乱子伦精品免费| 国产成人精品久久二区二区| 久久99国产综合精品| 久久精品aⅴ无码中文字字幕不卡| 久久国产欧美日韩精品免费| 一级a性色生活片久久无少妇一级婬片免费放 | 欧美精品福利视频一区二区三区久久久精品 | 久久综合狠狠综合久久激情 | 欧美一区二区三区久久综合| 亚洲午夜久久久久妓女影院| 一本久久知道综合久久| 日产精品99久久久久久| 精品久久久久久久无码|