大数据量、高并发量网站解决方案

随着中国大型IT企业信息化速度的加快,大部分应用的数据量和访问量都急剧增长html

,大型企业网站正面临性能和高数据访问量的压力,并且对存储、安全以及信息检索等web

等方面都提出了更高的要求……算法

本文中,我想经过几个国外大型IT企业及网站的成功案例,从Web技术人员角度探讨数据库

如何积极地应对国内大型网站即将面临的扩展(主要是技术方面,而较少涉及管理及营编程

销等方面)矛盾。缓存

1、 国外大型IT网站的成功之道安全

(一) MySpace服务器

今天,MySpace已经成为全球众口皆碑的社区网站之王。尽管一流和营销和管理经验网络

天然是每一个IT企业取得成功的首要因素,可是本节中咱们却抛弃这一点,而主要着眼于架构

探讨在数次面临系统扩张的紧急关头MySpace是如何从技术方面采起应对策略的。

第一代架构—添置更多的Web服务器

MySpace最初的系统很小,只有两台Web服务器(分担处理用户请求的工做量)和一

个数据库服务器(全部数据都存储在这一个地方)。那时使用的是Dell双CPU、4G内存的

系统。在早期阶段,MySpace基本是经过添置更多Web服务器来对付用户暴增问题的。但

到在2004年早期,在MySpace用户数增加到五十万后,其数据库服务器已经开始疲于奔命

了。

第二代架构—增长数据库服务器

与增长Web服务器不一样,增长数据库并没那么简单。若是一个站点由多个数据库支持

,设计者必须考虑的是,如何在保证数据一致性的前提下让多个数据库分担压力。

MySpace运行在三个SQL Server数据库服务器上—一个为主,全部的新数据都向它提

交,而后由它复制到其它两个;另两个数据库服务器全力向用户供给数据,用以在博客

和我的资料栏显示。这种方式在一段时间内效果很好——只要增长数据库服务器,加大

硬盘,就能够应对用户数和访问量的增长。

这一次的数据库架构按照垂直分割模式设计,不一样的数据库服务于站点的不一样功能

,如登陆、用户资料和博客。垂直分割策略利于多个数据库分担访问压力,当用户要求

增长新功能时,MySpace只须要投入新的数据库加以支持。在帐户到达二百万后,MySpa

ce还从存储设备与数据库服务器直接交互的方式切换到SAN(存储区域网络)—用高带宽

、专门设计的网络将大量磁盘存储设备链接在一块儿,而数据库链接到SAN。这项措施极大

提高了系统性能、正常运行时间和可靠性。然而,当用户继续增长到三百万后,垂直分

割策略也变得难以维持下去。

第三代架构—转到分布式计算架构

几经折腾,最终,MySpace将目光移到分布式计算架构——它在物理上分布的众多服

务器,总体必须逻辑上等同于单台机器。拿数据库来讲,就不能再像过去那样将应用拆

分,再以不一样数据库分别支持,而必须将整个站点看做一个应用。如今,数据库模型里

只有一个用户表,支持博客、我的资料和其余核心功能的数据都存储在相同数据库。

既然全部的核心数据逻辑上都组织到一个数据库,那么MySpace必须找到新的办法以

分担负荷——显然,运行在普通硬件上的单个数据库服务器是无能为力的。此次,再也不

按站点功能和应用分割数据库,MySpace开始将它的用户按每百万一组分割,而后将各组

的所有数据分别存入独立的SQL Server实例。目前,MySpace的每台数据库服务器实际运

行两个SQL Server实例,也就是说每台服务器服务大约二百万用户。据MySpace的技术人

员说,之后还能够按照这种模式以更小粒度划分架构,从而优化负荷分担。

第四代架构—求助于微软方案

2005年早期,帐户达到九百万,MySpace开始用微软的C#编写ASP.NET程序。在收到

必定成效后,MySpace开始大规模迁移到ASP.NET。

帐户达到一千万时,MySpace再次遭遇存储瓶颈问题。SAN的引入解决了早期一些性

能问题,但站点目前的要求已经开始周期性超越SAN的I/O容量——即它从磁盘存储系统

读写数据的极限速度。

第五代架构—增长数据缓存层并转到支持64位处理器的SQL Server 2005

2005年春天,MySpace帐户达到一千七百万,MySpace又启用了新的策略以减轻存储

系统压力,即增长数据缓存层——位于Web服务器和数据库服务器之间,其惟一职能是在

内存中创建被频繁请求数据对象的副本,如此一来,不访问数据库也能够向Web应用供给

数据。

2005年中期,服务帐户数达到两千六百万时,MySpace由于咱们对内存的渴求而切换

到了还处于beta测试的支持64位处理器的SQL Server 2005。升级到SQL Server 2005和

64位Windows Server 2003后,MySpace每台服务器配备了32G内存,后于2006年再次将配

