维基百科(Wikipedia)网站架构设计分析

发布于: 2020 年 07 月 01 日



Date: 2020/6/30 V1.0      

Author:Jessie

 

网站背景:

维基百科是全球第6大网站。全球三个数据中心、十几个人维护。本文通过对Wikipedia网站架构的设计中用到的技术方案和手段的描述,从而分析大型互联网站应用系统的设计和解决的问题。

 

网站架构:



先介绍各个技术部分:

  • LVS:基于 Linux 的开源负载均衡服务器。

  • DNS:Domain Name Service 域名解析。GeoDNS:基于开源域名服务器软件 BIND(Berkeley Internet Name Domain)的增强版本。用于就近机房(数据中心),返回数据中心的LVS负载均衡服务器的地址。

  • Squid :反向代理缓存服务器。

  • Apache(PHP开发):应用服务器集群。

  •  Lighttpd:开源的应用服务器,用做图片服务器。

  • Memcached:无中心高性能的开源分布式缓存系统。

  • MySQL:开源的关系数据库管理系统。

  • Lucene:由 Apache 出品,Java 开发的开源全文搜索引擎。

 

维基百科网站优化:

1.   应用服务和数据服务分离

应用服务处理大量的业务逻辑;数据库服务器需要快速的磁盘检索和数据缓存,需要更快的硬盘和更大的内存。

应用和数据分离后,不同的服务器承担不同的服务角色,提高网站的并发处理能力和改善数据的存储空间。

维基的网站中:

  • MySQL数据库服务(橙色)和应用服务(紫色)分离。

 

2.   使用缓存改善网站的性能

将大部分业务访问集中在一小部分的数据上,通过将这部分数据缓存在内存中,将数据存放在距离计算最近的位置加快处理速度,减少数据库的访问压力。

维基的网站中:

  • 分布式对象缓存:Memcached(紫色部分):无中心高性能的开源分布式缓存系统,稳定、可靠、历久弥新,是网站分布式缓存服务必备的。 过期失效。缓存不更新,直接删除。删除后,下次访问没有则重新构建数据后加载入缓存。

 

3.   应用服务器集群、负载均衡调度服务器

改善网站的并发处理能力,实现系统的可伸缩性。通过负载均衡调度服务器,将用户浏览器的请求分发到应用服务器任一台服务器上。通过集群负荷分担,避免造成应用服务器的压力。

维基的网站中:

  • LVS: 负载均衡服务器

 

4.   分布式静态资源

将网站的静态资源,如:JS、CSS,Logo图片等资源独立分布部署,采用独立的域名,(动静分离)。可以减轻应用服务器的负载压力,加快浏览器并发加载的速度。

维基的网站中:

  • Lighttpd:用于静态图片的服务器。



5.   使用反向代理加速网站响应

反向代理的基本原理是缓存。都是加快用户访问速度,减轻后端服务器的负载压力。

反向代理,属于网站前端架构的一部分。部署在网站的中心机房,当用户请求到达中心机房后,首先访问反向代理服务器,如果反向代理服务器中缓存用户的请求资源,则将其直接返回用户。

维基的网站中:

  • 如图中:Squid :反向代理缓存服务器。大约部署有数十台服务器,请求通过 LVS 负载均衡地分发到每台 Squid 服务器,热点词条缓存在这里,大量请求可直接返回响应,请求无需发送到 Apache 服务器,减轻应用负载压力。Squid 缓存不能命中的请求再通过 LVS 发送到 Apache 应用服务器集群,如果有词条信息更新,应用服务器使用 Invalidation Notification 服务通知 Squid 缓存失效,重新访问应用服务器更新词条。



发布于: 2020 年 07 月 01 日 阅读数: 109
用户头像

还未添加个人签名 2018.08.21 加入

码过代码、做过产品;擅长码字、演讲、认真做事之人。

评论

发布
暂无评论
维基百科(Wikipedia)网站架构设计分析