[文摘20100304]高并发高负载的重型网站系统架构

本文转自:http://doc.chinaunix.net/project/200909/165416.shtml

【内容导航】
第1页:HTML静态化
第2页:图片服务器分离
第3页:镜像

   
一个小型的网站,比如私家网站,可以以最简易的html静态页面就兑现了,配合局部图片上美化效果,所有的页面都存于一个索引下,这样的网站针对系统架构、性能的渴求都蛮粗略,随着互联网业务的不断丰富,网站相关的艺通过这些年的上进,已经分开到老细之合,尤其对于大型网站的话,所使用的技艺更为涉及面非常广阔,从硬件及软件、编程语言、数据库、WebServer、防火墙等各个领域都生矣酷高的渴求,已经不是本简单的html静态网站所能够比较的。

   
大型网站,比如门户网站。在迎大气用户访问、高并发请求方面,基本的解决方案集中在这么几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有大性能的Web容器。但是除此之外这几个方面,还没法向解决大型网站面临的高负载和强起问题。

   
上面提供的几只缓解思路在得水平上吗象征又怪之投入,并且这样的缓解思路有瓶颈,没有大好之扩展性,下面我打没有本钱、高性能及大扩张性的角度来说说自己的有些更。

    HTML静态化

   
其实大家还懂得,效率最高、消耗最小之就算是纯静态化的html页面,所以我们尽量要我们的网站及之页面使用静态页面来促成,这个极简便的计其实也是最好灵的措施。但是对于大气内容还要屡屡更新的网站,我们无能为力尽手动去挨家挨户实现,于是应运而生了咱们广阔的音信公布体系CMS,像咱常常访问的依次山头站点的新闻频道,甚至他们之别频道,都是由此信息公布体系来治本和实现之,信息披露网可以实现最简易的音信录入自动生成静态页面,还会享有频道管理、权限管理、自动抓取等功效,对于一个特大型网站来说,拥有相同模仿高效、可治本之CMS是必备的。

   
除了门和信披露项目的网站,对于交互性要求大高的社区项目网站来说,尽可能的静态化也是提高性能的必不可少手段,将社区外之帖子、文章进行实时的静态化,有创新的早晚重新另行静态化也是大方以的国策,像Mop的生杂烩就是下了这样的政策,网易社区等啊是这么。目前广大博客也还实现了静态化,我以的之Blog程序WordPress还从来不静态化,所以如果对高负荷访问,http://www.toplee.com/得非克承受

   
同时,html静态化也是一些缓存策略下的招,对于系被反复使用数据库查询而内容更新异常有点之使用,可以设想使用html静态化来兑现,比如论坛中论坛的公用设置信息,这些消息时的主流论坛都得以开展后台管理而存储再数据库被,这些信实际大量为前台程序调用,但是创新频率非常有些,可以设想用随即一部分情展开后台更新的下进行静态化,这样避免了大气之数据库访问请求。

   
在开展html静态化的时刻可以采取同一栽折中之法,就是前者采用动态实现,在定之策略下进展定时静态化和定时判断调用,这个会落实多见风使舵的操作,我付出之台球网站故人居(http://www.8zone.cn/)就是用了这般的法子,我经过设定有html静态化的时日距离来针对动态网站内容进行缓存,达到分担大部分之下压力到静态页面上,可以采取为中小型网站的架上。故人居网站的地点:http://www.8zone.cn/,顺便取一下,有好台球的恋人多支持自己是免费网站:)
情节导航】
第1页:HTML静态化
第2页:图片服务器分离
第3页:镜像
    图片服务器分离

   
大家掌握,对于Web服务器来说,不管是Apache、IIS还是别容器,图片是太消耗资源的,于是我们发必不可少将图纸及页面进行分离,这是大半大型网站都见面利用的政策,他们还起单独的图片服务器,甚至群玉图片服务器。这样的架可以下降提供页面访问请求的服务器系统压力,并且可以保证系统不见面为图片问题设倒。

   
在应用服务器和图服务器上,可以进行不同之布置优化,比如Apache在布置ContentType的时刻可以尽可能少支持,尽可能少的LoadModule,保证再也胜似之系统消耗与履效率。

   
我之弹子网站故人居8zone.cn也动了图片服务器架设上之分开,目前凡单纯是架设上分别,物理及没有分开,由于无钱买又多的服务器:),大家好观看故人居上的图纸连接都是相近img.9tmd.com或者img1.9tmd.com的URL。

   
另外,在处理静态页面或者图片、js等做客方面,可以设想下lighttpd代替Apache,它提供了更轻量级和再次敏捷的拍卖能力

    数据库集群和库表散列

   