置标准提高到64G。

事实上,MySpace的Web服务器和数据库仍然常常发生超负荷,其用户频繁遭遇“意

外错误”和“站点离线维护”等告示,他们不得不在论坛抱怨不停……

MySpace正是在这样不断重构站点软件、数据库和存储系统中,才一步步走到今天。

事实上,MySpace已经成功解决了不少系统扩展性问题,其中存在至关的经验值得咱们借

鉴。MySpace系统架构到目前为止保持了相对稳定,但其技术人员仍然在为SQL Server支

持的同时链接数等方面继续攻坚,尽量把事情作到最好。

(二) Amazon

亚马逊书店无疑是电子商务发展的里程碑。2000年到如今,世界网络业腥风血雨。

Amazon曾经成为网络泡沫的头号表明。现在,当这个“最大的泡沫”用几经易改的数字

把本身变成了坚实的IT巨人。

历览Amazon发展过程,其成功经验在于,它创造性地进行了电子商务中每一环节的探索

,包括系统平台的建设,程序编写、网站设立、配送系统等等方面。用Amazon当家人贝

索斯的话说就是,“在现实世界的商店最有力的武器就是地段,地段,地段,而对于我

们来讲最重要的三件事就是技术,技术,技术。”

(三) eBay

eBay是世界闻名的拍卖网站,eBay公司通讯部主管凯文?帕斯格拉夫认为,“eBay成

功的最重要缘由在于公司管理和服务。”

其成功的奥秘能够列举为如下几点:

①敢为天下先—在网络尚不普及的时代,eBay率先进入网络拍卖领域;

②依托虚拟商场所产生的特有的“零库存”是eBay公司取得成功的另外一个重要缘由。该

公司的核心业务没有任何库存风险,全部的商品都是由客户提供,它只须要负责提供虚

拟的拍卖平台—网络和软件。因此,eBay公司的财务报表上不会出现“库存费用”和“

保管费用”等。

③自eBay公司成立开始,它就一直遵循两条“黄金原则”:建设虚拟社区,给网民以家

的感受;保证网站稳定安全地运行。

2、 国内大型网站开发时的几点建议

从本节开始,咱们将结合国内外大型IT网站在技术扩展方面的沉痛教训和成功经验

,探讨在现在刚刚开始的Web 2.0时代如何应对国内网站即将面临的数据访问量增长(甚

至是急剧膨胀)的问题,并提出一些供参考的策略和建议。

(四) 搭建科学的系统架构

构建大型的商业网站绝对不可能像构建普通的小型网站同样一蹴而就,须要从严格

的软件工程管理的角度进行认真规划,有步骤有逻辑地进行开发。对于大型网站来讲,

所采用的技术涉及面极其普遍,从硬件到软件、编程语言、数据库、Web服务器、防火墙

等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。以著名

的Yahoo!为例,他们的每个大型网站工程都须要大量相应专业人员的参与。

(五) 页面静态化

可不要小看纯静态化的HTML页面!其实在不少状况下,HTML每每意味着“效率最高

、消耗最小”,因此咱们尽量使咱们的网站上的页面采用静态页面来实现。可是,对

于大量内容而且频繁更新的网站,咱们没法所有手动实现,所以能够开发相应的自动化

更新工具,例如咱们常见的信息发布系统CMS。像咱们常常访问的各个门户站点的新闻频

道,甚至他们的其余频道,都是经过信息发布系统来管理和实现的。信息发布系统能够

实现最简单的信息录入自动生成静态页面,还能具有频道管理、权限管理、自动抓取等

功能,对于一个大型网站来讲,拥有一套高效、可管理的CMS是必不可少的。

(六) 存储问题

存储也是一个大问题,一种是小文件的存储,好比图片这类;另外一种是大文件的存

储,好比搜索引擎的索引。

你们知道,对于Web服务器来讲,无论是Apache、IIS仍是其余容器,图片是最消耗资源

的,因而咱们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他

们都有独立的图片服务器,甚至不少台图片服务器。这样的架构能够下降提供页面访问

请求的服务器系统压力,而且能够保证系统不会由于图片问题而崩溃,在应用服务器和

图片服务器上,能够进行不一样的配置优化以保证更高的系统消耗和执行效率。

(七) 数据库技术—集群和库表散列

对于大型网站而言,使用大型的数据库服务器是必须的事情。可是,在面对大量访

问的时候,数据库的瓶颈仍然会显现出来,这时一台数据库将很快没法知足应用,因而

咱们须要借助于数据库集群或者库表散列技术。

在数据库集群方面,不少数据库厂商都有本身的解决方案,Oracle、Sybase、SQL

Server等都有很好的方案,经常使用的MySQL提供的Master/Slave也是相似的方案。所以,你

使用了什么样的数据库,就参考相应的解决方案来实施便可。

