偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

微博網(wǎng)頁(yè)端通過(guò)輪詢收發(fā)消息,憑什么沒(méi)有延時(shí)!

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

有水友問(wèn)我說(shuō),微博網(wǎng)頁(yè)端IM通過(guò)HTTP收發(fā)消息,會(huì)不會(huì)有延時(shí)?

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

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

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

  • WebSocket;
  • FlashSocket;
  • HTTP輪詢;

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

大家為什么會(huì)覺(jué)得HTTP長(zhǎng)輪詢有延時(shí)?

這要從大家理解的“輪詢”說(shuō)起。

什么是輪詢?

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

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

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

減小輪詢時(shí)間間隔,是否能解決消息延時(shí)的問(wèn)題?

不能,只能縮小延時(shí),不能保證絕對(duì)實(shí)時(shí)。

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

不少人基于上述直覺(jué),認(rèn)為WEBIM使用HTTP長(zhǎng)輪詢收發(fā)消息會(huì)有延時(shí)。但其實(shí),HTTP長(zhǎng)輪詢壓根不是這回事。

HTTP長(zhǎng)輪詢實(shí)際是怎么玩的?

專用消息連接。

什么是專用消息鏈接?

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

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

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

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

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

總結(jié)

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

知其然,知其所以然。

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

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

2017-07-28 09:30:55

2022-07-26 20:00:35

場(chǎng)景RabbitMQMQ

2023-11-30 08:34:29

批量消息消息隊(duì)列

2020-09-14 11:50:21

SpringBootRabbitMQJava

2022-08-22 08:45:57

Kafka網(wǎng)絡(luò)層源碼實(shí)現(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ā)學(xué)習(xí)

2018-01-02 16:30:27

Python爬蟲微博移動(dòng)端

2017-06-06 16:30:55

戴爾交付保障

2025-07-02 08:05:00

網(wǎng)頁(yè)端收消息架構(gòu)輪詢

2015-01-14 13:59:50

騰訊微博客戶端源碼下載

2020-08-20 14:04:34

日志MySQL磁盤

2016-08-24 15:43:01

2021-01-05 09:23:49

網(wǎng)頁(yè)端消息

2021-03-16 10:07:51

自動(dòng)駕駛特斯拉人工智能

2012-04-13 09:51:56

火狐微博助手

2010-08-09 17:46:45

巫妖王之怒審批通過(guò)

2011-12-21 16:19:06

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

2011-12-08 16:31:43

新浪微博開放平臺(tái)
點(diǎn)贊
收藏

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