服务器 频道

服务器架站务实:维基百科服务器架构探秘

    【IT168 专稿】今天的主角,是一家全球性的大网站,维基百科www.wikimedia.org/。当前的Alexa排名第九。遗憾的是,维基服务器存放于国外,国内某些地域的IP因为某些原因暂时还访问不了,如果不巧你所在地区的IP访问不了,那么可以用代理服务器解决该问题。

    为什么要说维基百科呢?因为维基百科是非盈利机构,依靠他人捐赠生存,因此所有服务器配置的具体数据都随时对外公布。比较而言,谷歌这样的商业网站就从不对外公布自己的具体配置,毕竟对于商业网站而言,具体的服务器架构属于商业机密。也正是因为维基百科的彻底的透明化,给了我们一个了解世界优异网站架构的好机会。

    维基官方的一些公开数据:

    ● 8百万篇专业文章,涵盖了各种语言。
    ● 1.1亿次文章修改。
    ● 成立时间为2003年中旬,到目前的情况来看,流量增长的速度是每4~6个月翻一倍。
    ● 峰值时间有3万个HTTP请求。
    ● 3Gb/s的数据流量。
    ● 在美国、荷兰和韩国设有三个数据中心。
    ● 总计有350台服务器。服务器最低为P4,不过多数还是两颗四核至强构成的SMP,内存为512MB~16GB不等。

    维基百科采用传统的LAMP架构(Linux Apache Mysql 和PHP/Perl)。 

    如果具体一点说,Wiki的真实架构情况如下图所示。我们就来解析一下。



    GeoDNS:这个GeoDNS可能比较新奇,实际上原理很简单,GeoDNS是一个为BIND写的40行的小程序,可以让DNS解析的时候考虑地域因素——让用户能够访问离他地域最近的Web服务器。

    LVS:LVS 是一个开源的软件,可以实现 Linux平台下的简单负载均衡。主要由负载调度器、服务器池和共享存储构成。可喜的是,这是一款为数不多的中国人自己编写的开源软件(章文嵩发起);可惜的是,LVS目前仅支持Linux。

    Squid:Squid大家可能都比较熟悉,Squid是一种用来缓冲Internet数据的软件。尤其适合像维基这样的遍布全球,数据中心却很集中的站点使用。在维基中,Squid缓存分为两组,一组是文档内容(多为压缩的HTML页面),另一组为媒体内容,主要包括图片等大一点的静态文件。目前总计有55台Squid服务器在维基运行,维基正在准备添加另外的20台。根据维基披露的资料,其中每一台服务器每秒要处理1000~2500 个Http请求,每台服务器承受100Mb/s~250Mb/s的流量,每台服务器负责1.4~3.2万个连接,每台Squid服务器分配出40GB作为缓存空间。硬件方面,这些Squid服务器每台都有4块硬盘,8GB内存。

    维基媒体平台(上图的Media Wiki):维基所有的项目都运行在维基媒体平台上,这是一个遵守GPL的开源软件,以PHP写成。维基本身在使用,但很多别的机构也使用了该软件平台。在所有125台应用服务器上都安装了维基媒体平台,还有40台应用服务器马上就要上线,这些应用服务器都采用了两颗四核的CPU。这些媒体平台都由一个中心控制台控制,维基可以通过该平台部署某个应用到数百台机器上,非常方便。维基媒体平台非常注重缓存,多数缓存都放在Memcached中。

    CDN:维基在美国、荷兰和韩国分别设有群集,维基CDN会根据来访IP位置的不同选择指向最近的群集。
 
    数据存储:元数据,比如文章修改历史,文章的链接和用户资料等内容被存放于主数据库;正文存于外部存储;用户上传的图片等信息则单独存放于图片服务器。

    主数据库服务器一共有15台,配置为内存4GB~16GB,6块73~146GB的硬盘和双CPU。数据库中除了有一个主数据库,还有许多复制的从数据库,这些主从数据库并不是按照服务器个数来划分的,数据库都是跨服务器运行的。

    至于外部存储,维基将文章正文存到外部存储群集。维基目前采用了3个复制的MySQL群集来负责外部存储。这样可以节省主数据库的昂贵空间。为了节省费用,那些应用服务器的剩余空间也被用来存储。此外,图片服务器单独存放了1.3TB的图片和另外4百万个文件。
向维基学习:

    所有的维基百科工作人员只有6人,而整个维基基金系统一共才有9人。这创造了一个人员最少,流量最大的奇迹。但也正是因为人少,网站部署自动化就非常重要。这可不像谷歌有数千人力可以管理45万台廉价的IDE硬盘服务器。在维基,服务器都是采用标准的1.5万转的SCSI硬盘,而且很多服务器中有多达6块硬盘,内存多数都是16GB。毕竟,如果员工人数稀少,服务器就必须强大,而且数量控制得越少越好。维基的存储策略也是为维基的独特背景量身打造,并且采用了高端磁盘阵列来存储数据,缓解主数据库压力。另外,维基的缓存策略非常到位,Squid在维基的架构里扮演了重要的角色。

    维基偏爱开源软件,包括维基媒体平台、LVS等等。其实开源的好处非常明显。维基能够以如此少的人数,管理如此大的架构,得益于众人相助。其实,维基就是一个大的开源平台,每个人都是主角,可以去贡献自己的才智。

    实际上,整个维基体系很庞大,除了维基百科,还有Wiktionary、Wikinews、Wikibooks、Wikiquote、Wikisource、Wikiversity、Wikispecies、Wikimedia。但是维基的模式很特殊,不像别的网站都是工作人员管理,在维基每个读者都可以去自己添加图片、修改内容。这也就减轻了许多负担。

    这篇维基架构浅析到这里已经结束了,不过关于维基的英文相关资料特别丰富,你可以轻松的找到维基某个服务器配置的细节、甚至某个时间段的具体流量。如果你感兴趣,可以很容易的进一步了解维基,也许这就是开放带来的好处吧。

0
相关文章