架构中五个重要的核心指标:分别是性能、可用性、伸缩性、扩展性和安全性。
一、性能
性能就是核心要素之一,不然我为什么架构设计?随随便便一个lowlow的系统上线就好了。所以性能优化是很多小公司卖不去过的坎。这么说吧,当然优化网站性能的手段也非常多:
1. web前端性能优化:
1. 浏览器访问优化(浏览器缓存、页面压缩传输、合理布局页面、减少Cookie传输)
- 减少http请求。避免建立太多通讯链路。将js、css、图片文件尽可能合并。避免太多请求。同时,对于系统的后端请求也尽可能进行合理的设计,来避免出现太多交互。
- 使用浏览器的缓存。http头设置Cache-Control和Expires.js文件名比如可以带时间戳。一旦有更新则更新时间戳,否则缓存;同时尽量避免同一时间更新大量静态资源。
- 对静态资源进行压缩。
- css放置在页面最上方,js放下最下面。以提前进行css渲染。同时避免js带来的页面阻塞。但需要case by case。比如页面dom节点需要依赖js生成,则可视情况改变文件位置。
- 减少cookie传输。同时让静态资源有独立域名,发送静态资源请求时候不发送cookie。以此减少传输代价。cookie可以通过document.cookie获取。
2.CDN加速
- 缓存图片、文件、CSS以及script脚本。但是pc上的CDN加速效果要好于移动端。经过调研发现,last-mile的延迟越高,CDN的相对有效性越差(具体见文章为什么CDN对移动客户端加速“没有”效果)。
3.反向代理
- 可以提供七层负载均衡(http请求进行均衡策略),并且可以提供静态资源的缓存,请求转发,防止网络攻击等。比较流行的有nginx。
2. 应用服务器性能优化:
如果请求静态界面不卡了,但是动态数据还是卡,说明MySQL处理的请求太多了,可以使用服务器本地缓存和分布式缓存,也可以通过异步操作方式来加快响应,在高并发请求的情况下,可以将多台应用服务器组成一个集群共同对外服务,提高整体处理能力,改善性能,具体如下:
1. 分布式缓存(网站性能优化的第一定律:优先