网站架构

web前端性能优化:

优化手段:优化浏览器访问、使用反向代理、CDN

1、浏览器访问优化:

HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要建立通信链路,进行数据传输,而在服务器端每个HTTP都需要启动独立的线程去处理,这些通信和服务的开销都很昂贵,减少HTTP请求的数目可有效提高访问性能减少HTTP的主要手段是合并CSS、合并JavaScript、合并图片。

2、缓存静态文件:

通过设置HTTP头部的Cache-Control和Expires的属性,设定浏览器缓存,缓存时间可以是数天,甚至是几个月
在更新资源时,应该采用逐量更新的方法,避免用户浏览器突然大量缓存失效,集中更新缓存,造成服务器负载骤增、网络堵塞情况

3、启用压缩:

在服务器端对文件进行压缩,可有效减少通信传输的数量,但是压缩对服务器和浏览器产生一定的压力,在通信状态良好而服务器
资源不足的情况下要权衡考虑。

4、CSS放在最上面、JavaScript放在最下面

浏览器会在下载完全部CSS之后才对整个页面进行渲染,一次最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS。JavaScript
则相反,浏览器会在加载JavaScript之后立即执行,有可能会阻塞整个页面,造成页面显示缓慢,因此JavaScript最好放在页面的最下
面,但如果页面解析时就需要用到JavaScript,这时放在底部就不合适了。

5、减少Cookie传输

Cookie包含在每次请求和响应中,太大的Cookie会严重影响数据传输,因此哪些数据需要写入Cookie需要慎重考虑,尽量减少Cookie中
传输额数据量,对于某些静态资源的访问,如CSS、Script等,可以考虑静态资源使用独立域名访问,避免请求资源时发送Cookie
减少Cookie传输次数

6、CDN加速(内容分发网路 Content Distribute Network)

CDN的本质仍然是一个缓存,而且将数据缓存在离用户最近的地方,CDN能缓存的一般是静态资源,如图片、CSS、文件、Script脚本等

7、反向代理

增加安全性,还可以在反向代理服务器上配置缓存功能加速web访问


应用服务器性能优化:

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

缓存指将数据存储在相对较高访问速度的存储介质中,以供系统处理

缓存的本质是一个内存Hash表


合理使用缓存:如果应用系统访问数据,不遵循二八定律(指80%的访问落在20%的数据上),那么缓存就没有意义,因为大部分数据还没有被再次访问就已经被挤出缓存了

缓存雪崩:数据库习惯了有缓存的日子,所以当缓存服务奔溃时,数据库会因为完全不能承受如此大的压力而宕机,进而导致整个网站 不可用。

Memcached将内存空间分为一组slab每个slab里又包含一组chunk,同一个slab里的每个chunk的大小是固定的,拥有相同大小chunk的slab被组织在一起,叫做slab_class,存储数据时根据Size的大小,寻找一个大于Size的最小slab_class将数据写入。这种内存管理的方式避免了内存碎片管理的问题,内存的分配和释放都是以chunk为单位的。和其他缓存一样,Memcached采用LRU算法释放最近最久未被访问的数据占用空间,释放的chunk被标记为未用,等待下一个合适大小的数据写入。
当然这种方式也会带来内存浪费的问题,数据只能写入一个比它大的chunk里,而chunk只能存一个数据,其他空间被浪费了


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

使用集群:负载均衡

代码优化:多线程

存储优化


负载均衡:


HTTP重定向负载均衡:HTTP重定向服务器,根据用户的HTTP请求计算一台真实的Web服务器地址,并将该Web服务器地址写入HTTP重定向响应中,返回给用户浏览器

DNS域名解析负载均衡:优点,省去了网站管理维护负载均衡服务器的麻烦,同时DNS还支持基于地理位置的域名解析,加快用户访问速度,改善性能。但是DNS的生效需要较长时间,比如一台服务器已经下线,但是DNS还是将域名解析到下线的服务器,导致用户访问失败。大型网站总是部分使用DNS域名解析,利用域名解析作为第一级负载均衡手段,即DNS解析到负载均衡设备,再由负载均衡设备在进行负载均衡。

反向代理负载均衡:反向代理服务器处于web前面,可以提供缓存服务。由于反向代理服务器转发请求在HTTP协议层面,因此也叫应用层负载均衡。由于WEB服务器不直接对外提供访问,因此web服务器不需要使用外部IP地址,而反向代理服务器则需要配置双网卡和内部外部两套IP地址。由于反向代理服务器转发请求在HTTP协议层面,其优点是和反向代理服务器功能集成在一起,部署简单。缺点是反向代理服务器是所有请求和响应的中转站,其性能可能会成为瓶颈。

IP负载均衡:真实物理机如何返回数据包给负载均衡服务器。一种方案是使用源地址转换,即修改目的IP地址的同时修改源地址,将数据包源地址设为自身IP,这样真实WEB服务    器的响应会再回到负载均衡服务器。另一种方案是将负载均衡服务器同时作为真实物理服务器集群的网关服务器,这样所有的响应数据都会到达负载均衡服务器。IP负载均衡在内核进程完成数据转发,较反向代理负载均衡有更好的处理性能。IP负载均衡的缺点是:由于所有请求响应都需要经过负载均衡服务器,集群的最大响应数据吞吐量不得不受制于负载均衡服务器网卡带宽。

数据链路层负载均衡:数据链路层负载均衡是指在通信协议的数据链路层修改MAC地址进行负载均衡,这种数据传输模式又称作三角传输模式,负载均衡数据分发过程中不修改IP地址,只修改目的MAC地址,通过配置真实物理服务器集群所有机器虚拟IP和负载均衡服务器IP地址一致,从而达到不修改数据包的源地址和目的地址就可以进行数据分发的 目的。这种负载均衡方式又称直接路由方式(DR)

负载均衡算法:

   轮询(Round Robin,RR)

      所有请求依次分发到每台应用服务器上,即每台服务器需要处理的请求数目相同,适合所有服务器硬件都相同的场景。

           加权轮询(Weighted Round Robin ,WRR) 

      根据服务器的性能情况,在轮询的基础上,按照配置的权重将请求分发到各个服务器,权重值越大的服务器能分配更多请求

   随机(Random)

      请求被随机分配到各个应用服务器。

    最少连接(Least Connections)

      记录每个服务器正在处理的连接数,将新的请求分发到最少连接的服务器上。,应该说,这是最符合负载均衡定义的算法,同样,最少连接算法也可以实现加权最少连接

         源地址散列(Source Hashing)

      根据请求来源的IP地址进行Hash运算,得到应用服务器,这样来自同一个IP地址的请求总在同一个服务器上处理,该请求的上下文信息可以存储在这台服务器上,在一 个会话周期内重复使用,从而实现会话黏滞。

               






原文地址:https://www.cnblogs.com/Template/p/9321270.html