欢迎光临散文网 会员登陆 & 注册

新浪研发平台主管联手打造!构建高性能Web站点宝典

2023-08-10 15:00 作者:印客学院官方  | 我要投稿

前言

在本书中我们不仅从其对性能影响的角度来深入探讨,同时还会适当地涉及开发、调试以及可扩展性。对于Web站点的可扩展性讨论已经屡见不鲜了,不论是代码层面的扩展,还是架构层面的扩展,涉及的内容非常多,究竟我们应该从何谈起呢?这是一个值得深思的问题。缺乏良好的可扩展性设计就像慢性自杀或者等待死亡,这甚至比Web 站点所能遇到的其他一切困难更让人头疼,因为扩展对于我们来说,就像在山穷水尽的时候被指引了一条星光大道,一旦扩展都无法进行,那真是死路一条。

有需要领取资料的可后台私信扣【666】免费领取

数据的网络传输

关于网络模型的阐述,许多参考书中都有涉及,普遍采用OSI七层网络模型或TCP 四层网络模型展开介绍,所以在这里我们不打算重复罗列这些内容,而是希望探讨网络模型中一些细节的本质和实现,尤其是数据传输比较低层的实现,包括分组交换、流量控制、数据转发等,以便对大家理解本书后续章节有所帮助。

服务器并发处理能力

人们总是希望少花钱多办事,同样的,一台Web服务器在单位时间内能处理的请求越多越好,这也成了Web服务器的能力高低所在,它体现了我们常说的“服务器并发处理能力”。值得一提的是,本章所说的服务器,主要指用于提供 HTTP 服务的服务器,但是本章中所涉及的一些关于操作系统和内核的内容,并不局限于Web服务器。

动态内容缓存

我们的目光曾经聚焦在Web服务器本身,改进I/O模型和并发策略带来的性能提升让我们激动不已,然而,我们的生活变幻万千,绝不像静态文件那样如此单调,Web站点更多的是提供动态内容,比如动态网页、动态图片,Web服务等,它们通常在 Web服务器端进行计算,生成HTML,并返回给用户。与此同时,它们在生成HTML的过程中,不可避免涉及了更多的CPU计算和I/O操作,这已经超出了Web服务器本身,比如访问数据库涉及数据库服务器的CPU计算和磁盘IO操作,以及与数据库服务器通信的网络LO操作,同样的情况也发生在调用Web API,比如通过 twitter API获取资料。

动态脚本加速

通过为动态内容的计算结果生成缓存,我们达到了一定的目的,那就是最大程度地跳过动态内容计算。然而,除非静态化访问,否则完全跳过动态内容的计算是不可能的,通过前面的介绍,我们知道加载缓存仍然需要动态脚本的运行,那么,为了提高动态内容的处理速度,我们还能做些什么呢?



浏览器缓存

Web 服务器缓存

前面我们讨论过了动态内容缓存和静态化,基本上都是通过动态程序自身来实现缓存机制,包括缓存持久化、过期检查、缓存更新等。是否可以让 Web 服务器自己实现缓存机制呢?的确,Web服务器是应该站出来做点什么了…··…-

反向代理缓存

在前面的章节中,我们曾经多次提到反向代理服务器,这一章我们就来看个究竟,幸运的是,有了前面对浏览器缓存和 Web服务器缓存的了解后,你将会很容易地熟悉反向代理以及它的缓存机制。

Web组件分离

分布式缓存

说到缓存,你已经非常熟悉了,我们前面曾经探讨了有关动态内容的各种缓存,但基本上都是基于页面缓存,或者整体缓存,比如缓存整个动态图片。无论如何,它们的目的都在于避免重复的慢速计算,比如数据库访问。但是在有些时候,使用页面缓存显得尤为笨重,这可能来自于以下几个原因:

一个网页中不同区域的内容,自身更新频率和呈现及时度要求各不相同,如果为了迁就频繁更新的区域,而使整个页面频繁重建缓存,则影响整体吞吐率。

即便是采用局部动态缓存,如果局部区域过多,则会使得页面结构过于复杂,而且整合各个局部页面也存在不小的开销。

有些计算是无法作为页面来缓存的,比如有些动态内容中需要获取用户的登录状态,并根据不同用户呈现不同的内容。

·这些页面缓存都只是提高了读数据的速度,并没有提高写数据的速度。


数据库性能优化

Web负载均衡

共享文件系统

内容分发和同步

分布式文件系统

数据库扩展

分布式计算

性能监控

有需要领取资料的可后台私信666免费领取


新浪研发平台主管联手打造!构建高性能Web站点宝典的评论 (共 条)

分享到微博请遵守国家法律