天天看點

微信為什麼切換裝置後無法擷取聊天記錄 - xiaozeng童鞋

一直以來,我都對微信的設計有點疑問。

1、微信登入pc端隻能通過手機掃碼登入。

2、在你更換裝置之後,微信的聊天記錄完全無法同步,也無法感覺是否被好友拉黑。

3、兩個同在澳洲地區的人進行消息通信幾乎瞬間收到。

      首先為了滿足第三個條件,假想微信在國内建立單點的伺服器,那麼這種性能一定不足以支撐澳洲内這麼快的通信,我的猜想是微信是分布式的,在各地都有它的伺服器,每次進行消息通信都是由附近的伺服器去處理(澳洲的伺服器之間通信),此時就涉及到了伺服器選擇算法,你要和好友構成通信,此時就涉及到了伺服器查找算法,當建立連接配接之後你倆就可以互相通信了,可是此時就會出現一個問題,當我坐飛機從北京飛到加拿大,我的手機全程保持關機狀态,到達目的地之後打開微信,此時又是怎麼拿到消息的呢?此時微信發現發現原有北京微信伺服器已經延遲實在是太高,觸發了伺服器選擇算法。伺服器重選後,我很快确定了要連接配接到新加坡的伺服器。但是微信的消息并不會廣播滿整個分布式叢集,新加坡的微信伺服器實際上并無法得知我的未讀消息。是以必須需要一個伺服器端切換算法來實作将我在北京伺服器上的未讀消息同步到新加坡伺服器上。

      然後此時第一個問題就很好解釋了,如果微信支援密碼登入,當我的手機和電腦所在伺服器不同,手機上就再也收不到消息了。

      微信的聊天記錄完全儲存在本地,這就可以解釋第二個問題:為什麼換了裝置後聊天記錄會全沒?因為伺服器隻是一個中轉、傳達、暫存功能。在你更換裝置後自然本地沒有這些資料,就全丢光了。而你掃碼登入pc端的時候,最近的聊天記錄是由你的手機同步到電腦上的,因為此時伺服器根本就沒有存取你的聊天曆史。微信的好友清單是怎麼維持的?換了裝置,好友清單也能正常同步,是以好友清單應該并不是隻存本地,而是存在于伺服器上的。接下來解釋下好友拉黑問題,當你被微信好友拉黑時,實際上并沒有發出一條消息,是以你的本地的消息曆史中,仍然存在有和拉黑了你的好友的消息記錄,就像Email發送者即使Block了你的Email,你仍然能夠看到你們的聊天曆史一樣。自然這種設計,就導緻你無法得知這件事了。隻有在你嘗試發送消息時發送失敗了,才能證明可能他已經不再想和你說話了。 類比QQ,QQ是有完整的多裝置同時登入、聊天記錄跨裝置同步、QQ群的保持和搜尋等這些功能的。它更大的可能是一個集中式的部署,靠強大的負載均衡和運維能力支撐這一個資料中心正常。如果你在澳洲聊QQ你會發現一條消息要轉半天,是以某鵝這樣設計微信是有它的道理的。

     謝謝觀賞

微信為什麼切換裝置後無法擷取聊天記錄 - xiaozeng童鞋