面試題 設計instagram

2021-10-02 11:46:11 字數 1699 閱讀 7488

約束high level

db design

詳細設計

擴充套件資訊流設計

使用者可以上傳**,分享**;關注其他人,亦可以看到自己的和好友的top**;

功能性

根據名稱搜尋**

使用者關注他人

生成和展示資訊流,包含所有關注的人的top**

非功能性

5. 高可用

6. 低時延:資訊流產生時延 < 200ms

7. ap系統:保可用性,特殊情況使用者一段時間看不到**也是ok的

8. 高可靠,上傳的**不能丟失

out of scope

- ***首先和面試官宣告該系統的幾個設計關鍵點

- 使用者會上傳大量**,儲存系統的管理是關鍵

- 檢視**需要低時延

- 資料100%不丟失***

**可以儲存在分布式檔案儲存,hdfs / s3

a wide-column datastore可以儲存list作為value,適合儲存乙個user擁有的imageid,乙個user擁有的followers

image_info:table

pk:image_id:varchar(32)

int

name image_path :varchar(256)

title:varchar(2048)

size:int

user_id:int

created_at:datetime

update_at:datetime

is_delete:int (nosql延遲刪除,所以不需要該欄位)

user:table

pk:user_id:int

name:varchar(256 20)

created_at:datetime

last_login:datetime

user_relation:table

pk:from_id + to_id

from_id: int

to_id: int

is_follow:int

created_at:datetime

update_at: datetime

message:table

pk: message_id:int

user_id:int

image_id:int

title:varchar(2048)

created_at:datetime

top_message:table

pk:user_id:int

update_at:datetime

top_message:text

- user:int和datetime都是4b,4 + 20 + 4 + 4 = 32 b;500m * 32 b ~= 16 g

- image:4 + 256 + 4 + 4 + 4 = 272 b;1m * 272 b = 0.27 g per day

- userfollow:500m * 500 followers * 12b = 3 tb

讀寫服務分離

設計模式面試題

參考 常用的設計模式彙總,超詳細!這個模式本身很簡單而且使用在業務較簡單的情況下。一般用於小專案或者具體產品很少擴充套件的情況 這樣工廠類才不用經常更改 它由三種角色組成 來用類圖來清晰的表示下的它們之間的關係 抽象工廠模式 先來認識下什麼是產品族 位於不同產品等級結構中,功能相關聯的產品組成的家族...

面試題 PHP面試題

建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...

Java面試題 設計模式

單例模式 保證被建立一次,節省系統開銷。工廠模式 簡單工廠 抽象工廠 解耦 觀察者模式 定義了物件之間的一對多的依賴,這樣一來,當乙個物件改變時,它的所有的依賴者都會收到通知並 自動更新。外觀模式 提供乙個統一的介面,用來訪問子系統中的一群介面,外觀定義了乙個高層的介面,讓子系統更容易使 用。模版方...