跳至主要內容

分布式系统的指标

AruNi_Lu分布式系统基础约 1499 字大约 5 分钟

本文内容

前言

从上一章中可以发现,分布式无非就是加机器,用廉价的机器来解决性能、可用性等问题。所以分布式的目的是 用更多的机器,处理更多的数据和更复杂的任务

所以,也就引出了分布式系统的三个重要指标:性能、资源占用、可用性和可扩展性

1. 性能

性能指标用来衡量一个系统的任务处理能力,常见的性能指标有 吞吐量、响应时间和完成时间

1.1 吞吐量

吞吐量指系统在一定时间内可以处理的任务数,场景的吞吐量指标有 QPS(Queries Per Second)、TPS(Transactions Per Second)和 BPS(Bits Per Second):

  • QPS:每秒请求数,衡量系统每秒处理的请求数,通常用于读操作:
    • 在 Web 应用中,QPS 可以表示每秒处理的 HTTP 请求次数;
    • 在数据库中,QPS 可以表示每秒执行 SQL 的查询次数;
    • 在分布式系统中,QPS 可以表示每秒处理的请求次数,包括网络请求、远程调用等。
  • TPS:每秒事务数,衡量系统每秒处理的事务数,通常用于写操作,一个 TPS 操作可能也会包含多个 QPS;
  • BPS:每秒比特数,衡量系统每秒处理的数据量,对于一些需要写入很多数据的事务,用 BPS 能更客观的反应吞吐量。

1.2 响应时间

响应时间指系统响应一个请求所需的时间,响应是直接与用于体验挂钩的,因为对业务时延敏感的业务,要非常注重响应时间。比如导航系统、秒杀系统等。

1.3 完成时间

完成时间指系统真正完成一个请求所需的时间,任务并行模式的其中一个目的,就是减少整个任务的完成时间。

与响应时间相比,完成时间不仅仅只是考虑响应返回就可以了,还要考虑后续流程,比如异步任务的执行完毕,消息队列中的消息消费完毕等,也都算进完成时间里。

2. 资源占用

资源占用指的是一个系统在提供服务时所占用的物理(硬件)资源,如比 CPU、内存、硬盘等。

一个系统在没有任何负载时的资源占用,叫做空载资源占用,体现了一个系统自身的资源占用情况。比如安装 App 时会显示有多少 MB,这就是该 App 的空载硬盘资源占用。

一个系统在满额负载时的资源占用,叫做满载资源占用,体现了一个系统全力运行时的资源占用情况。同样的硬件配置上,运行的业务越多、占用的资源越少,说明系统设计得越好。

3. 可用性和可扩展性

3.1 可用性

可用性指系统在面对各种异常情况时,可以正常提供服务的能力。这对于分布式系统来说也尤为重要,是系统容错能力的体现。

可用性可以用 系统停止服务时间与总时间之比 来衡量。比如一个系统运行 24 小时,有 4 个小时出现了故障导致不可用,那么系统的可用性就是:4/24 = 0.167,即 0.167 的比例不可用,或者说 0.833 的比例可用。

另外,可用性也可以用 某个功能的失败次数与总请求次数之比 来衡量。比如一个系统请求了 1000 次,有 10 次请求失败,那么可用性就是 99%。

人们通常说一个系统能达到 3 个 9、5 个 9,意思就是这个系统在 99.9%、99.999% 的时间里能提供正常服务,具有很好的可用性。

这里再简单讲一下可靠性,可靠性通常指一个系统完全不出故障的概率,更多用在硬件领域。而 可用性则允许部分组件失效,一个系统对外仍可提供正常服务的概率

3.2 可扩展性

可扩展性是指分布式系统通过扩展集群机器规模来提供系统性能(吞吐量、响应时间、完成时间)、存储容量、计算能力的特性,是分布式系统特有的性质。

分布式系统设计的初衷,就是利用集群多机器的能力处理任务,集群规模取决于单个机器的性能和任务的要求,过多会导致浪费。

系统的扩展性可以分为垂直扩展和水平扩展:

  • 垂直扩展:增加机器的硬件能力;
  • 水平扩展:增加机器的数量。

分布式系统就属于水平扩展。

衡量可扩展性的常见指标是加速比,也就是一个系统扩展后相对扩展前的性能提升:

  • 如果扩展是为了提高吞吐量,则可以用扩展后和扩展前的系统吞吐量之比来衡量;
  • 如果扩展是为了缩短完成时间,则可以用扩展后和扩展前的完成时间之比来衡量。

当然了,不同系统对于这些性能的指标的偏向是不同的。比如电商系统看中吞吐量、在线业务看中响应时间、云计算看中系统的资源开销。

上次编辑于: