您的位置:首页 > 运维架构 > 网站架构

架构基础2-网站的高性能

2016-03-02 14:51 375 查看
性能测试指标:

1,响应时间 2,并发数 3,吞吐量(TPS、HPS、QPS)

Web前端性能优化策略:

1,减少HTTP请求(合并CSS,js,图片)

2,使用浏览器缓存(通过设置HTTP头中的cache-control和expires属性)

3,启用压缩

4,CSS放在页面最上面,Js放在页面最下面(以名js执行阻塞页面渲染)

5,减少Cookie传输(对静态资源访问时发送cookie没有意义,可以考虑静态资源使用独立域名访问)

6,CDN加速(CDN部署在网络运营商的机房,这些运营商又是用户的网络服务提供商,因此用户请求路由第一跳就到达CDN服务器,以最短路径返回响应)

7,反向代理(反向代理服务器与代理服务器相反,它位于网站机房侧。它可以通过配置缓存功能加速web请求,用户首次访问静态资源后就被缓存在反向代理服务器上了,其它用户再访问直接从反向代理服务器返回,有些网站将动态内容也缓存在代理服务器上,通过内部机制通知反向代理缓存失效。此外,反向代理也可以实现负载均衡)

应用服务器性能优化:

1,分布式缓存

本质:将数据存储在相对较高访问速度的存储介质。主要存放读写比例高,很少变化的数据。分布式缓存架构是指缓存部署在多个服务器的集群中。以集群方式提供服务。

一种是需要更新同步的分布式缓存(Jboss cache),所有服务器保存相同缓存数据,当某台更新时会通知集群中其它机器,通常和应用程序部署在同一机器,应用程序可以快速从本地读取。不适用于大型网站使用。

一种是不相互通信的分布式缓存(Memcached),缓存和应用分离部署,应用程序通过一致性Hash等路由算法选择缓存服务器。

2,异步操作

使用消息队列将调用异步化,用户请求发送给消息队列后立即返回,再由消息队列的消费者进程(该进程通常独立部署在专门的服务器集群上)从消息队列中获取数据。但消息的后续处理可能失败,需要适当修改业务流程进行配合,比如提交订单后返回,需要消息队列的订单消费者真正处理完后通过其它渠道通知用户。

3,使用集群

4,代码优化

多线程编程(解决线程安全问题常用手段,将对象设计为无状态对象,即对象无成员变量或成员变量也是无状态对象,web开发中的service和dao都是无状态对象,这样多线程并发时不会出现状态不一致;使用局部对象;并发访问资源时使用锁)

资源复用,减少开销很大的系统资源的创建和销毁,比如数据库连接,网络通信连接,线程。复用有两种模式:

单例与对象池。spring中的service到dao都是无状态对象,无需重复创建,所以设计为单例。常用的数据库连接池就是对象池的设计。web应用服务器如tomcat采用的线程池。

数据结构,使用合理的数据结构优化代码性能

垃圾回收,JVM堆内存分为年轻代和年老代,垃圾回收是采用分代回收机制,新建对象都在新生代中,只有长期存在且新生代空间不足时才会挪到年老代中。通常只应该触发新生代的回收,如果年老代的内存使用完了就会触发Full GC,Full GC对系统性能影响大,所以应合理设置young generation和old generation大小,尽量减少Full
GC。

存储性能优化策略:

固态硬盘(SSD或Flash硬盘)替代机械硬盘

RAID技术可以改善磁盘的访问延迟,增强磁盘的可用性与容错能力。HDFS(Hadoop分布式文件系统)可在存储集群的多台服务器上进行并发读写和备份。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  架构基础