<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    Push or pull?

    Posted on 2011-04-30 01:06 dennis 閱讀(4540) 評論(1)  編輯  收藏 所屬分類: 模式與架構
        無論是消息系統(tǒng),還是配置管理中心,甚至存儲系統(tǒng),你都要面臨這樣一個選擇,push模型 or pull模型?是服務端主動給客戶端推送數據,還是客戶端去服務器拉數據,一張圖表對比如下:
     
    push模型 pull模型
    描述 服務端主動發(fā)送數據給客戶端 客戶端主動從服務端拉取數據,通常客戶端會定時拉取
    實時性 較好,收到數據后可立即發(fā)送給客戶端 一般,取決于pull的間隔時間
    服務端狀態(tài) 需要保存push狀態(tài),哪些客戶端已經發(fā)送成功,哪些發(fā)送失敗 服務端無狀態(tài)
     客戶端狀態(tài)  無需額外保存狀態(tài) 需保存當前拉取的信息的狀態(tài),以便在故障或者重啟的時候恢復
    狀態(tài)保存 集中式,集中在服務端 分布式,分散在各個客戶端
    負載均衡 服務端統(tǒng)一處理和控制 客戶端之間做分配,需要協(xié)調機制,如使用zookeeper
    其他

    服務端需要做流量控制,無法最大化客戶端的處理能力。

    其次,在客戶端故障情況下,無效的push對服務端有一定負載。

    客戶端的請求可能很多無效或者沒有數據可供傳輸,浪費帶寬和服務器處理能力
    缺點方案 服務器端的狀態(tài)存儲是個難點,可以將這些狀態(tài)轉移到DB或者key-value存儲,來減輕server壓力。

    針對實時性的問題,可以將push加入進來,push小數據的通知信息,讓客戶端再來主動pull。

    針對無效請求的問題,可以設置逐漸延長間隔時間的策略,以及合理設計協(xié)議盡量縮小請求數據包來節(jié)省帶寬。



    在面對大量甚至海量客戶端的時候,使用push模型,保存大量的狀態(tài)信息是個沉重的負擔,加上復制N份數據分發(fā)的壓力,也會使得實時性這唯一的優(yōu)點也被放小。使用pull模型,通過將客戶端狀態(tài)保存在客戶端,大大減輕了服務器端壓力,通過客戶端自身做流量控制也更容易,更能發(fā)揮客戶端的處理能力,但是需要面對如何在這些客戶端之間做協(xié)調的難題。

    評論

    # re: Push or pull?[未登錄]  回復  更多評論   

    2011-07-15 10:53 by Jeff
    感覺討論的稍許有點簡單了。。

    能不能結合你們當前的產品實際情況來討論?
    主站蜘蛛池模板: 亚洲五月午夜免费在线视频| 亚洲av日韩专区在线观看| 2022国内精品免费福利视频| 国产做床爱无遮挡免费视频| 亚洲AV无码成人网站在线观看| 女人18毛片水真多免费看| 2019亚洲午夜无码天堂| 女人18毛片a级毛片免费| 亚洲国产无线乱码在线观看 | 在线播放免费人成视频在线观看| 亚洲av产在线精品亚洲第一站| 噼里啪啦免费观看高清动漫4| 亚洲字幕在线观看| 国产精品美女午夜爽爽爽免费| 亚洲色偷偷色噜噜狠狠99| 国产免费拔擦拔擦8x| jizz在线免费观看| 亚洲精品免费在线观看| 亚洲视频在线免费看| 亚洲砖码砖专无区2023| 国产又粗又猛又爽又黄的免费视频| 无遮挡免费一区二区三区| 国产亚洲美女精品久久久久狼| 最近中文字幕mv免费高清在线| 国产精品亚洲午夜一区二区三区| 精品少妇人妻AV免费久久洗澡| 三年片在线观看免费观看大全中国| 亚洲乱码国产一区三区| 中文字幕在线免费| 亚洲国产成人久久精品软件| 亚洲性久久久影院| 亚洲w码欧洲s码免费| 国产精品亚洲专区无码唯爱网 | xvideos永久免费入口| 亚洲国产精品久久久久| 无人影院手机版在线观看免费| 美女扒开屁股让男人桶爽免费| 亚洲AV无码精品色午夜果冻不卡| 久九九精品免费视频| 亚洲视频在线免费| 亚洲成a人片在线观看精品|