大型网站还发生复杂的运用,这些应用得以数据库,那么以当大气造访的时,数据库的瓶颈很快即可知显现出来,这时一华数据库将飞无法满足使用,于是我们要用数据库集群或者库表散列。

   
在数据库集群方面,很多数据库都发生友好之化解方案,Oracle、Sybase等还产生老好之方案,常用之MySQL提供的Master/Slave也是近乎的方案,您运了安的DB,就参照相应的缓解方案来实施即可。

   
上面提到的数据库集群由于当架设、成本、扩张性方面还见面受到所祭DB类型的限量,于是我们用打应用程序的角度来考虑改善系统架构,库表散列是常用并且极有效的化解方案。我们于应用程序中装置工作与使用或功能模块将数据库进行分离,不同之模块对诺不同之数据库或者表,再依一定的政策对某个页面或者功能拓展重复粗的数据库散列,比如用户表,按照用户ID进行表散列,这样就是可知低本钱的升官系统的性质并且产生异常好之扩展性。sohu的论坛就是以了如此的架构,将论坛的用户、设置、帖子等消息进行数据库分离,然后对帖子、用户按板块与ID进行散列数据库暨发明,最终可以当布局文件中开展简要的布便能够给系统随时增加一雅小本钱的数据库进来补充系统特性。

    缓存

   
缓存一乐章为技术之且碰过,很多地方因此到缓存。网站架构和网站开被的缓存也是蛮主要。这里先讲述最基本的星星点点种植缓存。高级和分布式的复苏存在后面讲述。

   
架构方面的缓存,对Apache比较熟悉的人口犹能够领悟Apache提供了好之mod_proxy缓存模块,也得以应用外加的Squid进行缓存,这片栽艺术都可以中之增进Apache的顾响应能力。

   
网站先后开发方的缓存,Linux上提供的Memcached是常用之缓存方案,不少web编程语言都提供memcache访问接口,php、perl、c和java都发,可以以web开发中动用,可以实时或Cron的把多少、对象等情节开展缓存,策略非常灵活。一些重型社区下了这般的架构。

   
另外,在使web语言开发之早晚,各种语言基本还发协调的缓存模块和方法,PHP有Pear的Cache模块和eAccelerator加速和Cache模块,还要知名的Apc、XCache(国人开发之,支持!)php缓存模块,Java就更多矣,.net不是格外熟稔,相信啊肯定起。
【内容导航】
第1页:HTML静态化
第2页:图片服务器分离
第3页:镜像
    镜像

   
镜像是大型网站时使的增强性能与多少安全性的方式,镜像的艺可缓解不同网络接入商和地区带来的用户访问速度差异,比如ChinaNet和EduNet之间的区别就促使了很多网站于教育网内搭建筑镜像站点,数据进行定时更新或者实时更新。在镜像的底细技术方面,这里不阐述太怪,有诸多正经的备的缓解架构和产品可选。也有减价的通过软件实现之思绪,比如Linux上的rsync等工具。

    负载均衡

   
负载均衡将是大型网站解决高负荷访问同大量冒出请求采用的极解决办法。负载均衡技术进步了多年,有成千上万正规的服务提供商和产品可以挑选,我个人接触了有解决办法,其中起一定量独架构可以为大家做参考。另外有关初级的负荷均衡DNS轮循和比规范的CDN架构就非多说了。

    硬件四层交换

   
第四叠交换使用第三层和季重合信息管之报头信息,根据使用区间识别工作流,将全区间段的业务流分配到相当的应用服务器进行拍卖。 第四层交换功能就象是虚IP,指向物理服务器。它传输的事体从的商事多种多样,有HTTP、FTP、NFS、Telnet或其他协商。这些事情于大体服务器基础及,需要复杂的载量平衡算法。在IP世界,业务项目由终端TCP或UDP端口地址来控制,在第四交汇交换着之运用区间则由于源端和极IP地址、TCP和UDP端口共同决定。

   
在硬件四层交换产品领域,有一部分尽人皆知的出品方可选择,比如Alteon、F5等,这些制品非常高昂,但是物有所值,能够提供十分优异的性质和大灵敏的管理力量。Yahoo中国那儿接近2000光服务器使用了三四台Alteon就行定矣。

    软件四层交换

   
大家明白了硬件四层交换机的原理后,基于OSI模型来贯彻的软件四层交换也尽管应运而生,这样的化解方案实现的法则同,不过性能稍差。但是满足个别的下压力或游刃有余之,有人说软件实现方式实际上更灵敏,处理能力完全看您安排的熟稔能力。

    软件四层交换我们好应用Linux上常用的LVS来缓解,LVS就是Linux Virtual
Server,他供了根据心跳线heartbeat的实时灾难应针对化解方案,提高系统的鲁棒性,同时可供应了灵活的虚构VIP配置与治本功能,可以而且满足多种运用需求,这对分布式的系的话缺一不可。

   
一个名列前茅的施用负载均衡的国策就是是,在软件要硬件四层交换的底蕴及增加建筑squid集群,这种思路在博巨型网站包括搜索引擎上让使用,这样的架低本钱、高性能还有挺强的扩张性,随时向架构里面增减节点都非常容易。这样的架构我准备空了特别详细整理一下以及豪门探讨。

    总结

   
对于大型网站的话,前面提到的每个方法也许还见面吃以使及,Michael这里介绍得比浅,具体实现过程被许多细节尚亟需大家渐渐熟悉和体会,有时一个不胜粗之squid参数或者apache参数设置,对于网特性的熏陶就是会见老可怜,希望大家并谈谈,达到抛砖引玉之效。

网站地图xml地图