HTTP協議中的短輪詢、長輪詢、長串連和短串連

來源:互聯網
上載者:User

標籤:串連   socket   即時   條件   src   缺點   應用   alt   資料   

今天開始自己研究nodejs,看見輪詢,研究下

http 協議介紹:

http 協議是請求/響應範式的, 每一個 http 響應都是由一個對應的 http 請求產生的; http 協議是無狀態的, 多個 http 請求之間是沒有關係的.

在長連線應用程式情境下,client端一般不會主動關閉它們之間的串連,Client與server之間的串連如果一直不關閉的話,會存在一個問題,隨著用戶端串連越來越多,server早晚有扛不住的時候,這時候server端需要採取一些策略,如關閉一些長時間沒有讀寫事件發生的串連,這樣可以避免一些惡意串連導致server端服務受損;如果條件再允許就可以以用戶端機器為顆粒度,限制每個用戶端的最大長串連數,這樣可以完全避免某個蛋疼的用戶端連累後端服務。

長串連和短串連的產生在於client和server採取的關閉策略,具體的應用情境採用具體的策略,沒有十全十美的選擇,只有合適的選擇

應用情境區別: 
1. 一般長串連(追求即時性高的情境)用於少數client-end to server-end的頻繁的通訊,例如:資料庫的串連用長串連, 如果用短串連頻繁的通訊會造成socket錯誤,而且頻繁的socket 建立也是對資源的浪費。
2. 而像WEB網站的http服務一般都用短連結(追求資源易回收情境),因為長串連對於服務端來說會耗費一定的資源,而像WEB網站這麼頻繁的成千上萬甚至上億用戶端的串連用短串連會更省一些資源

短輪詢和長輪詢

和短串連和長串連有本質區別 
1. 短輪詢:重複發送Http請求,查詢目標事件是否完成,優點:編寫簡單,缺點:浪費頻寬和伺服器資源 
2. 長輪詢:在服務端hold住Http請求(死迴圈或者sleep等等方式),等到目標時間發生,返回Http響應。優點:在無訊息的情況下不會頻繁的請求,缺點:編寫複雜

應用:

長輪詢一般用在 web im, im 即時性要求高, http 長輪詢的控制權一直在伺服器端, 而資料是在伺服器端的, 因此即時性高;
像新浪微薄的im, 朋友網的 im 以及 webQQ 都是用 http 長輪詢實現的;
NodeJS 的非同步機制貌似可以很好的處理 http 長輪詢導致的伺服器瓶頸問題, 這個有待研究.

http 短輪詢一般用在即時性要求不高的地方, 比如新浪微薄的未讀條數查詢就是瀏覽器端每隔一段時間查詢的.

 

HTTP協議中的短輪詢、長輪詢、長串連和短串連

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.