自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微博網(wǎng)頁端通過輪詢收發(fā)消息,憑什么沒有延時!

開發(fā) 架構(gòu)
之前做過幾十年IM架構(gòu),今天和大家聊聊微博網(wǎng)頁端IM通過HTTP收發(fā)消息會不會有延時的技術(shù)點。

有水友問我說,微博網(wǎng)頁端IM通過HTTP收發(fā)消息,會不會有延時?

之前做過幾十年IM架構(gòu),今天和大家聊聊這里面的技術(shù)點。

WebIM一般如何實現(xiàn)消息推送?

通常的有三種實現(xiàn)方式:

  • WebSocket;
  • FlashSocket;
  • HTTP輪詢;

其中1和2是基于TCP長鏈接實現(xiàn)的,水友問的問題,主要是第三類,用HTTP短連接輪詢的方式實現(xiàn)消息的收發(fā),能否能保證消息的絕對實時性。

大家為什么會覺得HTTP長輪詢有延時?

這要從大家理解的“輪詢”說起。

什么是輪詢?

舉個栗子,在火車上想上洗手間,擠到洗手間旁,卻發(fā)現(xiàn)洗手間有人,于是你只能回座位繼續(xù)等。過了N分鐘,又朝洗手間的方向擠過去,卻發(fā)現(xiàn)洗手間還是有人,又只能回坐等。這么一而再,再而三的每隔N分鐘去洗手間查看洗手間是否有蹲位,這就是輪詢。

WEBIM采用上述輪詢的方式收發(fā)消息會存在什么問題?

可能導致消息延時,某一時刻剛拉取完消息,突然又產(chǎn)生了一條新消息,這條消息就必須等到N分鐘之后,下次輪詢時,才有機會獲取到。延時的最大值是N。

減小輪詢時間間隔,是否能解決消息延時的問題?

不能,只能縮小延時,不能保證絕對實時。

同時還會產(chǎn)生更大的問題,大部分的輪詢調(diào)用,都沒有消息返回,造成服務(wù)端極大的資源浪費。

不少人基于上述直覺,認為WEBIM使用HTTP長輪詢收發(fā)消息會有延時。但其實,HTTP長輪詢壓根不是這回事。

HTTP長輪詢實際是怎么玩的?

專用消息連接。

什么是專用消息鏈接?

瀏覽器與web-server之間建立的,一條專門用來接受通知消息的HTTP鏈接。

專用消息連接的玩法細節(jié)如下:

  • 沒有消息到達的時候,專用消息連接將被夯住一段時間(例如:90秒);
  • 夯住90秒,專用消息連接被斷開之后,立馬再發(fā)起一個專用消息連接;

  • 在1和2的配合下,每次收到通知消息時,這個連接就能及時將消息帶回瀏覽器頁面;

  • 在3的情況下,專用消息連接返回瀏覽器后,又立刻發(fā)起新的專用消息連接,如此一來,瀏覽器與web-server之間將永遠有一條能夠接受服務(wù)器通知的專用消息連接,以此,來保證WEBIM消息收發(fā)的絕對實時性。

總結(jié)

  • HTTP長輪詢可以保證消息的絕對實時性;
  • 這種實時性不是通過增加輪詢頻率來保證的;
  • 而是通過專用消息連接,通過夯住HTTP請求來實現(xiàn)的,這個HTTP消息連接對于web-server的請求壓力大約是90秒1次,能夠大大節(jié)省了服務(wù)器資源。

知其然,知其所以然。

思路比結(jié)論更重要。

責任編輯:趙寧寧 來源: 架構(gòu)師之路
相關(guān)推薦

2017-07-28 09:30:55

2022-07-26 20:00:35

場景RabbitMQMQ

2023-11-30 08:34:29

批量消息消息隊列

2020-09-14 11:50:21

SpringBootRabbitMQJava

2022-08-22 08:45:57

Kafka網(wǎng)絡(luò)層源碼實現(xiàn)

2011-08-04 09:56:04

TMG ISA新浪微博

2011-09-09 11:09:26

Web

2013-07-16 15:21:53

微微博新浪微博AndroidAndroid開發(fā)學習

2017-06-06 16:30:55

戴爾交付保障

2018-01-02 16:30:27

Python爬蟲微博移動端

2016-08-24 15:43:01

2015-01-14 13:59:50

騰訊微博客戶端源碼下載

2020-08-20 14:04:34

日志MySQL磁盤

2021-01-05 09:23:49

網(wǎng)頁端消息

2016-10-11 16:31:56

微信服務(wù)器消息

2010-08-09 17:46:45

巫妖王之怒審批通過

2011-12-21 16:19:06

網(wǎng)秦手機安全微博保鏢

2011-12-08 16:31:43

新浪微博開放平臺

2021-03-16 10:07:51

自動駕駛特斯拉人工智能

2018-09-28 18:26:51

微信朋友圈更新
點贊
收藏

51CTO技術(shù)棧公眾號