服务器 频道

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

    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百万个文件。
0
相关文章