• <samp id="mz5ne"><acronym id="mz5ne"></acronym></samp>
      <ol id="mz5ne"></ol>
    1. <samp id="mz5ne"></samp>
      <mark id="mz5ne"></mark>

        <fieldset id="mz5ne"></fieldset>

        免费看又黄又无码的网站_久久久高清国产免费观看_亚洲一区二区三区在线免费观看_免费欧洲美女a视频一级毛片_日本最新免费二区三区

        ×

        網(wǎng)站即時(shí)通訊功能的架構(gòu)是什么

        • 作者:新網(wǎng)
        • 來(lái)源:新網(wǎng)
        • 瀏覽:100
        • 2018-03-06 16:43:25

        網(wǎng)站即時(shí)通訊功能的架構(gòu)是什么?很多SEO人員為了提高用戶體驗(yàn),會(huì)給網(wǎng)站加通訊功能,看過我以前文章內(nèi)容的人對(duì)于網(wǎng)站即時(shí)通訊功能的實(shí)現(xiàn)方法肯定是都知道了,這里為大家介紹一下網(wǎng)站即時(shí)通訊功能的架構(gòu)。

        網(wǎng)站即時(shí)通訊功能的架構(gòu)是什么?很多SEO人員為了提高用戶體驗(yàn),會(huì)給網(wǎng)站加通訊功能,看過我以前文章內(nèi)容的人對(duì)于網(wǎng)站即時(shí)通訊功能的實(shí)現(xiàn)方法肯定是都知道了,這里為大家介紹一下網(wǎng)站即時(shí)通訊功能的架構(gòu)。
         

        22c6000402bba5ff1692.gif

        即時(shí)通訊系統(tǒng)架構(gòu)
        簡(jiǎn)單地介紹一下大型商業(yè)應(yīng)用的IM系統(tǒng)的架構(gòu)。設(shè)計(jì)這種架構(gòu)比較重要的一點(diǎn)是低耦合,把整個(gè)系統(tǒng)設(shè)計(jì)成多個(gè)相互分離的子系統(tǒng)。我把整個(gè)系統(tǒng)分成下面幾個(gè)部分:(1)狀態(tài)消息系統(tǒng) (2)好友系統(tǒng) (3)P2P系統(tǒng) (4)其他擴(kuò)展業(yè)務(wù)系統(tǒng)
        先看狀態(tài)消息系統(tǒng)
        (1)connd
        client接入服務(wù)器,可以支持UDP,也可以支持TCP,一般建議優(yōu)先選擇TCP。connd可以布置多臺(tái),client接入時(shí),可以用簡(jiǎn)單的DNS輪詢的方式實(shí)現(xiàn)負(fù)載均衡。connd功能是維護(hù)連接和轉(zhuǎn)發(fā)消息包。
        (2)pconnd
        proxy connd, 代理接入服務(wù)器,是connd的擴(kuò)展,除了有connd的功能外,支持服務(wù)器的接入,比如web server。
        (3)msgd
        消息處理服務(wù)器,主要功能是用戶狀態(tài)管理,消息轉(zhuǎn)發(fā)(包括合理性驗(yàn)證)以及離線消息保存。
        說一個(gè)用戶登錄成功后,對(duì)所有好友的狀態(tài)通知過程。我設(shè)計(jì)的系統(tǒng)中,把用戶狀態(tài)也簡(jiǎn)單看成類似文本聊天消息。下面用戶U的上線過程,他有好友F1, F2。
        (1) connd收到U上線消息,將消息發(fā)給U所在的msgd。
        (2) msgd獲取U的好友,F(xiàn)1, F2;如果F1, F2和U不在同一個(gè)msgd上,msgd將消息通過connd轉(zhuǎn)給F1, F2所在的msgd。
        (3) 最終的msgd把上線通知通過connd發(fā)給F1, F2。
        msgd的U是通過什么方式獲取最新的好友呢? 這個(gè)問題我要著重描述一下。
        用戶的好友數(shù)據(jù)都在另外一個(gè)子系統(tǒng)中:好友子系統(tǒng)。 msgd通過TCP的方式(為什么用TCP呢?)主動(dòng)從好友系統(tǒng)獲取。同時(shí),msgd也緩存一份好友數(shù)據(jù)。msgd獲取用戶好友時(shí),如果cache是最新的,直接從cache取,否則要從好友子系統(tǒng)那邊取?,F(xiàn)在重點(diǎn)問題出來(lái)了,如何確定用戶的好友是最新的?這類問題我們要根據(jù)不同的業(yè)務(wù)不同的特點(diǎn)靈活采用不同的方法。請(qǐng)看一種高效的處理方式:
        (1) 好友子系統(tǒng)為每個(gè)用戶的好友算個(gè)hash值(可以用MD5)。
        (2) client獲取好友時(shí),同時(shí)也拿到這個(gè)hash值;發(fā)和好友相關(guān)的消息時(shí),把hash值帶給msgd。
        (3) msgd第一次從好友子系統(tǒng)獲取某個(gè)用戶好友時(shí),也獲取這個(gè)hash值;像要轉(zhuǎn)發(fā)狀態(tài)消息,獲取好友時(shí),把client帶過來(lái)的hash1和自身的hash2比較一下。。。
        像IM這種業(yè)務(wù)特點(diǎn)是,對(duì)好友數(shù)據(jù)的寫很少,讀很多,相對(duì)于讀的消耗,寫基本可以忽略的。用上面的方法,基本上每次兩者的hash值是相等的,直接從cache拿好友數(shù)據(jù)。這種處理方法也可以引入到其他應(yīng)用業(yè)務(wù)中。建議不要每次都粗暴地跨進(jìn)程獲取類似好友數(shù)據(jù)。
        網(wǎng)站即時(shí)通訊功能的架構(gòu)是什么?以上就是對(duì)網(wǎng)站即時(shí)通訊功能的架構(gòu)的相關(guān)描述了,這些你都學(xué)會(huì)了嗎?
         

        免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

        免費(fèi)咨詢獲取折扣

        Loading
        国产精品视频白浆免费视频_久久久高清国产免费观看_亚洲一区二区三区在线免费观看_免费欧洲美女a视频一级毛片
      1. <samp id="mz5ne"><acronym id="mz5ne"></acronym></samp>
          <ol id="mz5ne"></ol>
        1. <samp id="mz5ne"></samp>
          <mark id="mz5ne"></mark>

            <fieldset id="mz5ne"></fieldset>
            托克托县| 英山县| 阜康市| 米脂县| 麻江县| 交口县| 察隅县| 镇江市| 上犹县| 进贤县| 芦溪县| 胶南市| 织金县| 通山县| 涟源市| 保康县| 比如县| 即墨市| 邯郸县| 潜山县| 察哈| 栾川县| 汨罗市| 淮北市| 平谷区| 新邵县| 黄骅市| 上栗县| 墨江| 新建县| 临颍县| 永宁县| 泗洪县| 托克逊县| 崇文区| 贡山| 建瓯市| 芦溪县| 临湘市| 大余县| 都昌县|