丨輪詢與長連接如何解決消息的實時到達問題_第1頁
丨輪詢與長連接如何解決消息的實時到達問題_第2頁
丨輪詢與長連接如何解決消息的實時到達問題_第3頁
丨輪詢與長連接如何解決消息的實時到達問題_第4頁
丨輪詢與長連接如何解決消息的實時到達問題_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

當然這一方面得益于快速發展的移動網絡,讓網絡延遲越來越低、網絡帶寬越來越高;另一個重要原因是:社交網絡Ap在實時性提升方面的技術,也在不斷升級迭代。實時性主要解決的問題是:當一條消息發出后,我們的系統如何確保這條消息最快被接收人感知并獲取到,并且盡量讓耗費的資源較少。這里關鍵的幾個點是:最快觸達,且耗費資源少。想好了嗎?下面我們來看一看,IM在追求“消息實時性”的架構上,所經歷過的幾在PCWeb的早期時代,對于數據的獲取,大部分應用采用一問一答的“請求響應”式模式,實際上,像現在我們瀏覽大部分門戶的,以及刷其實都是采用的“請求響IMQPS(每秒查正是由于“短輪詢”存在著高頻無用功的問題,為了避免這個問題,IM長輪詢和短輪詢相比,一個最大的改進之處在于:短輪詢模式下,服務端不管本輪有沒有新消息產生,都會馬上響應并返回。而長輪詢模式當本次請求沒有獲取到新消息時,并不會馬上結束返回,而是會在服務端“懸掛(hang)”,等待一段時間;如果在等待的這段時間內有新消息產生,就能馬上響應返回。開銷和功耗開銷,也降低了服務端處理請求的QPS,相比短輪詢模式而言,顯得更加先服務端懸掛(hang)住請求,只是降低了請求的QPS,并沒有減少對后端資源輪詢的壓力。假1000個請求在等待消息,可能意味著有1000個線程在不斷輪詢消這里的根本原因在于短輪詢和長輪詢是基于HTTP協議實現的,由于HTTP是一個無狀態隨著HTML5WebSocket這就像之前信件處理的邏輯,等待收信的用戶不需要每天都跑到郵局去詢問,而只要在郵局登記好自己家里的地址。等真正有信件時,郵局會派專門的郵遞員按照登記的地址來把信送過去。WebSocket隨著HTML5的出現,基于單個TCP連接的全雙工通信的協議WebSocket在2011年成為RFC標準協議,逐漸代替了短輪詢和長輪詢的方式,而且由于WebSocket協議獲得了WebIMWebIM和短輪詢、長輪詢相比,基于WebSocet實現的IM服務,客戶端和服務端只需要完成一次握手,就可以創建持久的長連接,并進行隨時的雙向數據傳輸。當服務端接收到新消息時,可以通過建立的WebSocet連接,直接進行推送,真正做到“邊緣觸發”,也保證了消息到達的實時性。WebSocketWebTCP長連接衍生的IMWebSocketIMTCP議,如XMPP協議、MQTT協議以及各種私有協議。這些基于TCP長連接的通信協議,在用戶上線連接時,在服務端好連接到服務器的用戶設備和具體TCP連接的映射關系,通過這種方式客戶端能夠隨時找到服務端,服務端也個用戶時,就能簡單地通過這個長連接實現“服務端實時推送”了。但是上面提到的這些私有協議都各有優缺點,如:XMPP協議雖然比較成熟、擴展性也不錯,但基于XML格式的協議傳輸上冗余比較多,在流量方面不太友好,而且整體實現上比而輕量級的MQTT基于的“發布/訂閱”模式,在省流量和擴展性方面都比較突出,在很多消息推送場景下被廣泛使用,但這個協議并不是IM領域的專有協議,因此對于很多IM下的個性化業務場景仍然需要大量復雜的擴展和開發,比如不支持群組功能、不支持離因此,對于開發人力相對充足的大廠,目前很多是基于TCP(或者UDP)來實現自己的私有協議,一方面私有協議能夠貼合業務需要,做到真正的高效和省流;另一方面私有協議相對安全性更高一些,被的可能性小。目前主流的大廠很多都是采用私有協議為主的方式來實現。隨著HTML5WebSocketTCP最后給你留一個思考題,TCP 售賣。頁面已增加防盜追蹤 上一 02|消息收發架構:為你的App,加上實時通信功TCP答:首先用戶有一個登陸的過程:(1)tcp客戶端與服務端通過三次握手建立tcp連接;(2)當前用戶的uid和標識當前tcp連接的socket描述符(也就是fd)建立映射關系;(4)這個映…3服務器一個hashmapkey是userid,value是socketinstance,這樣用戶A發給用戶B的信息里邊含有用戶B的id,用usedBid到hashmap里邊查到用戶B的socket就可果需要多臺機器,如果用戶A的socker和用戶B的socket不在一臺機器上,這樣怎么解決作者回復:一種法是用上線時一個局的i網關機映,發的候能到確定位;另式:下發把所有息下發所機器,每機器如發現當用戶連在本7 3作者回復:可以無狀態,一種法是用上線一個局的i網機映,發的時候就能到精確位;另式:下發把有消息下給所有器,每機器如發現1和4 12 1作者回復:防止客戶端的連接是比較的哈,比如你的app源代碼了,稍微改一改就能1 作者回復:基于1 4 請問,XMPP是基于XML格式的協議,那像 最近用aa做了一個與物聯網設備的連接應用,是將連接到map中,然后通過設備的唯一標識為y從中取出連接。將每一個指令狀態存到了db中。但這就會有種情況發生,當連接數量過大時,的服務器端u決?2 HTTP22 ̄???請問本課寫的demo是基于mqtt用戶使用客戶端與服務器建立連接時攜帶了userid與i

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論