2009/03/25

Web项目开发与架构杂谈 (一)

前言

     随着互联网的流行,看看新闻,搜索资料,侃大山,还是购物,很多这样基于Web的应用越来越走进生活当中。随着应用的点击与使用量越来越庞大,带来的升级与更新也愈来愈显得重要。对于用户来说第一是内容和表面的展示,必须得有吸引人的地方,这个是根本。其次得快速的获得相应,一个页面如果等待个几十秒或者更久,估计很少又人会再次回来。其实自己对这些也没啥太多大道理可谈,简单共享下几年以来在开发上的一些经验,这里不讨论集群、负载方面以及硬件部分的话题,对此不懂 :)


Web服务器

     根据一些排名可以看出,Apache依然是此类中老大,当然不乏很多后起之秀,比如Nginx、Lighttpd等。这里列出的都是自己尝试过的,当然还有其他很优秀的(IIS之类)没啥经验就不做评论了。现在主流网站大部分还是基于Apache,其优点是稳定,可扩展性强,模块巨多等特点,主要有两个版本:1.3和2.x,1.3已经不再更新,不过依然有很多站点还是采用这个版本,这里 推荐使用2.x新版本,毕竟有了很多新功能,比如MPM机制,提升了不少性能,而且扩展也更为规范,也把其中老版本的代码单独拖出APR项目。当然也有其不足的地方,比如并发量太大,优化不足的时候明显相应变慢,传统的多进程模式消耗内存也会增加不少,而线程模式还不是很稳定高效。这时候可以尝试下轻量级的Web服务器,现在最火爆的当属Nginx和Lighttpd。国内外很多知名网站也都纷纷采用,比如YouTube、网易、新浪、MOP等。二者共同之处是高效,小巧以及快速。尤其在静态文件方面跟Apache不是一个量级的,在动态语言方面都采用FastCGI模式,效率也提升不少,在占用内存方面也都控制的不错。两者功能以及扩展模块也相对比较完善。Lighttpd可以看做是Apache的缩小版,适合从Apache转过来的人。Nginx在反向代理方面可以说是猛的很。当然不能光看两者强悍之处,在稳定性以及文档方面都不如Apache。

     说了那么多废话,大概总结下:如果对稳定性要求高的推荐使用Apache,而在图片、HTML或者CSS等静态文件方面则推荐使用Nginx和Lighttpd。可以采用相结合的方式获取最大性能。

1 replys:

Anonymous said...

nginx确实快,而且模块也越来越丰富了。等nginx对perl支持良好以后,肯定还会有大量有趣的应用。

Post a Comment