点击蓝色字关注我们吧!
大家好我是张拭心,前段时间听完了某时间 app 上的后端架构课程,在公司也参加了一些后端方面的技术培训,想着要总结一下,就吹出了上一篇的牛。
然而在写作过程中,我发现很难用自己的话把学到的知识表述一遍。我们知道如果可以用自己的理解来描述一个知识点,证明这个知识已经和我们当前的知识点建立了联系,但后端开发我经验很少,学到的理论知识还基本是个孤岛,没办法有很多自己的理解。
文章的内容缺乏自己的创作,甚至直接是一些优质文章的复制,这在我看来最多能算作学习笔记,距离我当初吹的牛差的太远,希望读者朋友能够理解包容一下,谢谢了。
读完本文,希望你会对后端一些常用的术语有所理解。
我们知道,与前端关注 C 端体验不同,后端关注后台数据处理能力。用户量多与不多,访问次数多与少,在后端需要做的工作完全不同。
为了应对高并发的请求,后端系统需要具备高性能、高可用、可拓展等特点,为了实现这三点,要做的工作非常多,我们来简单了解下。
经常听到后台人员介绍自己开发的系统 QPS 多少多少,这是什么意思呢?
QPS(TPS)、并发数、响应时间(RT)
简单概括:这些数据代表着系统的处理能力。
QPS
表示的是:每秒处理完的请求数,一般针对单个接口服务,又叫“吞吐量”TPS
表示的是:每秒处理完的事务数,一个事务在分布式中可能对应多个请求,因此这个指标一般针对整个系统并发数
表示系统同时能处理的请求数,受线程数、 进程数、CPU 数等影响响应时间(RT)
:表示处理一次请求所需的平均时间,包括CPU运算、IO、外部系统响应等时间组成。
QPS(TPS)= 并发数/平均响应时间
一个系统吞吐量通常由QPS(TPS)、并发数两个因素决定。
每套系统这两个值都有一个相对极限值,在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其它消耗导致系统性能下降。
做系统设计时,要考虑 CPU 性能、IO 操作耗时以及外部系统响应时间造成的响应时间影响,除了要评估出大概的 QPS、并发数后,还要考虑系统最高能承受的 TPS 多少。
拿淘宝来说,凌晨的访问量比较少,需要的机器不太多,但到了中午或者晚上访问量骤增,为了能灵活的应对这种不同时间要求不同的处理能力,同时尽可能地降低成本,使用云计算资源是一个好的出路。
分布式与集群
单个服务器终究性能有限,要实现能够处理高并发请求的系统,需要有集群,还得设计高性能的分布式系统来提系统的处理能力。
简单概括分布式与集群的区别:分工协作和一群人。
分布式和集群的概念似乎有些重复,都说的是好多机器,但实际上集群指的就是一群机器,没有额外的业务信息。而分布式强调的是将不同的业务分散到不同的机器上,分散每个服务器的压力。
上图中,集群指的是三个 Web Server,而分布式是指:客户端的访问经过负载均衡器分发到不同的 Web 服务器。
分布式包含的内容很多,如下图所示,有兴趣的朋友可以进一步学习:
分布式会带来很多的其他问题,最主要的就是一致性。
推荐阅读:小白科普:分布式和集群分布式与集群的区别是什么?什么是分布式系统,如何学习分布式系统
高性能
后台系统中的“高性能”主要包括两部分:
尽可能多地榨干单台计算机的性能
尽可能高的利益计算机集群的能力
单台计算机的高性能
操作系统和性能最相关的就是进程和线程: