矽谷之路27:如何設計用戶系統(一)
查看完整視頻:http://www.bittiger.io/classes
這一期我們用上次介紹過的SNAKE原則來設計twitter用戶系統。SNAKE原則就是從場景(Scenario)、限制條件(Necessary)、應用(Application)、數據(Kilobit)和進化(Evolve)五個方面來系統地進行系統設計。
我們先來看一看twitter的登陸界面,大部分軟體的登陸界面都是大同小異,所以我們設計的這個用戶系統也具有相當的普適性。我們把場景分成三個部分:Register/Update/Remove, Login/Logout和Balance/Membership。
t有了場景之後就要考慮限制性條件。假設知道總用戶量100,000,000,但是我們設計系統更關注日活用戶,而不是總用戶。假設日活用戶為1,000,000,如果我們面向未來進行設計,可以大膽地估計三個月後日活用戶為2,000,000。
我們主要對比較頻繁的操作進行預測,就是Register和Login/Logout。假設新用戶註冊率為百分之一,則乘上2,000,000得到20,000每日新註冊用戶,這個數值平均到秒其實是一個非常低的值,單機完全可以實現。同理我們可以對Login/Logout頻率進行預測:
可以看到在求出平均登陸頻率4.2/s之後我們又求了一個Normal Login Frequency,即白天的登陸頻率,大概是平均兩倍左右,和Peak Login Frequency,即高峰登陸頻率,大概是平均的五倍左右。這兩個都是經驗值,大家可以記住。
t根據場景和需求我們可以得到一個基本架構,這個架構非常簡單,只需要一個Receptionist來接收請求分發給後台伺服器進行處理。
下一步考慮數據的存儲。首先用戶系統肯定要有一個用戶類。
我們給每個用戶分配了一個用戶ID方便以後的查詢等操作,並且存了一個用戶的狀態(state),因為用戶有多種狀態,比如被屏蔽(Banned),或者自己註銷(Inactive)等,這些狀態可以用生命周期狀態轉移圖來表示更加清晰明了。
同時我們建立了一個User Table類來對User進行增加、刪除、更新和查找這四個基本操作。
本文整理作者:Mengying Tian, 查看完整視頻:http://www.bittiger.io/classes
更多精彩內容, 請掃描下面二維碼,關注微信公眾賬號「論碼農的自我修養」推薦閱讀:
※矽谷之路28:如何設計用戶系統(二)
※什麼是 Design System
※矽谷之路37:如何設計TinyURL
※如何答好面試中的系統設計題?