什么是分布式的“三围”?
在分布式系统中,几个关键的衡量指标包括性能、资源、可用性和可扩展性。这些指标至关重要,因为性能直接影响系统的响应速度和吞吐量;资源衡量系统对计算和存储资源的有效利用;可用性确保系统在故障时仍能正常运行,以满足用户需求;而可扩展性则关系到系统在面对增加的负载时的适应能力。这些指标共同决定了分布式系统的整体效率和可靠性。
分布式系统的指标
分布式技术的起源表明,分布式系统的出现旨在通过廉价的普通机器来解决单个计算机在处理复杂、大规模数据和任务时所面临的性能瓶颈、资源不足以及可用性和可扩展性问题。换句话说,分布式系统的目标是利用更多的机器来处理更大量的数据和更复杂的任务。因此,性能、资源、可用性和可扩展性成为了分布式系统的重要指标,可以说它们构成了分布式系统的核心要素。
性能(Performance)
性能指标主要用于衡量系统处理各种任务的能力,无论是分布式系统还是单机系统,性能要求都是重要的考量。由于不同系统和服务的目标各异,因此关注的性能指标也会有所不同,甚至可能相互矛盾。常见的性能指标包括吞吐量、响应时间和完成时间。
吞吐量指的是系统在一定时间内可以处理的任务数量,是评估系统性能的直接体现。常见的吞吐量指标有:
- QPS(Queries Per Second):每秒查询数,用于衡量系统每秒能处理的查询数量。
- TPS(Transactions Per Second):每秒事务数,用于衡量系统每秒能处理的事务数量。
- BPS(Bits Per Second):每秒比特数,用于衡量系统每秒处理的数据量。
响应时间是指系统对请求或输入的响应所需时间,它直接影响用户体验,尤其对时延敏感的业务尤为重要。
完成时间则指系统真正完成一个请求或处理所需的总时间。任务并行(或任务分布式)模式的一个主要目的就是缩短整个任务的完成时间,尤其是在需要处理海量数据或大规模任务时,用户对完成时间的感受尤为显著。
资源占用(Resource Usage)
资源占用指的是系统正常运行所需的硬件资源,如CPU、内存和硬盘等。当系统在没有任何负载时的资源占用被称为空载资源占用,这反映了系统自身的资源使用情况。对于同样的功能,空载资源占用越少,说明系统设计越优秀,更容易受到用户的青睐。另一方面,当系统在满负载状态下的资源占用称为满载资源占用,它展示了系统全力运行时所需的资源量,体现了系统的处理能力。在相同硬件配置下,运行的业务越多而资源占用越少,表明该系统的设计更加出色。
可用性(Availability)
可用性通常指的是系统在面对各种异常时能否正确提供服务的能力,是分布式系统的重要指标之一,反映了系统的鲁棒性和容错能力。可用性可以通过系统停止服务的时间与总运行时间的比值来衡量。例如,如果一个网站的总运行时间为24小时,而在这段时间内出现故障导致不可用的时间为4小时,则其可用性为4/24=0.167,即约16.7%的时间不可用,或者83.3%的时间可用。此外,系统的可用性还可以通过某个功能的失败次数与总请求次数的比值来衡量,比如在1000次网站请求中有10次失败,那么可用性为99%。
可扩展性(Scalability)
可扩展性指的是分布式系统通过增加集群机器规模来提升系统性能(如吞吐量、响应时间和完成时间)、存储容量和计算能力的特性,这也是分布式系统的一大优势。其设计初衷在于利用多机集群的能力来解决单机无法应对的问题。完成某一具体任务所需的机器数量,即集群规模,取决于单个机器的性能和任务需求。
随着业务需求的增加,除了通过升级单机的性能进行垂直(纵向)扩展外,另一种方式是通过增加机器数量进行水平(横向)扩展。垂直扩展指的是增强单机的硬件能力,如增加CPU或内存,而水平扩展则是增加计算机的数量。理想的分布式系统追求“线性扩展性”,即某一指标能够随着集群中机器数量的增加而呈线性增长。
衡量系统可扩展性的常见指标是加速比(Speedup),即系统扩展后相对于扩展前的性能提升。如果扩展的目标是提高系统的吞吐量,可以用扩展后的吞吐量与扩展前的吞吐量之比来衡量。如果目标是缩短完成时间,则可以用扩展前的完成时间与扩展后的完成时间之比进行评估。