分布式基础(3)-系统性能相关概念

本文主要参考自《大型网站技术架构:核心原理与案例分析》一书第三、四章节和其他网络文章,如有遗漏或错误,还望海涵并指出。谢谢!

在这里插入图片描述

架构比较通俗的说是“最高层次的规划,难以改变的决定”,这些规划与决定奠定了事物未来发展的方向与最终的蓝图。从这个意义上来说,人生规划也是一种架构。选什么学校、读什么专业、进什么公司、找什么对象、过怎么样的生活,都是人生的架构。
–《大型网站技术架构:核心原理与案例分析》

一.架构的核心要素

1、性能

性能指的是一个系统的重要指标之一,据研究,用户的流失率和系统的性能成反比关系,除非是不能选择,否则用户更倾向于性能优良、响应更快的网站。

2、可用性

可用性指的是系统是否可以连续不间断地对外提供可用的服务,例如一年中可以有99.99%的时间对外可用。需要注意的是,100%可用的系统是不存在的,我们只能够尽最大程度地去提升系统的可用性。

3、伸缩性

所谓的伸缩性指的是当应用程序集群撑不住访问压力的时候,可以通过不断地往集群中添加机器来拓展,提高性能。

因为网站每个时间段的访问压力都不一样,平时访问压力小,如果使用过多的机器搭建集群就会出现性能过剩问题;而在促销日时,服务器压力大增,此时又可以通过添加服务器的方式来提升抗压能力。

4、拓展性

拓展性指的是系统是否可用快速的构建出新的功能、原有的组件是否可复用在原有的基础上是否可用快速拓展业务等。

5、安全性

一个对外发布的系统肯定会遭受一些攻击,所以要提前做好系统的安全防范。

二.系统性能相关概念

1.不同视角下的系统性能

对于用户来说,一个网站的性能可以是点击后响应所需的时间,但是从开发者的角度来说需要更加地专业以及细分,这样能够让我们更快知道系统的性能和瓶颈所在。

  • 用户视角下的性能
    在这里插入图片描述

  • 开发者视角下的性能
    开发者视角下的性能应该包括:响应时间、并发数量、吞吐量(TPS、QPS)、系统负载等

2.常见系统性能指标

1.响应时间

在这里插入图片描述
在实践中,如果单次的响应时间很短,那么可以通过重复请求的方式,例如重复请求1万次,累加每次的响应时间并且除以1万,则可获取每次请求的响应时间。

2.并发数量

并发数指的是系统可以承受的用户同时在线数量。可以当作是一种基础的负载情况。系统的性能随并发数量的增加而逐渐处于平缓,然后会在某个并发量下出现性能大幅下降的情况,这个点被称为并发瓶颈。

3.吞吐量

吞吐量是指单位时间内,系统可以正确接受并处理的数据量。吞吐量的大小决定了系统单位时间内能够处理请求的多少。

吞吐量主要可以通过TPS和QPS来描述。

1.TPS

TPS即Transaction Per Second,每秒事务数量。通常用来代表某个接口(以业务处理为主),每秒钟可以处理的事务数量。

2.QPS

QPS即Querys Per Second,每秒查询数量。通常用来代表某个接口(以查询为主),每秒钟可以处理的请求个数。

4.系统负载

系统负载指的是CPU的使用情况,通常情况下指的是当前正在被CPU执行的进程总数,是反映系统忙闲状态的重要指标。

在多核CPU的情况下,最完美的情况是所有的CPU都在被使用,所有的进程都在被执行,而不存在进程被等待处理。

在Linux下使用top命令可用查看在1分钟、10分钟和15分钟内运行的平均进程数量:

在这里插入图片描述

3.性能测试分类

1.性能测试

以初期系统规划的性能指标为预期目标,对系统不断地施加压力,验证系统在资源可接受范围内,是否能达到性能预期。

2.负载测试

对系统不断地增加并发请求已增加系统的压力,直到系统的某项或多项性能指标达到安全临界值,这时如果继续提高系统压力,则系统的处理能力会平稳甚至下降。

3.压力测试

在超过系统安全负载的情况下,继续向系统施压,使得服务器宕机或系统无法对外提供服务,以获得系统在极致条件下的最大抗压能力。

4.基准测试

基准测试是一种测量和评估软件性能指标的活动,用于建立某个时刻的性能基准,一般不需要考虑业务流程,而是直接对接口或服务进行测试,可以更快地获取到各种底层服务的基本抗压性能(如Redis和MySQL都提供了基准测试工具)

5.使用JMeter进行测试

(这里先省略,日后有较深入研究再补充)

6.关系图

在这里插入图片描述

发布了309 篇原创文章 · 获赞 205 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/pbrlovejava/article/details/104928906