[文摘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参数设置,对于网特性的熏陶就是会见好充分,希望大家一齐座谈,达到抛砖引玉之效。

相关文章