写点什么

大型互联网应用系统都采用了哪些技术和手段,解决了什么问题?

用户头像
hellohuan
关注
发布于: 2020 年 07 月 01 日
大型互联网应用系统都采用了哪些技术和手段,解决了什么问题?

本文以维基百科作为案例进行分析

Wikipedia 网站整体架构





  1. GeoDNS:基于开源域名服务器软件 BIND(Berkeley Internet Name Domain)的增强版本,可将域名解析到离用户最近的服务器。

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

  3. Squid:基于 Linux 的开源反向代理服务器。

  4. Lighttpd:开源的应用服务器,较主流的 Apache 服务器更轻量、更快速。实践中,有许多网站使用 Lighttpd 作为图片服务器。

  5. 无中心高性能的开源分布式缓存系统,稳定、可靠、历久弥新,是网站分布式缓存服务必备的。

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

Wikipedia 前端性能优化

所谓网站前端是指应用服务器(也就是 PHP 服务器)之前的部分,包括 DNS 服务、CDN 服务、反向代理服务、静态资源服务等。对 Wikipedia 而言,80% 以上的请求是词条查询,请求不会到达应用服务器,这就使得网站最复杂、最有挑战的应用服务端和存储端压力骤减。



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



而在反向代理 Squid 之前,则是被 Wikipedia 技术团队称为"圣杯"的 CDN 服务,CDN服务对于 Wikipedia 性能优化居功至伟。因为用户查询的词条大部分集中在比重很小的热点词条上,将这些词条内容页面缓存在 CDN 返回,响应速度非常快,这些请求甚至根本不会到达 Wikipedia 数据中心的 Squid 服务器,服务器压力减小,节省的资源可以更快地处理其他未被 CDN 缓存的请求。

Wikipedia 服务端性能优化

服务端主要是 PHP 服务器,这里是网站业务逻辑的核心部分,运行的模块都比较复杂笨重,需要消耗较多的资源,Wikipedia 将最好的服务器部署在这里(和数据库配置一样的服务器),从硬件上改善性能。

Wikipedia 后端性能优化

包括缓存、存储、数据库等被应用服务器依赖的服务都可以归类为后端服务。后端服务通常是一些有状态的服务,即需要提供数据存储服务,这些服务大多建立在网络通信和磁盘操作基础上,是性能的瓶颈,也是性能优化的重灾区。

后端优化最主要的手段是使用缓存,将热点数据缓存在分布式缓存系统的内存中,加速应用服务器的数据读操作速度,减轻存储和数据库服务器的负载。

总结

通过上面的分析,可以得出维基百科使用的主要技术和手段有动静分离、分布式缓存、分布式文件系统、负载均衡、反向代理来提供应用的高性能、高可用。

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

hellohuan

关注

活到老,学到老 2018.09.17 加入

从事互联网研发工作,对产品、运营充满兴趣,终身学习践行者

评论

发布
暂无评论
大型互联网应用系统都采用了哪些技术和手段,解决了什么问题?