瞬时响应:网站的高性能架构

从开发和测试人员的视角,网站性能测试的主要指标有响应时间、并发数、吞吐量、性能计数器等。

性能测试是一个总称,具体可细分为性能测试、负载测试、压力测试、稳定性测试

性能优化

定位产品性能问题的具体原因后,就需要进行性能优化,根据网站分层架构,可分为Web前端性能优化、应用服务器性能优化、存储服务器性能优化3大类。

WEB前端性能优化

浏览器访问优化

1.减少http请求。HTTP协议是无状态的应用协议,意味着每次HTTP请求都需要建立通信链路、进行数据传输,而在服务器端,每个HTTP都需要启动独立的线程去处理。这些通信和服务的开销都是昂贵的。

减少HTTP的主要手段是将浏览器一次访问需要的JS、CSS合并在一个文件,这样浏览器就只需要一次请求。

2.使用浏览器缓存。对于一个网站,CSS、JS、Logo、图标这些静态资源文件更新的频率都比较低,但每次HTTP请求都需要,如果将这些文件缓存在浏览器中,可以极好地改善性能。通过设置HTTP头部中Cache-control和Expries的属性,设置缓存。

3.启用压缩。在服务端对文件进行压缩,在浏览器端对文件解压,可以有效减少通信传输的数据量。文本压缩达80%以上。

4.CSS放在页面最上面、JS放在页面最下面。浏览器在下载完全部CSS之后才对真个页面进行渲染,一次最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS。JS则相反,浏览器在加载JS后立即执行,可能会阻塞整个页面,造成页面显示缓慢,因此JS最好放在页面最下面。

5.减少Cookie传输。Cookie包含在每次请求和相应中,太大的Cookie会严重影响数据传输。静态资源的访问,如CSS、JS等,发送Cookie没有意义,考虑静态资源使用独立域名访问,避免请求静态资源时发送Cookie,减少Cookie传输的次数。

CDN加速、反向代理。

详情见:https://blog.csdn.net/MFL_CEO/article/details/81866634

应用服务器性能优化

应用服务器就是处理网站业务的服务器,网站代码都部署在这里,是网站开发最复杂,变化最多的地方,优化手段主要有缓存、集群、异步化等。

分布式缓存

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

1.缓存的基本原理。缓存的本质是一个内存Hash表。

2.合理使用缓存。(1)频繁修改的数据;(2)没有热点的访问;(3)缓存可用行;(4)缓存预热;(5)缓存穿透。

3.分布式缓存框架。分布式缓存架构有两种:以JBoss Cache为代表的需要更新同步的分布式缓存,以Memcached为代表的互不通信的分布式缓存。

JBoss Cache的分布式缓存在集群中所有服务器中保存相同的缓存数据,当某台服务器有缓存数据更新的时候,会通知集群中其他机器更新缓存数据或清除缓存数据。JBoss Cache通常将应用程序和缓存部署到同一台服务器上,应用程序可以从本地快速获取缓存数据,但是这种方式带来的问题是缓存数据的数受限于单一服务器,其代价惊人。因此此类方案适用于企业应用系统中,很少在大型网站使用

Memcached采用一种集中式的缓存集群管理,也被称作互不通信的分布式架构方式。缓存与应用分离部署,缓存系统部署在一组专门的服务器上,应用程序块通过一致性Hash等路由算法选择缓存服务器远程访问缓存数据缓存服务器之间不通信,缓存集群的规模很容易地实现扩容,具有良好的可伸缩性。

Memcached特点:简单的通信协议、丰富的客户端程序、高性能的网络通信、高效的内存管理、互不通信的服务器几圈框架。详情可参考博客:https://blog.csdn.net/andyhuabing/article/details/52471296

异步操作

使用消息队列将调用异步化,可改善网站的扩展性。

在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得响应延迟加剧。在使用消息队列后,用户请求的数据会给消息队列立即返回,再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。由于消息队列服务器处理速度远快于数据库,因此用户的响应延迟可得到有效改善。消息队列有很好的削峰作用,即通过异步处理,将短时间高并发的事务消息存储在消息队列中,从而削平高峰期的并发事务。

注意:由于数据写入消息队列后立即返回给用户,数据在后续的业务校验、写数据库等操作可能失败,因此在使用消息队列进行业务异步处理后,需要适当修改业务流程进行配合,如订单提交后,订单数据写入消息队列,不能立即返回给用户订单提交成功,需要在消息队列的订单消费者进程真正处理完该订单,甚至商品出库后,再通过电子邮件或SMS消息通知用户订单成功。

使用集群

在高并发访问的场景下,使用负载均衡技术为一个应用构建一个由多台服务器组成的服务器集群,将并发访问请求分发到多台服务器上处理,避免单一服务器因负载压力过大而响应缓慢,使用户请求具有良好的响应延迟特性。

三台服务器共同处理来自用户浏览器的访问请求,这样每台Web服务器需要处理的http请求只有原来并发总数的1/3,根据性能测试曲线,使服务器的并发请求数目控制在最佳运行区间,获得最佳的访问请求延迟。

代码优化

1.多线程;2.资源复用;3数据结构;4.垃圾回收。

存储性能优化

1.机械硬盘vs固态硬盘;2.B+树VS.LSM树;3.RAID vs.HDFS。

后记:架构师要合理调整相关各方对性能优化的心里预期。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值