上面提到的数据库集群因为在架构、成本、扩张性方面都会受到所采用数据库类型

的限制,因而咱们须要从应用程序的角度来考虑改善系统架构,其中,库表散列是经常使用

而且最有效的解决方案。咱们在应用程序中安装业务和应用或者功能模块将数据库进行

分离,不一样的模块对应不一样的数据库或者表,再按照必定的策略对某个页面或者功能进

行更小的数据库散列,好比用户表,按照用户ID进行表散列,这样就可以低成本的提高

系统的性能而且有很好的扩展性。在这一方面一个现成的例子就是搜狐。它的论坛就是

采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,而后对帖子、

用户按照板块和ID进行散列数据库和表,最终能够在配置文件中进行简单的配置便能让

系统随时增长一台低成本的数据库进来补充系统性能。

(八) 缓存策略

这绝对不单指低级的缓存技术相关的编程,应从整个架构角度着眼,深刻研究Web服

务器、数据库服务器的各层级的缓冲策略,最后才是低级的缓冲技术的编程。不一样的We

b服务器、数据库服务器及Web编程语言都有本身不一样的缓冲策略。例如数据库存储方面

,SQL Serve 2005中的主动式缓存机制,Oracle数据的cache group技术,Hibernate的

缓存包括Session的缓存和SessionFactory的缓存;Web服务器方面,Apache提供了本身

的缓存模块,也可使用外加的Squid模块进行缓存,这两种方式都可以有效的提升Apa

che的访问响应能力,IIS缓冲器技术;至于web开发语言,所用缓存技术更存在很大不一样

,例如ASP.NET 2.0中提出了两种缓存应用程序数据和缓存服务页输出的策略,这两种缓

存技术相互独立但不相互排斥,PHP有Pear的Cache模块,等等。

(九) 镜像

镜像是大型网站常采用的提升性能和数据安全性的方式,镜像的技术能够解决不一样

网络接入商和地域带来的用户访问速度差别。在镜像的细节技术方面,这里不阐述太深

,有不少专业的现成的解决架构和产品可选。也有廉价的经过软件实现的思路,好比Li

nux上的rsync等工具。

(十) 负载均衡

负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。

负载均衡技术发展了多年,有不少专业的服务提供商和产品能够选择,基于LAMP解决方

案的Lighttped+Squid是至关不错的解决负载均衡和加速系统的有效方式。

(十一) 硬件四层交换

第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将

整个区间段的业务流分配到合适的应用服务器进行处理。第四层交换功能就象是虚IP,

指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其

他协议。这些业务在物理服务器基础上,须要复杂的载量平衡算法。在IP世界,业务类

型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址

、TCP和UDP端口共同决定。

在硬件四层交换产品领域,有一些知名的产品能够选择,好比Alteon、F5等,这些

产品很昂贵,可是物有所值,可以提供很是优秀的性能和很灵活的管理能力。Yahoo中国

当初接近2000台服务器使用了三四台Alteon就搞定了。

(十二) 软件四层交换

你们知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运

而生,这样的解决方案实现的原理一致,不过性能稍差。可是知足必定量的压力仍是游

刃有余的。

一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群

,这种思路在不少大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很

强的扩张性,随时往架构里面增减节点都很是容易。

(十三) 软件投资问题

据报导,目前国内除了一些上市企业和特别大知名大公司之外,不多有企业在成本

中考虑正版软件的购置费用。这种思惟极有可能给中国互联网带来噩梦。若是一些公司

真正面临软件资金方面的困难,彻底能够考虑使用开源世界的LAMP解决方案(Linux+A

pache+MySQL+Perl、PHP或者Python Web编程语言);不然,随着我国加入WTO范围的

不断扩大,盗版打击必然愈来愈严。所以,“苟且偷生”必将自作自受。

另外,随着网络带宽日渐提高,WEB 2.0技术必将影响到网络世界的几乎每个角落

。所以,如何积聚技术人员进行技术攻关并进一步增强安全防范也成为一个日益严峻的

问题,宜尽早归入到公司的议事日程。 

4、 总结

中国电子商务真正理性发展的一个标志,是大量的传统企业实实在在地开始用互联

网来处理商务、作生意,而如今这样的浪潮已经开始。北京发行集团,联合SINA、6688

.com等单位共同推出的网上虚拟书店—新新书店就是这样的一个标志。

随着网络带宽日渐提高,随着网络理念和WEB 2.0技术的断深刻人心,各类B2B、B2C、C

2C等电子商务模式极可能以立体交叉方式整合到各类大型商务网站中来。所以,做为公

司的技术人员,做为临危救驾的“白衣骑士”,如何应对海量存储、海量访问问题,海

量信息检索的问题,日益严峻的安全问题,等等,已经刻不容缓。

相关文章
相关标签/搜索