iT邦幫忙

2021 iThome 鐵人賽

DAY 3
1
自我挑戰組

自我學習自我挑戰,主題不設限系列 第 3

System Design: 讀書心得1

原文在這:

Title: How WhatsApp enables multi-device capability

https://engineering.fb.com/2021/07/14/security/whatsapp-multi-device/

這篇主要是在討論 Whatsapp 怎麼提供多個 Devices 的功能,在確保不喪失Privacy 跟 End-to-End Encryption。

在 Whatsapp 被 Facebook 併購進去以後,我一直以爲他會跟 Facebook Messenger 用相似的 Architecture 來架構。畢竟這個問題我沒有在 Messenger 上面看到,每個 Device 我只要一登入,就能馬上看到所有的訊息。這個功能對我來說真的覺得很方便,畢竟訊息都不會掉,也可以讓我不一定要一直看手機來回訊息,但可以在電腦上或其他的平台回。但仔細想想,在比較了解這些 System 的架構後,發現確實如果你要把這些訊息都存在 Device Locally的話,確實非常難達到所有的 Devices 都 Sync在一起。

看了這篇學到目前 Whatsapp 的架構其實主要都 Based 在手機上面,手機基本上是整個 Source of Truth。任何其他的 Device 都是跟手機 Sync 在一起,這樣就能達到所有的 Device 都 Sync 在一起也不喪失 Security。但問題是如果手機當下的情況不好(網路不好,電池很低)Sync的速度就會很慢。

所以新的架構就是任何一個 Device 他都能 Independently 跟 Whatsapp 透過 Encryption Process來 Connect。基本上 Server上面存取每個人的 Device Identities,所以當有人要傳訊時會跟 Server拿取 Device List Keys。

剛講到的 Synchronize Message是這樣達到的,當一個 Companion Device Link 在一起後,主要的 Device 會將 Message 加密後傳給新的Device 。這個 Key會透過 End-to-End Encryption傳送給新的Device。新的Device再透過這個Key把Message Bundle下載下來然後存取在當地,下載後Key就會刪掉。這個新的Device就會透過Local的訊息來看 Message 歷史。剩下其他的 Application Metadata State 也會透過同樣的方法傳送。
這篇還有講一些其他的比較 Detail,有興趣可以在自己看一下。!


上一篇
2021 — 找工作 (下)
下一篇
System Design: 讀書心得2
系列文
自我學習自我挑戰,主題不設限8

尚未有邦友留言

立即登入留言