• <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>

            那誰(shuí)的技術(shù)博客

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

            自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)

            第一個(gè)架構(gòu)模型在這里

            按照里面評(píng)論者的意見(jiàn),我做了一些修改,見(jiàn)圖.


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

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

            posted on 2009-01-14 13:47 那誰(shuí) 閱讀(6590) 評(píng)論(7)  編輯 收藏 引用 所屬分類: 服務(wù)器設(shè)計(jì)

            評(píng)論

            # re: 自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)  回復(fù)  更多評(píng)論   

            客戶端接觸太多了


            我隨便畫(huà)了個(gè),你看看
            2009-01-14 15:10 | LOGOS

            # re: 自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)  回復(fù)  更多評(píng)論   

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


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

            # re: 自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)  回復(fù)  更多評(píng)論   

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

            # re: 自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)  回復(fù)  更多評(píng)論   

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

            # re: 自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)  回復(fù)  更多評(píng)論   

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

            # re: 自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)  回復(fù)  更多評(píng)論   

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

            # re: 自己設(shè)想的一個(gè)IM服務(wù)器的架構(gòu)(續(xù)一)  回復(fù)  更多評(píng)論   

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

            從來(lái)沒(méi)聽(tīng)說(shuō)有服務(wù)端向客戶端主動(dòng)發(fā)送心跳包的,客戶端的IP不一定是全球唯一的,你的心跳包能發(fā)進(jìn)內(nèi)網(wǎng)能過(guò)NAT防火墻?除非是P2P打洞或者你的IM客戶端做自動(dòng)端口映射,技術(shù)上海不一定能實(shí)現(xiàn)
            2011-08-21 04:15 | 小覃
            久久99精品久久久久久不卡| 国产精品久久久久久五月尺| 久久婷婷国产麻豆91天堂| 日韩亚洲欧美久久久www综合网| 久久久久香蕉视频| 久久亚洲AV成人无码电影| 91精品日韩人妻无码久久不卡| 亚洲精品国产自在久久| 久久久久国产精品熟女影院| 国产精品伊人久久伊人电影| 日日躁夜夜躁狠狠久久AV| 久久se这里只有精品| 国产亚洲精久久久久久无码77777| 精品久久久久久中文字幕人妻最新| 久久夜色精品国产| 97久久天天综合色天天综合色hd | 无码乱码观看精品久久| 日韩精品久久久肉伦网站| 久久亚洲2019中文字幕| 国产精品一区二区久久| 久久久噜噜噜www成人网| 久久免费香蕉视频| 国产成人无码精品久久久免费 | 国产亚洲美女精品久久久久狼| 亚洲精品久久久www| 99久久精品九九亚洲精品| 97久久精品人妻人人搡人人玩| 少妇熟女久久综合网色欲| 久久成人国产精品一区二区| 国产精品久久久久久一区二区三区 | 伊人久久大香线蕉av一区| 午夜精品久久久久| 欧美激情精品久久久久久久九九九 | 久久亚洲AV无码西西人体| 亚洲国产精品热久久| 99久久精品费精品国产一区二区| 99久久精品免费看国产一区二区三区 | 久久夜色精品国产www| 久久久久亚洲AV成人网人人网站 | 亚洲国产欧洲综合997久久| 亚洲国产综合久久天堂|