分布式系统的指标(分布式的目的)
作者:互联网
前言
分布式系统的指标可以用来具体地衡量一个分布式系统。
分布式系统的指标
从分布式技术的起源可以看出,分布式系统的出现就是为了用廉价的、普通的机器解决单个计算机处理复杂、大规模数据和任务时存在的性能问题、资源瓶颈问题,以及可用性和可扩展性问题。分布式的目的是用更多的机器,处理更多的数据和更复杂的任务。
由此可以看出,性能、资源、可用性和可扩展性是分布式系统的重要指标。
性能(Performance)
性能指标:用于衡量一个系统处理各种任务的能力。无论是分布式系统还是单机系统,都会对性能有所要求。
不同的系统、服务要达成的目的不同,关注的性能自然也不尽相同,甚至是相互矛盾。常见的性能指标:吞吐量(Throughput)、响应时间(Response Time)、完成时间(Turnaround Time)。
吞吐量:系统在一定时间内可以处理的任务数。可以非常直接地体现一个系统的性能,就好比在客户非常多的情况下,要评判一个银行柜台职员的办事效率,可以统计一下他在 1 个小时内接待了多少客户。常见的吞吐量指标有 QPS(Queries Per Second)、TPS(Transactions Per Second)和 BPS(Bits Per Second)。
QPS:查询数每秒,用于衡量一个系统每秒处理的查询数。通常用于读操作,越高说明对读操作的支持越好。在设计一个分布式系统的时候,如果应用主要是读操作,那么需要重点考虑如何提高 QPS,来支持高频的读操作。
TPS:事务数每秒,用于衡量一个系统每秒处理的事务数。通常用于写操作,越高说明对写操作的支持越好。在设计一个分布式系统的时候,如果应用主要是写操作,那么需要重点考虑如何提高 TPS,来支持高频写操作。
BPS:比特数每秒,用于衡量一个系统每秒处理的数据量。对于一些网络系统、数据管理系统,不能简单地按照请求数或事务数来衡量其性能。因为请求与请求、事务与事务之间也存在着很大的差异,比方说,有的事务大需要写入更多的数据。这种情况下 BPS 更能客观地反映系统的吞吐量。
响应时间:系统响应一个请求或输入需要花费的时间。响应时间直接影响到用户体验,对于时延敏感的业务非常重要。比如用户搜索导航,特别是用户边开车边搜索的时候,如果响应时间很长,就会直接导致用户走错路。
完成时间:系统真正完成一个请求或处理需要花费的时间。任务并行(也叫作任务分布式)模式出现的其中一个目的,就是缩短整个任务的完成时间。特别是需要计算海量数据或处理大规模任务时,用户对完成时间的感受非常明显。
资源占用(Resource Usage)
资源占用:一个系统提供正常能力需要占用的硬件资源,比如 CPU、内存、硬盘等。
一个系统在没有任何负载时的资源占用,叫做空载资源占用,体现了这个系统自身的资源占用情况。比如,在手机上安装一个 App,安装的时候通常会提示有多少 KB,这就是该 App 的空载硬盘资源占用。对于同样的功能,空载资源占用越少,说明系统设计越优秀,越容易被用户接受。
一个系统满额负载时的资源占用,叫做满载资源占用,体现了这个系统全力运行时占用资源的情况,也体现了系统的处理能力。同样的硬件配置上,运行的业务越多,资源占用越少,说明这个系统设计得越好。
可用性(Availability)
可用性:系统在面对各种异常时可以正确提供服务的能力。可用性是分布式系统的一项重要指标,衡量了系统的鲁棒性,是系统容错能力的体现。
系统的可用性可以用系统停止服务的时间与总的时间之比衡量。假设一个网站总的运行时间是 24 小时,在 24 小时内,如果网站故障导致不可用的时间是 4 个小时,那么系统的可用性就是 4/24=0.167,也就是 0.167 的比例不可用,或者说 0.833 的比例可用。
系统的可用性还可以用某功能的失败次数与总的请求次数之比来衡量,比如对网站请求 1000 次,其中有 10 次请求失败,那么可用性就是 99%。
可能经常在一个系统的宣传语中见到或听到 3 个 9(或 3N,3 Nines)、5 个 9(或 9N,9 Nines)。这些宣传语中所说的 3 个 9、5 个 9,实际上就是系统厂商对可用性的一种标榜,表明该系统可以在 99.9% 或 99.999% 的时间里能对外无故障地提供服务。
分布式系统的指标可以用来具体地衡量一个分布式系统。
分布式系统的指标
从分布式技术的起源可以看出,分布式系统的出现就是为了用廉价的、普通的机器解决单个计算机处理复杂、大规模数据和任务时存在的性能问题、资源瓶颈问题,以及可用性和可扩展性问题。分布式的目的是用更多的机器,处理更多的数据和更复杂的任务。
由此可以看出,性能、资源、可用性和可扩展性是分布式系统的重要指标。
性能(Performance)
性能指标:用于衡量一个系统处理各种任务的能力。无论是分布式系统还是单机系统,都会对性能有所要求。
不同的系统、服务要达成的目的不同,关注的性能自然也不尽相同,甚至是相互矛盾。常见的性能指标:吞吐量(Throughput)、响应时间(Response Time)、完成时间(Turnaround Time)。
吞吐量:系统在一定时间内可以处理的任务数。可以非常直接地体现一个系统的性能,就好比在客户非常多的情况下,要评判一个银行柜台职员的办事效率,可以统计一下他在 1 个小时内接待了多少客户。常见的吞吐量指标有 QPS(Queries Per Second)、TPS(Transactions Per Second)和 BPS(Bits Per Second)。
QPS:查询数每秒,用于衡量一个系统每秒处理的查询数。通常用于读操作,越高说明对读操作的支持越好。在设计一个分布式系统的时候,如果应用主要是读操作,那么需要重点考虑如何提高 QPS,来支持高频的读操作。
TPS:事务数每秒,用于衡量一个系统每秒处理的事务数。通常用于写操作,越高说明对写操作的支持越好。在设计一个分布式系统的时候,如果应用主要是写操作,那么需要重点考虑如何提高 TPS,来支持高频写操作。
BPS:比特数每秒,用于衡量一个系统每秒处理的数据量。对于一些网络系统、数据管理系统,不能简单地按照请求数或事务数来衡量其性能。因为请求与请求、事务与事务之间也存在着很大的差异,比方说,有的事务大需要写入更多的数据。这种情况下 BPS 更能客观地反映系统的吞吐量。
响应时间:系统响应一个请求或输入需要花费的时间。响应时间直接影响到用户体验,对于时延敏感的业务非常重要。比如用户搜索导航,特别是用户边开车边搜索的时候,如果响应时间很长,就会直接导致用户走错路。
完成时间:系统真正完成一个请求或处理需要花费的时间。任务并行(也叫作任务分布式)模式出现的其中一个目的,就是缩短整个任务的完成时间。特别是需要计算海量数据或处理大规模任务时,用户对完成时间的感受非常明显。
资源占用(Resource Usage)
资源占用:一个系统提供正常能力需要占用的硬件资源,比如 CPU、内存、硬盘等。
一个系统在没有任何负载时的资源占用,叫做空载资源占用,体现了这个系统自身的资源占用情况。比如,在手机上安装一个 App,安装的时候通常会提示有多少 KB,这就是该 App 的空载硬盘资源占用。对于同样的功能,空载资源占用越少,说明系统设计越优秀,越容易被用户接受。
一个系统满额负载时的资源占用,叫做满载资源占用,体现了这个系统全力运行时占用资源的情况,也体现了系统的处理能力。同样的硬件配置上,运行的业务越多,资源占用越少,说明这个系统设计得越好。
可用性(Availability)
可用性:系统在面对各种异常时可以正确提供服务的能力。可用性是分布式系统的一项重要指标,衡量了系统的鲁棒性,是系统容错能力的体现。
系统的可用性可以用系统停止服务的时间与总的时间之比衡量。假设一个网站总的运行时间是 24 小时,在 24 小时内,如果网站故障导致不可用的时间是 4 个小时,那么系统的可用性就是 4/24=0.167,也就是 0.167 的比例不可用,或者说 0.833 的比例可用。
系统的可用性还可以用某功能的失败次数与总的请求次数之比来衡量,比如对网站请求 1000 次,其中有 10 次请求失败,那么可用性就是 99%。
可能经常在一个系统的宣传语中见到或听到 3 个 9(或 3N,3 Nines)、5 个 9(或 9N,9 Nines)。这些宣传语中所说的 3 个 9、5 个 9,实际上就是系统厂商对可用性的一种标榜,表明该系统可以在 99.9% 或 99.999% 的时间里能对外无故障地提供服务。