干货分享!设计一个系统架构时怎么去做性能优化?

概述

设计系统架构中最核心的几个要素包括:性能可用性伸缩性扩展性安全性,而性能又是其中最为重要的,本篇简要说下网站性能优化方面所需做的一些事情;


1. 网站性能问题概要

干货分享!设计一个系统架构时怎么去做性能优化?

2. 网站性能测试

干货分享!设计一个系统架构时怎么去做性能优化?

站在开发、测试人员角度,性能测试的主要指标:响应时间、并发数、吞吐量、服务器各性能指标;

干货分享!设计一个系统架构时怎么去做性能优化?


3. 性能优化

根据性能测试,定位产生性能问题的具体原因,找到瓶颈点,逐步优化;

一般性能优化分为Web前端性能优化、应用服务器性能优化、存储服务器性能优化(数据库优化的太多点了,后面再讲)

Web前端性能优化

1. 浏览器访问优化

干货分享!设计一个系统架构时怎么去做性能优化?

2. CDN加速

上面说了,CDN的本质仍然是缓存,将数据缓存在离用户最近的机房,提升访问速度,降低中心机房服务器的压力;

CDN能够缓存的一般都是静态资源,如图片,文件,视频,CSS,JS等,将访问频度高的静态资源放到CDN中;

3. 反向代理

干货分享!设计一个系统架构时怎么去做性能优化?

推荐用nginx来做缓存和负载,跟tomcat或其他中间件做动静分离。

应用服务器性能优化

1. 分布式缓存

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

缓存的本质是内存Hash表,数据以Key/Value的形式存储在Hash表中,时间复杂度O(1),Hash表存储如下图所示:

干货分享!设计一个系统架构时怎么去做性能优化?

hash表存储

只要是缓存,就会涉及到缓存未命中与缓存失效问题,因此,缓存中的数据一般都是读取比例很高,很少变化的数据;

2. 异步操作

干货分享!设计一个系统架构时怎么去做性能优化?

可使用消息队列将请求调用异步化,发送的请求发送给消息队列后立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库;

在高并发情况下,使用消息队列,能够有效降低数据库服务器压力,降低用户端响应延时;

消息队列可以消除高并发下的访问高峰,消峰效果如下图所示:

干货分享!设计一个系统架构时怎么去做性能优化?

3. 使用集群

在高并发下,可使用负载均衡技术构建应用服务器集群,将请求分发到多台应用服务器来处理,降低单台服务器压力,提升响应速度;

4. 代码优化

干货分享!设计一个系统架构时怎么去做性能优化?

存储服务器性能优化

在很多情况下,磁盘的访问速度成为整个系统的瓶颈,而且磁盘中的数据是网站最重要的资产,故磁盘的容错性和可用性都至关重要;

  • 适当使用SSD;
  • 合理使用RAID(RAID0,RAID1,RAID10,RAID5,RAID6等)
  • 合理使用HDFS等分布式文件系统

后面会分享更多数据库优化的一些点,怎么从其他角度去优化的内容,感兴趣的朋友可以关注下~

相关推荐