分布式系统的指标
本文内容
前言
从上一章中可以发现,分布式无非就是加机器,用廉价的机器来解决性能、可用性等问题。所以分布式的目的是 用更多的机器,处理更多的数据和更复杂的任务。
所以,也就引出了分布式系统的三个重要指标:性能、资源占用、可用性和可扩展性。
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 可扩展性
可扩展性是指分布式系统通过扩展集群机器规模来提供系统性能(吞吐量、响应时间、完成时间)、存储容量、计算能力的特性,是分布式系统特有的性质。
分布式系统设计的初衷,就是利用集群多机器的能力处理任务,集群规模取决于单个机器的性能和任务的要求,过多会导致浪费。
系统的扩展性可以分为垂直扩展和水平扩展:
- 垂直扩展:增加机器的硬件能力;
- 水平扩展:增加机器的数量。
分布式系统就属于水平扩展。
衡量可扩展性的常见指标是加速比,也就是一个系统扩展后相对扩展前的性能提升:
- 如果扩展是为了提高吞吐量,则可以用扩展后和扩展前的系统吞吐量之比来衡量;
- 如果扩展是为了缩短完成时间,则可以用扩展后和扩展前的完成时间之比来衡量。
当然了,不同系统对于这些性能的指标的偏向是不同的。比如电商系统看中吞吐量、在线业务看中响应时间、云计算看中系统的资源开销。