Skip to the content.

数据密集型应用系统设计

可靠、可拓展、可维护性高的应用系统

构建一个三高的应用系统是非常有必要的。

性能描述

查看性能首先两个数据最重要:吞吐(throughput)和响应时间(response time)

延迟(latency)和响应时间(response time)是不同的;延迟是指请求处理花费的时间。

而响应时间除了请求时间,还包括来回的网络延迟和各种排队延迟时间。

查看服务请求的性能一般看的不是平均响应时长,因为它在某些时候掩盖了一些信息(如某个波峰时间段内的信息)。一般会选择百分位数(percentiles)

百分位数

如果已经收集到了响应时间信息,将其从最快到最慢排序,中位数(median)就是列表中间的响应时间。例如,如果中位数响应时间为200 ms,那么意味着有一半的请求响应不到200 ms,而另一半请求则需要更长的时间。

中位数指标非常适合描述多少用户需要等待多长时间:一半的用户请求的服务时间少于中位数响应时间,另一半则多于中位数的时间。因此中位数也称50百分位数,也称p50。

为了弄清楚异常值有多糟糕,一般需要关注更大的百分位数,如常见的 p95、p99 和 p999。作为典型的响应时间阈值,它们分别表示有95%、99%、99.9%的请求响应时间快于阈值。即 p95=1.5s,则表示100个请求中有95个请求快于1.5s,而5个请求是多于1.5s。以此类推。

百分位数经常用于描述、定义服务质量目标(Service Level Objectives, SLO)和服务质量协议(Service Level Agreements, SLA)。

分布式系统

分布式系统需要有哪些特点?

  1. 拓展性;当单个系统消耗资源越来越多时会导致系统不堪重负,需要将负载分散到多台机器上。
  2. 容错和高可用性;单态机器可能会发生故障,此时系统还能够正常工作的话,就需要备份机器提供能力
  3. 延迟考虑;由于网络分区等原因,用户可能分散在世界各地,所以需要在全球范围内部署服务,这样就能就近的给用户提供服务。

中译版