> For the complete documentation index, see [llms.txt](https://cnwangzhou.gitbook.io/grokking-system-design/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cnwangzhou.gitbook.io/grokking-system-design/ch0.md).

# 0. 系统设计面试指南

>

* 英文版原版下载地址：
  * [链接](https://pan.baidu.com/s/1acq-PZjDIbHSxnVVuKJHEw)
  * 提取码: fqhu

## 单位换算表

```java
1B  = 8 bit         byte
1KB = 1024bytes     Kilobyte  
1MB = 1024KB        Megabyte   //百万字节 兆
1GB = 1024MB        Gigabyte   //亿字节，又称“千兆”
1TB = 1024GB        Terabyte   //万亿字节，太字节
1PB = 1024TB        Petabyte   // 千万亿字节，拍字节
1EB  =1024PB        Exabyte    //百亿亿字节，艾字节
...
1GB = 10^8 bytes   
```

```java
1千万 = 10  million
1亿   = 100 million
10亿  = 1   billion
```

## 概念

### QPS 和 TPS

* **QPS（Query Per Second）** ：服务器每秒可以执行的查询次数；
* **TPS（Transaction Per Second）** ：服务器每秒处理的事务数（这里的一个事务可以理解为客户发出请求到收到服务器的过程）；

### 吞吐量

**吞吐量指的是系统单位时间内系统处理的请求数量。**

一个系统的吞吐量与请求对系统的资源消耗等紧密关联。请求对系统资源消耗越多，系统吞吐能力越低，反之则越高。

TPS、QPS都是吞吐量的常用量化指标。

* **QPS（TPS）** = 并发数/平均响应时间(RT)
* **并发数** = QPS \* 平均响应时间(RT)

### 系统活跃度

#### PV(Page View)

> 访问量, 即页面浏览量或点击量，衡量网站用户访问的网页数量；在一定统计周期内用户每打开或刷新一个页面就记录1次，多次打开或刷新同一页面则浏览量累计。UV 从网页打开的数量/刷新的次数的角度来统计的。

#### UV(Unique Visitor)

> 独立访客，统计1天内访问某站点的用户数。1天内相同访客多次访问网站，只计算为1个独立访客。UV 是从用户个体的角度来统计的。

#### DAU(Daily Active User)

> 日活跃用户数量。

#### MAU(monthly active users)

> 月活跃用户人数。

#### 举例：

某网站 DAU为 1200w， 用户日均使用时长 1 小时，RT为0.5s，求并发量和QPS。

平均并发量 = DAU（1200w）\* 日均使用时长（1 小时，3600秒） /一天的秒数（86400）=1200w/24 = 50w

真实并发量（考虑到某些时间段使用人数比较少） = DAU（1200w）\* 日均使用时长（1 小时，3600秒） /一天的秒数-访问量比较小的时间段假设为8小时（57600）=1200w/16 = 75w

峰值并发量 = 平均并发量 \* 6 = 300w

QPS = 真实并发量/RT = 75W/0.5=100w/s
