本课程的主题是“互联网大流量网站架构”,讲师Kent以本身曾经办理过的一个项目为例,讲解了在大型网站架构中所遇到的一些问题及解决方法。
Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的便利了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有了新的特点——高并发,高流量,数据量大,逻辑复杂等,对网站建设也提出了新的要求。
首先在整个网络的高度讨论了使用镜像网站,CDN内容分发网络等技术对负载均衡带来的便当及各自的优缺点比力。然后在局域网层次对第四层交换技术,包罗硬件解决方案F5和软件解决方案LVS,进行了简单的讨论。接下来在单办事器层次,本文着重讨论了单台办事器的Socket优化,硬盘级缓存技术,内存级缓存技术,CPU与IO平衡技术(即以运算为主的程序与以数据读写为主的程序搭配安排),读写分离技术等。在应用层,本文介绍了一些大型网站常用的技术,以及选择使用该技术的理由。最后,在架构的高度讨论了网站扩容,容错等问题。
本文以理论与实践相结合的形式,结合作者实际工作中得到的经验,具有较广泛的适用性。
1 引言
1.1 互联网的发展
比来十年间,互联网已经从一个单纯的用于科研的,用来传递静态文档的美国内部网络,发展成了一个应用于各行各业的,传送着海量多媒体及动态信息的全球网络。从规模上看,互联网在主机数、带宽、上网人数等方面几乎一直保持着指数增长的趋势,2006年7月,互联网上共有主机439,286,364 台,WWW 站点数量达到 96,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.1 镜像网站技术
镜像网站是指将一个完全相同的站点放到几个办事器上,别离有本身的URL,这些办事器上的网站互相称为镜像网站[13]。镜像网站和主站并没有太大不同,或者可以视为主站的拷贝。镜像网站的好处是:如果不能对主站作正常拜候(如办事器故障,网络故障或者网速太慢等),仍能通过镜像办事器获得办事。不便之处是:更新网站内容的时候,需要同时更新多个办事器;需要用户记忆超过一个网址,或需要用户选择拜候多个镜像网站中的一个,而用户选择的,不必然是最优的。在用户选择的过程中,缺乏必要的可控性。
The most popular courses