大型网站部署架构一个Web应用系统的性能、稳定性及吞吐量等技术指标是依靠很多方面的设计和优化共同提高的,包括系统设计、系统代码编写过程的算法优化,还有一点非常重要,就是系统的部署,在我们的实际工作中发现,即使相同的系统采用不同的部署方法也能够大幅度提高性能,本文就网站应用系统的部署作以大致的描述,如果在系统设计开发之初就考虑到这样的架构,则上线运行后性能及稳定性就能够顺利达到目标要求。(一)网站应用系统的分类网站是由一个一个的网页组成的,而每个网页就是一个html文档和很多个元素(内嵌html、js、css、文字、图片、视频)组成的,把这些元素有机的生成一个个网页就是网站应用系统的作用,从目前网站应用系统的分类看,大致分为两类:1.传统的内容浏览系统-静态这样的系统类似各大门户网站的新闻频道,这些内容的生产者是网站的运营方,即编辑,内容一旦生成就静止不动,称为静态内容,广大网友只能单向的通过浏览器打开这些网页阅读其中的内容,每个网友看到的内容是完全相同的,也就是常说的web1.0。2.互动类应用系统-动态这样的系统称为Web2.0,也就是动态网站应用系统,这样的系统生成的内容多是网友之间相互交互的内容,类似于评论、微博等,这样的系统使得每个网友打开的网页内容都不完全相同,需要根据条件动态生成,也就造成了系统的复杂性提高,性能大幅度下降,需要通过对系统的结构优化来满足运营的指标需求,但是动态应用系统也不是网页的所有内容都需要动态生成,而是80%的内容是完全相同的,也就是所谓的静态内容,我们就是抓住这点在部署上充分优化就能够大幅度提升整个系统的响应时间。(二)B/S系统数据组成B/S系统的数据包括客户端数据和服务器端数据,客户端数据就是用户通过浏览器提交到服务器端的数据,浏览器提交到服务器的数据相对单一,无非是文本或者图片、视频、音频等流数据,其中文本数据作为基本数据和作为服务器端应用的参数数据,图片、视频、音频等流数据只是作为文件存储的数据;服务器端数据就是应用系统通过接受浏览器端提交的请求及数据而生产的数据,也就是服务器返回给浏览器的数据,包括了页面基本文档html、样式CSS、客户端程序代码(js、flash等)、图片、视频、音频、数据(xml,json)等,而服务器端的这些数据只有基本文档html(或者部分html)有可能是根据浏览器端的参数动态生成的,而其他数据均是静态的,这样就很自然的将服务器端的数据分成静态和动态两个部分。(三)网站部署目前的网站基本由两部分组成:静态内容和动态内容,这样在部署策略上也就分成两种。1.静态网站部署静态内容是可以通过多种方式缓存在网络的各个节点上的,例如:浏览器所在的客户端本身、网络前沿节点服务器即CDN网络节点、IDC分布式文件服务器、IDC中心服务器。浏览器获取这些内容的时候的搜索次序是:本地缓存-CDN节点-IDC的分布式文件服务器-IDC中心服务器,所以在部署静态内容的时候也要遵循这样的策略,充分利用网络就近原理给用户提供这些网络静态资源,这样不仅提高了用户获取资源的速度而且大大缓解了IDC中心服务器的压力。2.动态网站部署动态网站的内容是服务器端的应用系统根据某些条件动态生成的内容,但是这些动态内容的生成频次并不完全相同,有的要求不能有任何延时,而有的是可以接受一定延时,针对完全实时的内容就只能靠应用系统自身的优化来提高响应时效了,其中包括了结构设计优化、算法优化等,在部署层面只能依靠负载均衡提高效能;针对有一定延时的动态系统,可以设定返回给浏览器的资源文件的过期时间(expired-time)来最大限度利用上面说到的缓存网络节点,也就是如果用户在过期时间内请求这个资源,则就从以上的缓存节点直接获取,只有过了过期时间用户请求才会到IDC中心应用系统请求生成这个资源,这样也能够最大幅度提高用户响应效率,并且降低中心应用系统的负载压力。下面就复合型网站(动、静态内容混杂)的部署架构作以介绍:(1)应用系统部署这个是网站应用系统的核心,每个系统的架构可能都有所不同,可以是单台Web访问Web访问DNS族推送同步静态原站族域名解析静态数据域名解析静态数据动态数据业务逻辑、LVS静态资源项目一业务逻辑、LVS静态资源项目N推送同步动态数据CDN族服务器,也可以是服务器集群,这个要视系统的响应指标而定,静态的资源要独立部署,其中涉及到系统的静态资源部署在一起(js,css,页面修饰图片等部署在一个虚拟目录);动态程序部署在一起,当然如果动态程序也可以按照结构分别部署;数据库部署在一起;其他一些cache系统部署在一起;如果系统涉及到大批量的图片、视频、音频等文件的,要考虑采用分布式文件系统部署。动态程序可以部署在一个负载均衡系统下。(2)静态原站族部署在应用系统的上层部署一个静态资源原站族,也就是网站各个应用系统的静态资源(html、js、css、页面修饰图片)相对集中到一个服务器族中,应用系统的静态资源服务器将这些静态内容推送同步到这个层面。(3)CDN部署CDN类似于静态原站族的下级缓存网络节点,部署策略和静态网站相同。以上的部署原则就是:不同的缓存策略资源走不同的网络通道,不同的资源分配不同的域名。另外:页面中的动态内容尽量采用Ajax的方式异步提供,这样会更好的增强用户体验,而且会降低应用系统的负载压力。