自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊搞定系統(tǒng)設(shè)計(jì)估算的一些方法

開(kāi)發(fā) 前端
在日常工作中,經(jīng)常會(huì)遇到一些大促場(chǎng)景,需要評(píng)估系統(tǒng)的資源是否充足,是否需要增加資源,增加多少。

[[431094]]

在日常工作中,經(jīng)常會(huì)遇到一些大促場(chǎng)景,需要評(píng)估系統(tǒng)的資源是否充足,是否需要增加資源,增加多少。

在系統(tǒng)設(shè)計(jì)面試中,有時(shí)也會(huì)遇到要求做一些估算類的題目:如果需要扛 100w QPS,需要多少機(jī)器……

想要做到“準(zhǔn)確”的估算,需要對(duì)數(shù)字有一定的感覺(jué)。

第二章主要講的就是一些常用的數(shù)字。本文最后也會(huì)附加一些筆者平時(shí)積累的數(shù)字。

2 的次冪

2的次冪

英語(yǔ)里面常講 1 個(gè) Million,1 個(gè) Billion,分別是百萬(wàn)、十億的意思??梢钥吹?,以 3 個(gè) 0 為一組,層層遞進(jìn)。

[[431095]]

千-百萬(wàn)-十億

每個(gè)程序員都要了解的延遲數(shù)字

這里有一張表格反映了一些計(jì)算機(jī)的典型操作的耗時(shí),配套的還有一個(gè)可視化網(wǎng)站,這個(gè)其實(shí)見(jiàn)得比較多了。

latency number tables

圖形化的網(wǎng)頁(yè)上可以選擇年份,數(shù)據(jù)也更準(zhǔn)確。

latency number graph

  • 從中可以得出一些明顯的結(jié)論:
  • 內(nèi)存比磁盤(pán)快。
  • 避免 disk seek。

數(shù)據(jù)中心常常位于不同的區(qū)域,在它們之間傳送數(shù)據(jù)比較耗時(shí)。

從磁盤(pán)順序讀數(shù)據(jù)比從網(wǎng)絡(luò)順序讀數(shù)據(jù)慢。

可用性數(shù)字

工作中,我們常用幾個(gè) 9 來(lái)形容一個(gè)系統(tǒng)的可用性。100% 表示一個(gè)系統(tǒng)永遠(yuǎn)不會(huì)掛,實(shí)際中的系統(tǒng)可用性指標(biāo)大多處于 99% -100% 之間。

像一些云廠商,如 Amazon,Microsoft,Google 承諾的可用性是 3 個(gè) 9,即 99.9% 或以上,描述的是可用時(shí)間。

可用性

我的一些數(shù)字積累

  • 某支付服務(wù)的支付峰值 60w QPS
  • Go GC 打開(kāi)寫(xiě)屏障需要花費(fèi) 10-30us
  • 內(nèi)網(wǎng)中,一次網(wǎng)絡(luò)請(qǐng)求的耗時(shí)是 ms 級(jí)別
  • 萬(wàn)兆網(wǎng)卡,1.25GB/s 打滿
  • 4C8G 建 10w 到 20w 的連接沒(méi)有問(wèn)題
  • 因?yàn)闄C(jī)械硬盤(pán)的機(jī)械結(jié)構(gòu),隨機(jī) I/O 與順序的 I/O 性能可能相差幾百倍。固態(tài)硬盤(pán)則只有十幾倍到幾十倍之間
  • twitter 工程師認(rèn)為,良好體驗(yàn)的網(wǎng)站平均響應(yīng)時(shí)間應(yīng)該在 500ms 左右,理想的時(shí)間是 200-300ms
  • 平均 QPS:日平均用戶請(qǐng)求除以 4w。日平均用戶請(qǐng)求,一般來(lái)自產(chǎn)品的評(píng)估。峰值 QPS:平均 QPS 的 2~4 倍

實(shí)戰(zhàn)

本章最后有一個(gè)實(shí)戰(zhàn)的例子:評(píng)估 twitter 的 QPS 和存儲(chǔ)容量。

先給出了一些預(yù)設(shè):

  • 300 個(gè) million 的月活躍用戶
  • 50% 的用戶每天都使用 twitter
  • 用戶平均每天發(fā)表 2 條 tweets
  • 10% 的 tweets 包含多媒體
  • 多媒體數(shù)據(jù)保存 5 年

