您的位置:首页 > 运维架构 > 网站架构

WikiPedia技术架构学习笔记

2013-05-28 11:05 393 查看
维基百科(Wikipedia)是一个基于Wiki技术的全球性多语言百科全书协作计划,同时也是一部在网际网路上呈现的网路百科全书,其目标及宗旨是为全人类提供自由的百科全书──用他们所选择的语言来书写而成的,是一个动态的、可自由和的全球知识体。

wikipedia在IT架构方面的经验,对于我们构建网站极有参考价值,因为wikipedia提供的这些信息非常详细和确凿。下面是我学习Wikipedia架构后的一些总结。

1、Wikipedia的相关数据

峰值每秒钟3万个HTTP 请求

每秒钟 3Gbit流量, 近乎375MB

350 台 PC 服务器

Wikipedia的数据来源来自Wikimedia architecture.pdf

2、系统架构图


3、GeoDNS

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

4、用LVS实现负载均衡

WikiPedia 用
LVS 做负载均衡, 是章文嵩博士发起的项目,也算中国人为数不多的在开源领域的骄傲啦。LVS 维护的一个老问题就是监控了,维基百科的技术人员用的是
pybal.

5、用Lighttpd做图片服务器

Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好,并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web
server中较为优秀的一个。支持FastCGI,
CGI, Auth, 输出压缩(output compress), URL重写,
Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题。

6、使用MediaWiki软件

对 MediaWiki 的应用层优化细化得快到极致了。用开销相对比较小的方法定位代码热点,参见实时性能报告,瓶颈在哪里,看这样的图树展示一目了然。另外一个十分值得重视的经验是,尽可能抛弃复杂的算法、代价昂贵的查询,以及可能带来过度开销的 MediaWiki 特性。

7、大量缓存(Cache)

维基百科网站成功的第一关键要素就是 Cache 了。CDN(其实也算是 Cache) 做内容分发到不同的大洲、Squid 作为反向代理. 数据库 Cache 用 Memcached,30 台,每台 2G 。对所有可能的数据尽可能的Cache,但他们也提醒了 Cache 的开销并非永远都是最小的,尽可能使用,但不能过度使用。

squid,~17台,P4,3~4GB内存,1U机架服务器,FedoraCore3;Squid 大部份应付未登入使用者的需求,快取命中率达75%,有效的减轻Apache的负载。负载平衡是以Round-Robin DNS法來达成。

8、用Mysql数据库集群

MediaWiki 用的DB 是 MySQL. MySQL 在 Web 2.0 技术上的常见的一些扩展方案他们也在使用。 复制、读写分离......应用在DB 上的负载均衡通过

LoadBalancer.php 来做到的,可以给我们一个很好的参考。

9、Web服务器

Apache,49台,P4,1~4GB内存,1U机架服务器,FedoraCore2;运行PHP,且搭配Turck的PHP快取系統以增进效能。这些服务器以NFS共享工作目录,以实现同步运作。

参考资料

Wikipedia meta

wikipedia server原始资料中文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: