【一文讀懂】QQ如何把你的訊息傳遞給好友的?

張叔叔先告訴大家一個數據:QQ註冊使用者量累計超過10個億,QQ日活超過3億,月活超過5億。日活直白點說就是每天使用QQ的使用者量,月活就是每個月累計活躍的使用者量。中國人口13.8億,幾乎人人都有QQ號,大家都是騰訊的忠實使用者!

不出意外的話,你不僅有QQ號碼,而且還有很多QQ好友吧!那你知道QQ登入的流程嗎?你知道如何把你好朋友加為QQ好友的嗎?你知道每一條訊息怎樣到達你好友手機上的嗎?帶著這些疑問跟張叔叔一起來學習吧。

那是歷史上的某一天,你知道了QQ的存在,而且通過電腦或者手機找到了QQ的註冊介面,根據提示你把註冊所需的資訊都填寫完整並點選了註冊按鈕。這個時候你所填寫的資訊通過計算機網路傳遞到了騰訊的伺服器,騰訊伺服器給你分配了一個QQ號碼,並且把該QQ號碼與你所設定的密碼繫結到了一起。恭喜你,現在註冊成功了!

溫馨提示:現在網路推行實名制,每個QQ號碼目前都需要繫結一個手機號喔,所以網上發言要謹慎,為自己的言行負責喔。

之後你輸入QQ號碼和密碼登入的時候,計算機網路承載著你的登入請求再次歡快地來到了騰訊的伺服器。騰訊伺服器首先從自己的資料庫中查詢你輸入的QQ號碼是否存在,如果號碼都不存在,騰訊伺服器會直接返回賬號不存在的錯誤給你。如果QQ號碼存在,伺服器會校驗你輸入的密碼和資料庫中儲存的QQ密碼是不是一致的,如果不一致,會提示你密碼錯誤;如果一致,恭喜你,登入成功了!

登陸之後發現好友列表是空空如也呀,此刻略感孤單和寂寞。猛然間想起放學時候同學小芳給你塞的紙條,上面是一串數字,當時沒有領悟到數字的含義,現在恍然大悟,原來紙條上寫的是小芳的QQ!以迅雷不及掩耳之勢,你在申請好友欄中填入了那串數字,點選查詢按鈕之後顯示出了對方的暱稱“村裡那個姑娘”,你毫不猶豫就點選了申請好友按鈕。

搜尋QQ和申請加好友的過程中發生了什麼?你搜索的請求傳遞到騰訊伺服器之後,首先會從資料庫中查詢是否存在你搜索的QQ,結果成功搜尋到了“村裡那個姑娘”並且返回給你。點選申請好友按鈕後,你的申請請求再次被傳送到騰訊伺服器,伺服器會記錄住你申請添加了小芳,並且給小芳推送一條好友申請訊息。

果不其然,當小芳登入QQ之後收到了騰訊傳送過來的好友申請:“村頭小夥”申請新增你為好友。小芳定睛一瞧“嘿嘿,這不就是他嘛”,興高采烈的點選了同意按鈕。同樣的道理,資料通過計算機網路再次被傳輸到了騰訊伺服器,伺服器判斷你們已經兩相情願,於是好友關係建立成功併成功儲存在伺服器上。

每當你和小芳使用QQ的時候都會發現自己的好友列表中有了彼此,這是因為你的好友列表已經儲存在伺服器上面,每次登入都會拉取到好友列表,資訊是不會丟失的。當然了,有幾次小芳生氣把你刪除了,這個時候騰訊資料庫中你們彼此的好友列表中也就沒有了彼此。最後死皮賴臉你又把小芳這個好友加上了。這反反覆覆的新增和刪除操作其實就是對於騰訊資料庫的反覆增加和刪除好友記錄。

自從添加了小芳之後,每天都會和她聊天。那你傳送的文字和語音是怎麼傳遞到小芳那的?先來回答一個問題,你如果從城市北邊的學校到城市西邊的動物園?通常情況下我們有兩種方式:從學校坐公交車到城市中心的公交樞紐,然後換成一輛公交車到達動物園;明確學校和動物地址之後,直接駕車從學校到動物園。第一種方式中有個公交樞紐,起到中轉的效果;第二種方式是兩個地點直接相連相通。

你通過QQ傳送訊息給小芳的時候類似於從學校到動物園,可以把你和小芳所在的網路位置比作學校和動物園,而騰訊的伺服器可以比作公交樞紐。你傳送的訊息傳遞到小芳同樣有兩種方式。

先來介紹比較簡單的中轉方式,當你和小芳登入成功之後會與騰訊的伺服器建立連線,通過這個連線你們的電腦或者手機可以與伺服器進行資訊互動。當你傳送訊息給小芳時,訊息首先通過這個連線到達了騰訊伺服器。伺服器解析訊息格式,發現這些訊息的接收者是小芳,伺服器找到與小芳的連線,並且將訊息通過這條連線傳送給小芳。騰訊伺服器此時起到的作用就是公交樞紐的作用,通過該樞紐可以實現任意站點之間的連線。

中轉方式的優點很明顯,實現相對簡單,只要所有的使用者與騰訊伺服器建立連線就可以了,訊息的排程和推送都由伺服器負責。缺點是什麼呢?如果任何訊息都要通過伺服器中轉,那麼伺服器真的是很忙,而且當訊息量比較大的時候,伺服器還會很擁堵。這就好比所有人坐公交車都要去公交樞紐轉乘,公交樞紐的服務人員不得忙死了,周邊的道路肯定也會非常擁擠,最終大家都不能按時到達目的地(訊息延遲),很多人可能也因此中途下車了(訊息丟失)。

下面談到的第二種直連方式可以有效地解決上述的問題。直連的方式就是你和小芳之間是直接相連的,傳送的訊息不用通過第三方直接到達小芳。你和小芳是怎麼實現直連的呢?首先是獲取彼此的連線地址,這個騰訊會提供對應的服務支援你和小芳獲取彼此直連的地址。你們獲取彼此地址之後就可以直接連線到一起,這個時候是不是和小芳的距離突然就縮短了。

無論是中轉方式還是直連方式,都需要解決一個問題,怎麼保證訊息到達呢?你給小芳傳送的10條資訊丟失了5條,這個天聊的是不是斷斷續續。你給小芳傳送1條訊息,結果小芳重複收到了5條,這個天聊的是不是囉囉嗦嗦。如果現在讓你解決訊息到達率和重複率的問題,你會怎麼做呢?

為了保證你和小芳的溝通順暢,騰訊可是做了很多事情。首先,可以為每一條訊息增加一個編碼,比如1、2、3、4、5,小芳會把收到的訊息編碼反饋給你,比如自己收到了1、2、3、4,編號5的訊息很明顯丟失了。這個時候為了保證到達率,可以重新發送編號為5的訊息。通過以上手段就解決了訊息到達率的問題。

訊息重複問題是不是也可以通過編碼解決?of course!小芳收到訊息之後取出訊息編碼,然後判斷之前又木有收到過這條訊息,如果之前出現過,那麼肯定是重複訊息,不再展示即可;如果沒有出現過,那就是新訊息,可以進行展示。如此,重複問題得以解決。

是不是通過這篇文章對於QQ訊息是如何傳送給好友有了更清晰的認識,還是那句話,相信堅持與專注的力量,跟著張叔叔繼續學習吧!