下面是估算的過(guò)程:

先預(yù)估 QPS:

  • DAU(每天的活躍用戶數(shù),Daily Active Users)為:300 million(總用戶數(shù)) * 50% = 150 million
  • 發(fā) tweets 的平均 QPS:150 million * 2 / 24 hour / 3600 second = ~3500
  • 高峰期 QPS 一般認(rèn)為是平均 QPS 的 2 倍:2 * 3500 = 7000 QPS

再來(lái)估算存儲(chǔ)容量:

假設(shè)多媒體的平均大小為 1MB,那么每天的存儲(chǔ)容量為:150 million * 2 * 10% * 1MB = 30 TB。5 年的存儲(chǔ)容量為 30 TB * 365 * 5 = 55 PB。

最后這兩個(gè)的估算過(guò)程是這樣的:

300 個(gè) million * 10%* 1MB,1 MB 其實(shí)就是 6 個(gè) 0,相當(dāng)于 million 要進(jìn)化 2 次:million -> billion -> trillion,即從 M -> G -> T,于是結(jié)果等于 300 T * 10% = 30 T。

30 TB * 365 * 5 = 30 TB * 1825 = 30 TB * 10^3 * 1.825,TB 進(jìn)化一次變成 PB,于是等于 30 * 1.825 PB = 55 PB。

一些建議

估算題的精髓在于過(guò)程,解決問(wèn)題的過(guò)程比得到一個(gè)正確的結(jié)果更重要。

粗算。面試過(guò)程中,得到一個(gè)精確結(jié)果的意義不大,沒(méi)那么多時(shí)間且沒(méi)必要。例如 99987 / 9.1 可以簡(jiǎn)化為 100,000 / 10。

寫(xiě)下過(guò)程中所做的假設(shè),方便之后參考。

寫(xiě)下單位。例如 5MB,這會(huì)在后面的估算環(huán)節(jié)用到。

經(jīng)常被問(wèn)到的估算:QPS、峰值 QPS、存儲(chǔ)容量、服務(wù)器個(gè)數(shù)……

點(diǎn)評(píng)

估算能力還是挺重要的,日常工作中也用得到。例如新增一個(gè) redis,評(píng)估一下需要多少臺(tái)機(jī)器資源……如果遇到這樣的場(chǎng)景,應(yīng)該抓住機(jī)會(huì)鍛煉一下。

 

本章給出的 2 的次冪表格用處挺大,要收藏下來(lái),用到的時(shí)候方便隨時(shí)查看。

 

責(zé)任編輯:武曉燕 來(lái)源: 碼農(nóng)桃花源
相關(guān)推薦

2021-10-12 23:10:58

UnsafeJavaJDK

2021-06-08 06:13:16

React開(kāi)發(fā)開(kāi)發(fā)技術(shù)

2011-07-13 09:13:56

Android設(shè)計(jì)

2019-08-19 14:56:07

設(shè)計(jì)模式javascript

2012-06-07 10:17:55

軟件設(shè)計(jì)設(shè)計(jì)原則Java

2009-09-27 11:09:42

API設(shè)計(jì)

2009-06-18 13:42:48

Hibernate s

2022-12-27 09:56:34

架構(gòu)系統(tǒng)

2011-09-19 10:15:10

移動(dòng)界面設(shè)計(jì)

2017-04-08 17:12:36

設(shè)計(jì)模式抽象策略模式

2023-09-04 16:55:18

2017-05-10 14:49:52

Kotlin語(yǔ)言Java

2021-04-19 17:25:08

Kubernetes組件網(wǎng)絡(luò)

2012-06-15 09:41:40

Linux內(nèi)核

2017-02-21 13:36:11

iosAPP性能

2011-12-05 10:12:35

網(wǎng)頁(yè)設(shè)計(jì)

2012-04-16 09:54:05

移動(dòng)web錯(cuò)誤理念

2024-07-05 11:05:47

2017-08-30 17:59:20

Linux程序設(shè)計(jì)優(yōu)化措施

2015-09-14 08:57:20

設(shè)計(jì)設(shè)計(jì)師
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)