【读书笔记】网站的高性能架构

前言本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为性能、可用性、伸缩性、扩展性、安全性。本文针对性能这一要素进行展开讨论,内容也主要参考自《大型网站技术架构》这本书(一万分推荐这本书,个人认为这本书可以说是技术架构导论一样的存在了)。性能指标一、响应时间指某个请求从发出到接收到响应消耗的时间。在对响应时间进行测试时,通常采用重复请求...

【读书笔记】网站的高性能架构
前言

本菜鸡之前有过一篇读书笔记,整理了李智慧老师所著的《大型网站技术架构》一书中叙述的五个架构要素。这五个要素分别为 性能、可用性、伸缩性、扩展性、安全性。本文针对性能这一要素进行展开讨论,内容也主要参考自《大型网站技术架构》这本书(一万分推荐这本书,个人认为这本书可以说是技术架构导论一样的存在了)。

性能指标

一、响应时间

指某个请求从发出到接收到响应消耗的时间。

在对响应时间进行测试时,通常采用重复请求的方式,然后计算平均响应时间。

二、吞吐量

指系统在单位时间内可以处理的请求数量,通常使用每秒的请求数来衡量。

吞吐量的几个常用量化指标:

  • TPS(每秒事务数)
  • QPS(每秒查询数)
  • HPS(每秒HTTP请求数)

三、并发数

指系统能同时处理的并发用户请求数量。

在没有并发存在的系统中,请求被顺序执行,此时响应时间为吞吐量的倒数。例如系统支持的吞吐量为 100 req/s,那么平均响应时间应该为 0.01s。

目前的大型系统都支持多线程来处理并发请求,多线程能够提高吞吐量以及缩短响应时间,主要有两个原因:

  • 多 CPU
  • IO 等待时间

使用 IO 多路复用等方式,系统在等待一个 IO 操作完成的这段时间内不需要被阻塞,可以去处理其它请求。通过将这个等待时间利用起来,使得 CPU 利用率大大提高。

并发用户数不是越高越好,因为如果并发用户数太高,系统来不及处理这么多的请求,会使得过多的请求需要等待,那么响应时间就会大大提高。

性能优化

根据网站分层架构,可分为:

  • Web前端性能优化
  • 应用服务器性能优化
  • 存储服务器性能优化

接下来将对前两种优化手段进行介绍。

Web前端性能优化

一、减少 HTTP 请求

减少 HTTP 请求可有效提高访问性能,手段主要有合并 CSS、合并 JavaScript、合并图片。

二、使用浏览器缓存

CSS、JavaScript、Logo、图标等这些静态文件不需要每次都去执行 HTTP 请求来获得。我们可以将这些文件缓存在浏览器中。通过设置 HTTP 头中 Cache-Contro l和 Expires 的属性,可设定浏览器缓存,缓存时间可以是数天,甚至是几个月。

三、启用压缩

在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效减少通信传输的数据量。

四、CSS 放在页面最上面,JavaScript 放在页面最下面

五、减少Cookie传输

因为 Cookie 包含在每次的请求和响应中,太大的 Cookie 会严重影响数据传输,因此要慎重考虑需要写入的 Cookie

六、使用 CDN、反向代理

CDN(Content DIstribute Network),内容分发网络,本质是一个缓存,它将数据缓存在离用户最近的地方(部署在离终端用户最近的网络运营商的机房),使用户以最快速度获取数据,即所谓网络访问第一跳。
在这里插入图片描述

反向代理,除了用作负载均衡、保证应用服务器安全性以外,同CDN一样,可以将数据缓存在反向代理服务器上。

在这里插入图片描述
无论是使用 CDN 还是反向代理,核心思想都是将常用的请求资源缓存起来,使得 HTTP请求不用到达应用服务器就能得到响应。

应用服务器性能优化

一、使用缓存

网站性能优化第一定律:优先考虑使用缓存优化性能。

缓存能够提高性能的原因如下:

  • 缓存数据通常位于内存等介质中,这种介质对于读操作特别快;
  • 缓存数据可以位于靠近用户的地理位置上;
  • 可以将计算结果进行缓存,从而避免重复计算。

二、使用集群

将多台服务器组成集群,使用负载均衡将请求转发到集群中,避免单一服务器的负载压力过大导致性能降低。

在这里插入图片描述

三、使用异步操作

使用消息队列将调用异步化,可改善网站的扩展性,事实上使用消息队列还可以改善网站系统的性能。
在这里插入图片描述
某些流程可以将操作转换为消息,将消息发送到消息队列之后立即返回,之后这个操作会被异步处理。用户的响应延迟可以得到有效的改善。

而且消息队列具有很好的削峰作用,它可以将短时间高并发产生的事务消息存储在消息队列中,从而削平高峰期的并发事务。在电子商务网站促销活动中,合理的使用消息队列,可有效抵御促销活动刚开始大量涌入的订单对系统造成的影响。

源文地址:https://www.guoxiongfei.cn/csdn/5116.html