高并发高流量网站架构ArchitectureofWebsitewithHighPageviewandHighconcurrency院系:信息科学学院专业:计算机科学与技术学号:03281077姓名:唐福林指导教师:朱小明北京师范大学2007年3月北京师范大学士学位论文(设计)原创性声明本人郑重声明:所呈交的学士学位论文(设计),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。本人签名:年月日北京师范大学学士学位论文(设计)使用授权的说明本人完全了解北京师范大学有关收集、保留和使用学士学位论文(设计)的规定,即:本科生在校攻读学位期间论文(设计)工作的知识产权单位属北京师范大学。学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许学位论文(设计)被查阅和借阅;学校可以公布学位论文的全部或部分内容,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。保密的学位论文在解密后遵守此规定。本论文(是、否)保密论文。保密论文在年解密后适用本授权书。本人签名:年月日导师签名:年月日摘要Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有了新的特点——高并发,高流量,数据量大,逻辑复杂等,对网站建设也提出了新的要求。本文围绕高并发高流量的网站架构设计问题,主要研究讨论了以下内容:首先在整个网络的高度讨论了使用镜像网站,CDN内容分发网络等技术对负载均衡带来的便利及各自的优缺点比较。然后在局域网层次对第四层交换技术,包括硬件解决方案F5和软件解决方案LVS,进行了简单的讨论。接下来在单服务器层次,本文着重讨论了单台服务器的Socket优化,硬盘级缓存技术,内存级缓存技术,CPU与IO平衡技术(即以运算为主的程序与以数据读写为主的程序搭配部署),读写分离技术等。在应用层,本文介绍了一些大型网站常用的技术,以及选择使用该技术的理由。最后,在架构的高度讨论了网站扩容,容错等问题。本文以理论与实践相结合的形式,结合作者实际工作中得到的经验,具有较广泛的适用性。关键词:高并发高流量网站架构网站扩容容错AbstractWithweb2.0starting,raisedtheInternetnewturnofnetworktostartundertakingthefloodtide.Tobeuser-orientedconceptofthenewwebsites,notonlysuccessfullycreatedalargenumberofnewsites,butalsogreatlyfacilitatethedevelopmentoftheInternetpeople.TheWeb2.0atthesametimetaketheuserastheguidanceidea,enabledthenewbornwebsitetohavethenewcharacteristic-highconcurrency,highpageviews,bigdataquantity,andcomplexlogic,etc.,alsosetthenewrequesttothewebsiteconstruction.Thisarticlerevolvesthehighconcurrenthighcurrentcapacitythewebsiteoverheadconstructiondesignquestion,themainresearchdiscussedthesecontent:Firstdiscussedtheuseageofmirrorsitesintheentirenetwork,CDNcontentdistributionnetwork,theconvenienceandrespectivegoodandbadpointscomparisonwhichbringstotheloadbalancing.Theninthelocalareanetwork,thefourthlevelexchangetechnology,includinghardwaresolutionF5andsoftwaresolutionLVS,hasbeencarriedonwithasimplediscussion.Receivedinthesingleserverlevel,thisarticleemphaticallydiscussedthesingleserversocketoptimization,theharddiskcachetechnology,thememorylevelbuffertechnology,CPUandtheIObalancetechnology,theread-writeseparationtechnologyandsoon.Intheapplicationlevel,thisarticleintroducedsomelarge-scalewebsitecommonlyusedtechnologies,aswellasthereasonofchoiceofthesetechnicals.Finally,highlydiscussedthewebsiteintheoverheadconstructiontoexpandaccommodates,fault-tolerant.Thisarticleformwhichunifiesbythetheoryandthepractice,experiencewhichintheauthorpracticalworkobtains,hasamorewidespreadserviceability.KEYWORDS:highpageview,highconcurrency,architectureofwebsitesite,expansion目录1引言91.1互联网的发展91.2互联网网站建设的新趋势91.3新浪播客的简介112网络层架构122.1镜像网站技术122.2CDN内容分发网络132.3应用层分布式设计162.4网络层架构小结173交换层架构173.1第四层交换简介173.2硬件实现183.3软件实现184服务器优化194.1服务器整体性能考虑194.2Socket优化194.3硬盘级缓存224.4内存级缓存244.5CPU与IO均衡264.6读写分离265应用程序层优化285.1网站服务器程序的选择285.2数据库选择295.3服务器端脚本解析器的选择305.4可配置性325.5封装和中间层思想336扩容、容错处理336.1扩容336.2容错347总结及展望357.1总结357.2展望36高并发高流量网站架构1引言1.1互联网的发展最近十年间,互联网已经从一个单纯的用于科研的,用来传递静态文档的美国内部网络,发展成了一个应用于各行各业的,传送着海量多媒体及动态信息的全球网络。从规模上看,互联网在主机数、带宽、上网人数等方面几乎一直保持着指数增长的趋势,2006年7月,互联网上共有主机439,286,364台,,854,877个[1]。全球上网人口在2004年达到7亿2900万[2],中国的上网人数在2006年12月达到了约1亿3700万[3]。另一方面,互联网所传递的内容也发生了巨大的变化,早期互联网以静态、文本的公共信息为主要内容,而目前的互联网则传递着大量的动态、多媒体及人性化的信息,人们不仅可以通过互联网阅读到动态生成的信息,而且可以通过它使用电子商务、即时通信、网上游戏等交互性很强的服务。因此,可以说互联网已经不再仅仅是一个信息共享网络,而已经成为了一个无所不在的交互式服务的平台。1.2互联网网站建设的新趋势互联网不断扩大的规模,日益增长的用户群,以及web2.0[4]的兴起,对互联网网站建设提出了新的要求:高性能和高可扩展性。2000年5月,访问量排名世界第一(统计数据来源[5])的Yahoo[6]声称其日页浏览数达到6亿2500万,即每秒约30,000次HTTP请求(按每个页面浏览平均产生4次请求计算)。这样大规模的访问量对服务的性能提出了非常高的要求。更为重要的是,互联网受众的广泛性,使得成功的互联网服务的访问量增长潜力和速度非常大,因此服务系统必须具有非常好的可扩展性,以应付将来可能的服务增长。支持高度并发的访问。高度并发的访问对服务的存储与并发能力提出了很高的要求,当前主流的超标量和超流水线处理器能处理的并发请求数是有限的,因为随着并发数的上升,进程调度的开销会很快上升。互联网广域网的本质决定了其访问的延迟时间较长,因此一个请求完成时间也较长,按从请求产生到页面下载完成3秒计算,Yahoo在2000年5月时平均有90,000个并发请求。而且对于较复杂的服务,服务器往往要维护用户会话的信息,例如一个互联网网站如果每天有100万次用户会话,每次20分钟的话,那平均同时就会有约14000个并发会话。高可用性。互联网服务的全球性决定了其每天24小时都会有用户访问,因此任何服务的停止都会对用户造成影响。而对于电子商务等应用,暂时的服务中止则意味着客户的永久失去及大量的经济损失,例如ebay.com[7]1999年6月的一次22小时的网站不可访问,对此网站的380万用户的忠诚度造成巨大影响,使得Ebay公司不得不支付了近500万美元用于补偿客户的损失,而该公司的市值同期下降了40亿美元[8]。因此,关键互联网应用的可用性要求非常高。1.3新浪播客的简介以YouTube[9]为代表的微视频分享网站近来方兴未艾,仅2006年一年,国内就出现近百家仿YouTube的微视频分享网站[10],试图复制YouTube的成功模式。此类网站可以说是Web2.0概念下的代表网站,具有Web2.0网站所有典型特征:高并发,高流量,数据量大,逻辑复杂,用户分散等等。新浪[11]作为国内最大的门户网站,在2005年成功运作新浪博客的基础上,于2006年底推出了新浪播客服务。新浪播客作为国内门户网站中第一个微视频分享服务的网站,依靠新浪网站及新浪博客的巨大人气资源,在推出后不到半年的时间内,取得了巨大的成功:同类网站中上传视频数量第一、流量增长最快、用户数最多[12],所有这些成绩的取得的背后,是巨大的硬件投入,良好的架构支撑和灵活的应用层软件设计。本文是作者在新浪爱问搜索部门实习及参与新浪播客开发的经验和教训的回顾,是作者对一般高并发高流量网站架构的总结和抽象。2网络层架构2.1镜像网站技术镜像网站是指将一个完全相同的站点放到几个服务器上,分别有自己的URL,这些服务器上的网站互相称为镜像网站[13]。镜像网站和主站并没有太大差别,或者可以视为主站的拷贝。镜像网站的好处是:如果不能对主站作正常访问(如服务器故障,网络故障或者网速太慢等),仍能通过镜像服务器获得服务。不便之处是:更新网站内容的时候,需要同时更新多个服务器;需要用户记忆超过一个网址,或需要用户选择访问多个镜像网站中的一个,而用户选择的,不一定是最优的。在用户选择的过程中,缺乏必要的可控性。在互联网发展的初期,互联网上的网站内容很少,而且大都是静态内容,更新频率底。但因为服务器运算能力低,带宽小,网速慢,热门网站的访问压力还是很大。镜像网站技术在这种情况下作为一种有效解决方案,被广泛采用。随着互联网的发展,越来越多的网站使用服务器端脚本动态生成内容,同步更新越来越困难,对可控性要求越来越高,镜像技术因为不能满足这类网站的需要,渐渐的淡出了人们的视线。但有一些大型的软件下载站,因为符合镜像网站的条件——下载的内容是静态的,更新频率较低,对带宽,速度要求又比较高,如国